@nextcloud/vue 4.2.0 → 4.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/dist/Components/ActionCaption.js +1 -1
- package/dist/Components/ActionCaption.js.map +1 -1
- package/dist/Components/ActionCheckbox.js +1 -1
- package/dist/Components/ActionCheckbox.js.map +1 -1
- package/dist/Components/ActionInput.js +10 -10
- package/dist/Components/ActionInput.js.map +1 -1
- package/dist/Components/ActionRadio.js +1 -1
- package/dist/Components/ActionRadio.js.map +1 -1
- package/dist/Components/ActionSeparator.js +1 -1
- package/dist/Components/ActionSeparator.js.map +1 -1
- package/dist/Components/ActionText.js +1 -1
- package/dist/Components/ActionText.js.map +1 -1
- package/dist/Components/ActionTextEditable.js +1 -1
- package/dist/Components/ActionTextEditable.js.map +1 -1
- package/dist/Components/Actions.js +3 -3
- package/dist/Components/Actions.js.map +1 -1
- package/dist/Components/AppContent.js +1 -1
- package/dist/Components/AppContent.js.map +1 -1
- package/dist/Components/AppNavigation.js +3 -3
- package/dist/Components/AppNavigation.js.map +1 -1
- package/dist/Components/AppNavigationCaption.js +2 -2
- package/dist/Components/AppNavigationCaption.js.map +1 -1
- package/dist/Components/AppNavigationCounter.js +1 -1
- package/dist/Components/AppNavigationCounter.js.map +1 -1
- package/dist/Components/AppNavigationIconBullet.js +1 -1
- package/dist/Components/AppNavigationIconBullet.js.map +1 -1
- package/dist/Components/AppNavigationItem.js +3 -3
- package/dist/Components/AppNavigationItem.js.map +1 -1
- package/dist/Components/AppNavigationNew.js +1 -1
- package/dist/Components/AppNavigationNew.js.map +1 -1
- package/dist/Components/AppNavigationNewItem.js +2 -2
- package/dist/Components/AppNavigationNewItem.js.map +1 -1
- package/dist/Components/AppNavigationSettings.js +2 -2
- package/dist/Components/AppNavigationSettings.js.map +1 -1
- package/dist/Components/AppNavigationToggle.js +3 -3
- package/dist/Components/AppNavigationToggle.js.map +1 -1
- package/dist/Components/AppSettingsDialog.js +4 -4
- package/dist/Components/AppSettingsDialog.js.map +1 -1
- package/dist/Components/AppSettingsSection.js +1 -1
- package/dist/Components/AppSettingsSection.js.map +1 -1
- package/dist/Components/AppSidebar.js +4 -4
- package/dist/Components/AppSidebar.js.map +1 -1
- package/dist/Components/AppSidebarTab.js +1 -1
- package/dist/Components/AppSidebarTab.js.map +1 -1
- package/dist/Components/Avatar.js +4 -4
- package/dist/Components/Avatar.js.map +1 -1
- package/dist/Components/Breadcrumb.js +3 -3
- package/dist/Components/Breadcrumb.js.map +1 -1
- package/dist/Components/Breadcrumbs.js +5 -5
- package/dist/Components/Breadcrumbs.js.map +1 -1
- package/dist/Components/CheckboxRadioSwitch.js +2 -2
- package/dist/Components/CheckboxRadioSwitch.js.map +1 -1
- package/dist/Components/ColorPicker.js +2 -2
- package/dist/Components/ColorPicker.js.map +1 -1
- package/dist/Components/Content.js +1 -1
- package/dist/Components/Content.js.map +1 -1
- package/dist/Components/CounterBubble.js +1 -1
- package/dist/Components/CounterBubble.js.map +1 -1
- package/dist/Components/DatetimePicker.js +8 -8
- package/dist/Components/DatetimePicker.js.map +1 -1
- package/dist/Components/EmojiPicker.js +2 -2
- package/dist/Components/EmojiPicker.js.map +1 -1
- package/dist/Components/EmptyContent.js +2 -2
- package/dist/Components/EmptyContent.js.map +1 -1
- package/dist/Components/ListItem.js +4 -4
- package/dist/Components/ListItem.js.map +1 -1
- package/dist/Components/ListItemIcon.js +11 -11
- package/dist/Components/ListItemIcon.js.map +1 -1
- package/dist/Components/Modal.js +5 -5
- package/dist/Components/Modal.js.map +1 -1
- package/dist/Components/Multiselect.js +10 -10
- package/dist/Components/Multiselect.js.map +1 -1
- package/dist/Components/MultiselectTags.js +11 -11
- package/dist/Components/MultiselectTags.js.map +1 -1
- package/dist/Components/Popover.js +1 -1
- package/dist/Components/Popover.js.map +1 -1
- package/dist/Components/PopoverMenu.js +1 -1
- package/dist/Components/PopoverMenu.js.map +1 -1
- package/dist/Components/ProgressBar.js +1 -1
- package/dist/Components/ProgressBar.js.map +1 -1
- package/dist/Components/RichContenteditable.js +2 -2
- package/dist/Components/RichContenteditable.js.map +1 -1
- package/dist/Components/SettingsInputText.js +1 -1
- package/dist/Components/SettingsInputText.js.map +1 -1
- package/dist/Components/SettingsSection.js +1 -1
- package/dist/Components/SettingsSection.js.map +1 -1
- package/dist/Components/SettingsSelectGroup.js +10 -10
- package/dist/Components/SettingsSelectGroup.js.map +1 -1
- package/dist/Components/TimezonePicker.js +9 -9
- package/dist/Components/TimezonePicker.js.map +1 -1
- package/dist/Components/UserBubble.js +5 -5
- package/dist/Components/UserBubble.js.map +1 -1
- package/dist/Directives/Tooltip.js +2 -2
- package/dist/Directives/Tooltip.js.map +1 -1
- package/dist/Mixins/richEditor.js +1 -1
- package/dist/Mixins/richEditor.js.map +1 -1
- package/dist/ncvuecomponents.js +28 -28
- package/dist/ncvuecomponents.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack://NextcloudVue.[name]/webpack/universalModuleDefinition","webpack://NextcloudVue.[name]/webpack/bootstrap","webpack://NextcloudVue.[name]/./node_modules/css-loader/dist/runtime/cssWithMappingToString.js","webpack://NextcloudVue.[name]/./node_modules/css-loader/dist/runtime/api.js","webpack://NextcloudVue.[name]/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://NextcloudVue.[name]/./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack://NextcloudVue.[name]/./src/l10n.js","webpack://NextcloudVue.[name]/external \"v-tooltip\"","webpack://NextcloudVue.[name]/external \"vue\"","webpack://NextcloudVue.[name]/external \"@nextcloud/router\"","webpack://NextcloudVue.[name]/./node_modules/css-loader/dist/runtime/getUrl.js","webpack://NextcloudVue.[name]/./src/components/Popover/Popover.vue?463f","webpack://NextcloudVue.[name]/./src/directives/Tooltip/index.scss?afe8","webpack://NextcloudVue.[name]/./src/directives/Tooltip/index.js","webpack://NextcloudVue.[name]/external \"@nextcloud/l10n/dist/gettext\"","webpack://NextcloudVue.[name]/./src/directives/Tooltip/index.scss","webpack://NextcloudVue.[name]/./src/components/Popover/Popover.vue?e51b","webpack://NextcloudVue.[name]/./src/components/Popover/Popover.vue?01d2","webpack://NextcloudVue.[name]/src/components/Popover/Popover.vue","webpack://NextcloudVue.[name]/./src/components/Popover/Popover.vue?266e","webpack://NextcloudVue.[name]/./src/components/Popover/Popover.vue","webpack://NextcloudVue.[name]/external \"vue-material-design-icons/DotsHorizontal\"","webpack://NextcloudVue.[name]/external \"@nextcloud/event-bus\"","webpack://NextcloudVue.[name]/external \"@nextcloud/auth\"","webpack://NextcloudVue.[name]/./src/utils/IsMobileState.js","webpack://NextcloudVue.[name]/./src/mixins/isMobile/index.js","webpack://NextcloudVue.[name]/external \"@nextcloud/axios\"","webpack://NextcloudVue.[name]/./src/mixins/userStatus.js","webpack://NextcloudVue.[name]/external \"striptags\"","webpack://NextcloudVue.[name]/./src/components/RichContenteditable/MentionBubble.vue?6186","webpack://NextcloudVue.[name]/external \"v-click-outside\"","webpack://NextcloudVue.[name]/./src/utils/Linkify.js","webpack://NextcloudVue.[name]/external \"linkify-string\"","webpack://NextcloudVue.[name]/./src/components/PopoverMenu/PopoverMenuItem.vue?d151","webpack://NextcloudVue.[name]/./src/components/PopoverMenu/PopoverMenuItem.vue?d8f6","webpack://NextcloudVue.[name]/./src/components/PopoverMenu/PopoverMenu.vue?154d","webpack://NextcloudVue.[name]/./src/utils/FindRanges.js","webpack://NextcloudVue.[name]/./src/components/RichContenteditable/MentionBubble.vue?6825","webpack://NextcloudVue.[name]/src/components/RichContenteditable/MentionBubble.vue","webpack://NextcloudVue.[name]/./src/components/RichContenteditable/MentionBubble.vue?dd58","webpack://NextcloudVue.[name]/./src/components/RichContenteditable/MentionBubble.vue","webpack://NextcloudVue.[name]/./src/components/RichContenteditable/MentionBubble.vue?2857","webpack://NextcloudVue.[name]/./src/mixins/richEditor/index.js","webpack://NextcloudVue.[name]/src/components/Highlight/Highlight.vue","webpack://NextcloudVue.[name]/./src/components/Highlight/Highlight.vue?4290","webpack://NextcloudVue.[name]/./src/components/Highlight/Highlight.vue","webpack://NextcloudVue.[name]/./src/components/Highlight/index.js","webpack://NextcloudVue.[name]/./src/components/Avatar/Avatar.vue?5d61","webpack://NextcloudVue.[name]/external \"escape-html\"","webpack://NextcloudVue.[name]/./src/utils/GenColors.js","webpack://NextcloudVue.[name]/./src/mixins/excludeClickOutsideClasses/index.js","webpack://NextcloudVue.[name]/./src/mixins/isFullscreen/index.js","webpack://NextcloudVue.[name]/external \"@nextcloud/browser-storage\"","webpack://NextcloudVue.[name]/./src/assets/status-icons/user-status-online.svg","webpack://NextcloudVue.[name]/./src/assets/status-icons/user-status-dnd.svg","webpack://NextcloudVue.[name]/./src/assets/status-icons/user-status-away.svg","webpack://NextcloudVue.[name]/./src/components/PopoverMenu/PopoverMenu.vue?cfe3","webpack://NextcloudVue.[name]/./src/components/PopoverMenu/PopoverMenuItem.vue?63e6","webpack://NextcloudVue.[name]/src/components/PopoverMenu/PopoverMenuItem.vue","webpack://NextcloudVue.[name]/./src/components/PopoverMenu/PopoverMenuItem.vue?1b96","webpack://NextcloudVue.[name]/./src/components/PopoverMenu/PopoverMenuItem.vue?73d5","webpack://NextcloudVue.[name]/./src/components/PopoverMenu/PopoverMenu.vue?7e94","webpack://NextcloudVue.[name]/src/components/PopoverMenu/PopoverMenu.vue","webpack://NextcloudVue.[name]/./src/components/PopoverMenu/PopoverMenuItem.vue","webpack://NextcloudVue.[name]/./src/components/PopoverMenu/PopoverMenuItem.vue?fd73","webpack://NextcloudVue.[name]/./src/components/PopoverMenu/PopoverMenu.vue?5a99","webpack://NextcloudVue.[name]/./src/components/PopoverMenu/PopoverMenu.vue","webpack://NextcloudVue.[name]/./src/components/PopoverMenu/index.js","webpack://NextcloudVue.[name]/./src/components/Avatar/Avatar.vue?8bb9","webpack://NextcloudVue.[name]/src/components/Avatar/Avatar.vue","webpack://NextcloudVue.[name]/./src/components/Avatar/Avatar.vue?d51d","webpack://NextcloudVue.[name]/./src/components/Avatar/Avatar.vue?5b97","webpack://NextcloudVue.[name]/./src/components/Avatar/Avatar.vue","webpack://NextcloudVue.[name]/./src/components/Avatar/index.js","webpack://NextcloudVue.[name]/external \"md5\"","webpack://NextcloudVue.[name]/external \"@nextcloud/capabilities\"","webpack://NextcloudVue.[name]/./src/functions/usernameToColor/usernameToColor.js","webpack://NextcloudVue.[name]/./src/functions/usernameToColor/index.js","webpack://NextcloudVue.[name]/./src/components/ListItemIcon/ListItemIcon.vue?0eea","webpack://NextcloudVue.[name]/./src/components/ListItemIcon/ListItemIcon.vue?7dc8","webpack://NextcloudVue.[name]/./src/components/ListItemIcon/ListItemIcon.vue?5fd9","webpack://NextcloudVue.[name]/src/components/ListItemIcon/ListItemIcon.vue","webpack://NextcloudVue.[name]/./src/components/ListItemIcon/ListItemIcon.vue?6275","webpack://NextcloudVue.[name]/./src/components/ListItemIcon/ListItemIcon.vue","webpack://NextcloudVue.[name]/./src/components/ListItemIcon/index.js"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","_slicedToArray","arr","Array","isArray","_arrayWithHoles","_i","iterator","_s","_e","_arr","_n","_d","next","done","push","length","err","_iterableToArrayLimit","minLen","_arrayLikeToArray","toString","slice","constructor","from","test","_unsupportedIterableToArray","TypeError","_nonIterableRest","len","arr2","item","_item","content","cssMapping","btoa","base64","unescape","encodeURIComponent","JSON","stringify","data","concat","sourceMapping","sourceURLs","sources","map","source","sourceRoot","join","cssWithMappingToString","list","this","mediaQuery","dedupe","alreadyImportedModules","id","memo","isOldIE","Boolean","document","all","atob","getTarget","target","styleTarget","querySelector","HTMLIFrameElement","contentDocument","head","e","stylesInDom","getIndexByIdentifier","identifier","result","modulesToDom","options","idCountMap","identifiers","base","count","index","obj","css","media","sourceMap","references","updater","addStyle","insertStyleElement","style","createElement","attributes","nonce","nc","keys","forEach","setAttribute","insert","Error","appendChild","textStore","replaceText","replacement","filter","applyToSingletonTag","remove","styleSheet","cssText","cssNode","createTextNode","childNodes","removeChild","insertBefore","applyToTag","removeAttribute","firstChild","singleton","singletonCounter","update","styleIndex","parentNode","removeStyleElement","newObj","lastIdentifiers","newList","newLastIdentifiers","_index","splice","normalizeComponent","scriptExports","render","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","_compiled","functional","_scopeId","context","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","h","existing","beforeCreate","__webpack_exports__","_nextcloud_l10n_dist_gettext__WEBPACK_IMPORTED_MODULE_0__","gtBuilder","getGettextBuilder","detectLocale","TRANSLATIONS","lang","translations","pluralId","msgid","msgid_plural","msgstr","addTranslation","locale","","gt","build","ngettext","gettext","require","url","default","hash","needQuotes","replace","_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__","_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default","_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__","___CSS_LOADER_EXPORT___","_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default","a","version","names","mappings","sourcesContent","injectStylesIntoStyleTag_default","Tooltip","locals","VTooltip","defaultTemplate","SCOPE_VERSION","defaultHtml","defaultDelay","show","hide","Popover_Popovervue_type_script_lang_js_","components","VPopover","mounted","_this","$watch","$refs","popover","isOpen","val","$emit","Popovervue_type_style_index_0_lang_scss_","component","componentNormalizer","_vm","_h","$createElement","_self","_c","_g","_b","ref","attrs","popover-base-class","popover-wrapper-class","popover-arrow-class","popover-inner-class","scopedSlots","_u","fn","_t","proxy","$attrs","$listeners","Popovervue_type_custom_index_0_blockType_docs_default","IsMobileState","Vue","isMobile","watch","created","addEventListener","handleWindowResize","beforeDestroy","removeEventListener","methods","documentElement","clientWidth","$on","onIsMobileChanged","$off","userStatus","hasStatus","status","message","icon","fetchUserStatus","userId","regeneratorRuntime","mark","_callee","capabilities","_yield$axios$get","_data$ocs$data","_e$response$data$ocs","_e$response$data$ocs$","wrap","_context","prev","abrupt","getCapabilities","user_status","enabled","getCurrentUser","axios","generateOcsUrl","sent","ocs","t0","response","console","error","stop","linkify_string__WEBPACK_IMPORTED_MODULE_0__","linkify_string__WEBPACK_IMPORTED_MODULE_0___default","Linkify","text","linkifyStr","defaultProtocol","className","rel","FindRanges","search","ranges","currentIndex","toLowerCase","indexOf","start","end","RichContenteditable_MentionBubblevue_type_script_lang_js_","props","type","String","required","label","primary","computed","avatarUrl","getAvatarUrl","mentionText","user","size","router_","MentionBubblevue_type_style_index_0_id_724f9d58_lang_scss_scoped_true_","MentionBubble","staticClass","class","mention-bubble--primary","contenteditable","backgroundImage","_v","role","title","USERID_REGEX","RegExp","USERID_REGEX_WITH_SPACE","userData","renderContent","escapeHtml","split","part","flat","startsWith","genSelectTemplate","parseContent","stripTags","renderComponentHtml","propsData","Item","extend","wrapper","mount","display","body","$mount","renderedHtml","innerHTML","$destroy","Highlight_Highlightvue_type_script_lang_js_","highlight","range","reduce","validRanges","sort","b","mergedRanges","idx","Math","max","chunks","currentRange","substr","_objectSpread","chunk","Highlightvue_type_custom_index_0_blockType_docs_default","Highlight","_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__","_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default","_assets_status_icons_user_status_online_svg__WEBPACK_IMPORTED_MODULE_3__","_assets_status_icons_user_status_dnd_svg__WEBPACK_IMPORTED_MODULE_4__","_assets_status_icons_user_status_away_svg__WEBPACK_IMPORTED_MODULE_5__","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_REPLACEMENT_1___","___CSS_LOADER_URL_REPLACEMENT_2___","Color","g","mixPalette","steps","color1","color2","palette","step","ends","stepCalc","parseInt","GenColors","red","yellow","blue","palette1","palette2","palette3","excludeClickOutsideClasses","clickOutsideMiddleware","event","excludedClassList","hasNodeOrAnyParentClass","node","classArray","_step","_iterator","_createForOfIteratorHelper","_node$classList","classList","contains","f","parentElement","isFullscreen","_isFullscreen","beforeMount","_onResize","outerHeight","screen","height","PopoverMenu_PopoverMenuItemvue_type_script_lang_js_","href","validator","input","round","random","iconIsUrl","URL","_","action","PopoverMenuItemvue_type_style_index_0_id_2d3b91c8_scoped_true_lang_css_","PopoverMenuItemvue_type_style_index_1_id_2d3b91c8_lang_scss_scoped_true_options","PopoverMenuItemvue_type_style_index_1_id_2d3b91c8_lang_scss_scoped_true_","PopoverMenu_PopoverMenuvue_type_script_lang_js_","PopoverMenuItem","download","on","click","src","longtext","active","submit","$event","preventDefault","placeholder","domProps","directives","rawName","expression","checked","model","change","$$a","$$el","$$c","$$i","$set","_q","composing","for","stopPropagation","disabled","menu","PopoverMenuvue_type_style_index_0_id_4dae360a_lang_scss_scoped_true_options","PopoverMenuvue_type_style_index_0_id_4dae360a_lang_scss_scoped_true_","PopoverMenu_component","_l","PopoverMenuvue_type_custom_index_0_blockType_docs_default","PopoverMenu","browserStorage","browser_storage_","persist","getUserHasAvatar","flag","getItem","setUserHasAvatar","setItem","Avatar_Avatarvue_type_script_lang_js_","tooltip","ClickOutside","external_v_click_outside_","DotsHorizontal","DotsHorizontal_default","Popover","mixins","undefined","iconClass","showUserStatus","showUserStatusCompact","preloadedUserStatus","isGuest","displayName","Number","allowPlaceholder","disableTooltip","disableMenu","tooltipMessage","isNoUser","menuPosition","menuContainer","ariaLabel","avatarUrlLoaded","avatarSrcSetLoaded","userDoesNotExist","isAvatarLoaded","isMenuLoaded","contactsMenuLoading","contactsMenuActions","contactsMenuOpenState","avatarAriaLabel","l10n","canDisplayUserStatus","includes","showUserStatusIconOnAvatar","getUserIdentifier","isDisplayNameDefined","isUserDefined","isUrlDefined","hasMenu","_getCurrentUser","auth_","uid","shouldShowPlaceholder","avatarStyle","--size","lineHeight","fontSize","rgb","usernameToColor","backgroundColor","initials","fromCodePoint","codePointAt","toUpperCase","html","actions","hyperlink","loadAvatarUrl","event_bus_","handleUserStatusUpdated","beforeDestroyed","handlePopoverAfterShow","links","popoverMenu","$el","getElementsByTagName","focus","handlePopoverAfterHide","main","state","toggleMenu","_asyncToGenerator","fetchContactsMenu","closeMenu","_this2","_callee2","_yield$axios$post","_context2","axios_default","post","topAction","updateImageIfValid","avatarUrlGenerator","srcset","_getCurrentUser2","oc_userconfig","avatar","_this3","arguments","userHasAvatar","img","Image","onload","onerror","debug","Avatarvue_type_style_index_0_id_13c68150_scoped_true_lang_scss_","avatardiv--unknown","avatardiv--with-menu","tabindex","aria-label","keydown","_k","keyCode","alt","placement","container","open","after-show","after-hide","decorative","Avatarvue_type_custom_index_0_blockType_docs_default","Avatar","username","match","md5","maximum","finalInt","charAt","j","hashToInt","ListItemIcon_ListItemIconvue_type_script_lang_js_","subtitle","avatarSize","noMargin","margin","hasIcon","hasSlot","$slots","isValidSubtitle","_this$subtitle","_this$subtitle$trim","trim","isSizeBigEnough","cssVars","--height","--margin","ListItemIconvue_type_style_index_0_id_28d338d4_lang_scss_scoped_true_","disable-menu","disable-tooltip","display-name","is-no-user","ListItemIconvue_type_custom_index_0_blockType_docs_default","ListItemIcon"],"mappings":"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","file":"Components/ListItemIcon.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Components/ListItemIcon\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Components/ListItemIcon\"] = factory();\n\telse\n\t\troot[\"NextcloudVue\"] = root[\"NextcloudVue\"] || {}, root[\"NextcloudVue\"][\"Components/ListItemIcon\"] = factory();\n})(window, function() {\nreturn "," \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 = \"/dist/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 67);\n","\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { 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\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nmodule.exports = function cssWithMappingToString(item) {\n var _item = _slicedToArray(item, 4),\n content = _item[1],\n cssMapping = _item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (typeof btoa === \"function\") {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === \"string\") {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, \"\"]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};","\"use strict\";\n\nvar isOldIE = function isOldIE() {\n var memo;\n return function memorize() {\n if (typeof memo === 'undefined') {\n // Test for IE <= 9 as proposed by Browserhacks\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n // Tests for existence of standard globals is to allow style-loader\n // to operate correctly into non-standard environments\n // @see https://github.com/webpack-contrib/style-loader/issues/177\n memo = Boolean(window && document && document.all && !window.atob);\n }\n\n return memo;\n };\n}();\n\nvar getTarget = function getTarget() {\n var memo = {};\n return function memorize(target) {\n if (typeof memo[target] === 'undefined') {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDom.length; i++) {\n if (stylesInDom[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var index = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3]\n };\n\n if (index !== -1) {\n stylesInDom[index].references++;\n stylesInDom[index].updater(obj);\n } else {\n stylesInDom.push({\n identifier: identifier,\n updater: addStyle(obj, options),\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction insertStyleElement(options) {\n var style = document.createElement('style');\n var attributes = options.attributes || {};\n\n if (typeof attributes.nonce === 'undefined') {\n var nonce = typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n\n if (nonce) {\n attributes.nonce = nonce;\n }\n }\n\n Object.keys(attributes).forEach(function (key) {\n style.setAttribute(key, attributes[key]);\n });\n\n if (typeof options.insert === 'function') {\n options.insert(style);\n } else {\n var target = getTarget(options.insert || 'head');\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n }\n\n return style;\n}\n\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */\n\n\nvar replaceText = function replaceText() {\n var textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join('\\n');\n };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n /* istanbul ignore if */\n\n if (style.styleSheet) {\n style.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = style.childNodes;\n\n if (childNodes[index]) {\n style.removeChild(childNodes[index]);\n }\n\n if (childNodes.length) {\n style.insertBefore(cssNode, childNodes[index]);\n } else {\n style.appendChild(cssNode);\n }\n }\n}\n\nfunction applyToTag(style, options, obj) {\n var css = obj.css;\n var media = obj.media;\n var sourceMap = obj.sourceMap;\n\n if (media) {\n style.setAttribute('media', media);\n } else {\n style.removeAttribute('media');\n }\n\n if (sourceMap && typeof btoa !== 'undefined') {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while (style.firstChild) {\n style.removeChild(style.firstChild);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n var style;\n var update;\n var remove;\n\n if (options.singleton) {\n var styleIndex = singletonCounter++;\n style = singleton || (singleton = insertStyleElement(options));\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n } else {\n style = insertStyleElement(options);\n update = applyToTag.bind(null, style, options);\n\n remove = function remove() {\n removeStyleElement(style);\n };\n }\n\n update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n\n update(obj = newObj);\n } else {\n remove();\n }\n };\n}\n\nmodule.exports = function (list, options) {\n options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n // tags it will allow on a page\n\n if (!options.singleton && typeof options.singleton !== 'boolean') {\n options.singleton = isOldIE();\n }\n\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n if (Object.prototype.toString.call(newList) !== '[object Array]') {\n return;\n }\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDom[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDom[_index].references === 0) {\n stylesInDom[_index].updater();\n\n stylesInDom.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","import { getGettextBuilder } from '@nextcloud/l10n/dist/gettext'\n\nconst gtBuilder = getGettextBuilder()\n\t.detectLocale()\n\n// Decompress Translations to gettext format and add to gtBuilder\nTRANSLATIONS.forEach((lang) => {\n\tconst translations = {}\n\n\tfor (const key in lang.translations) {\n\t\t// Plural\n\t\tif (lang.translations[key].pluralId) {\n\t\t\ttranslations[key] = {\n\t\t\t\tmsgid: key,\n\t\t\t\tmsgid_plural: lang.translations[key].pluralId,\n\t\t\t\tmsgstr: lang.translations[key].msgstr,\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\t// Singular\n\t\ttranslations[key] = {\n\t\t\tmsgid: key,\n\t\t\tmsgstr: [\n\t\t\t\tlang.translations[key],\n\t\t\t],\n\t\t}\n\t}\n\n\tgtBuilder.addTranslation(lang.locale, {\n\t\ttranslations: {\n\t\t\t'': translations,\n\t\t},\n\t})\n})\n\nconst gt = gtBuilder.build()\n\nconst n = gt.ngettext.bind(gt)\nconst t = gt.gettext.bind(gt)\n\nexport { t, n }\n","module.exports = require(\"v-tooltip\");","module.exports = require(\"vue\");","module.exports = require(\"@nextcloud/router\");","\"use strict\";\n\nmodule.exports = function (url, options) {\n if (!options) {\n // eslint-disable-next-line no-param-reassign\n options = {};\n } // eslint-disable-next-line no-underscore-dangle, no-param-reassign\n\n\n url = url && url.__esModule ? url.default : url;\n\n if (typeof url !== \"string\") {\n return url;\n } // If url is already wrapped in quotes, remove them\n\n\n if (/^['\"].*['\"]$/.test(url)) {\n // eslint-disable-next-line no-param-reassign\n url = url.slice(1, -1);\n }\n\n if (options.hash) {\n // eslint-disable-next-line no-param-reassign\n url += options.hash;\n } // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n\n\n if (/[\"'() \\t\\n]/.test(url) || options.needQuotes) {\n return \"\\\"\".concat(url.replace(/\"/g, '\\\\\"').replace(/\\n/g, \"\\\\n\"), \"\\\"\");\n }\n\n return url;\n};","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.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, \".material-design-icon{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.popover{z-index:100000;display:block !important;filter:drop-shadow(0 1px 10px var(--color-box-shadow))}.popover__inner{padding:0;color:var(--color-main-text);border-radius:var(--border-radius);background:var(--color-main-background)}.popover__arrow{position:absolute;z-index:1;width:0;height:0;margin:10px;border-style:solid;border-color:var(--color-main-background)}.popover[x-placement^='top']{margin-bottom:10px}.popover[x-placement^='top'] .popover__arrow{bottom:-10px;left:calc(50% - $arrow-width);margin-top:0;margin-bottom:0;border-width:10px 10px 0 10px;border-right-color:transparent !important;border-bottom-color:transparent !important;border-left-color:transparent !important}.popover[x-placement^='bottom']{margin-top:10px}.popover[x-placement^='bottom'] .popover__arrow{top:-10px;left:calc(50% - $arrow-width);margin-top:0;margin-bottom:0;border-width:0 10px 10px 10px;border-top-color:transparent !important;border-right-color:transparent !important;border-left-color:transparent !important}.popover[x-placement^='right']{margin-left:10px}.popover[x-placement^='right'] .popover__arrow{top:calc(50% - $arrow-width);left:-10px;margin-right:0;margin-left:0;border-width:10px 10px 10px 0;border-top-color:transparent !important;border-bottom-color:transparent !important;border-left-color:transparent !important}.popover[x-placement^='left']{margin-right:10px}.popover[x-placement^='left'] .popover__arrow{top:calc(50% - $arrow-width);right:-10px;margin-right:0;margin-left:0;border-width:10px 0 10px 10px;border-top-color:transparent !important;border-right-color:transparent !important;border-bottom-color:transparent !important}.popover[aria-hidden='true']{visibility:hidden;transition:opacity var(--animation-quick),visibility var(--animation-quick);opacity:0}.popover[aria-hidden='false']{visibility:visible;transition:opacity var(--animation-quick);opacity:1}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../assets/material-icons.css\",\"webpack://./Popover.vue\"],\"names\":[],\"mappings\":\"AAGA,sBACC,YAAa,CACb,iBAAkB,CAClB,mBAAoB,CACpB,kBAAmB,CACnB,sBAAuB,CC0GxB,SACC,cAAe,CACf,wBAAyB,CAEzB,sDAAuD,CAEvD,gBACC,SAAU,CACV,4BAA6B,CAC7B,kCAAmC,CACnC,uCAAwC,CACxC,gBAGA,iBAAkB,CAClB,SAAU,CACV,OAAQ,CACR,QAAS,CACT,WApBgB,CAqBhB,kBAAmB,CACnB,yCAA0C,CApB5C,6BAwBE,kBA1BgB,CAElB,6CA2BG,YA7Be,CA8Bf,6BAA8B,CAC9B,YAAa,CACb,eAAgB,CAChB,6BAjCe,CAkCf,yCAA0C,CAC1C,0CAA2C,CAC3C,wCAAyC,CAlC5C,gCAuCE,eAzCgB,CAElB,gDA0CG,SA5Ce,CA6Cf,6BAA8B,CAC9B,YAAa,CACb,eAAgB,CAChB,6BAhDe,CAiDf,uCAAwC,CACxC,yCAA0C,CAC1C,wCAAyC,CAjD5C,+BAsDE,gBAxDgB,CAElB,+CAyDG,4BAA6B,CAC7B,UA5De,CA6Df,cAAe,CACf,aAAc,CACd,6BAAsD,CACtD,uCAAwC,CACxC,0CAA2C,CAC3C,wCAAyC,CAhE5C,8BAqEE,iBAvEgB,CAElB,8CAwEG,4BAA6B,CAC7B,WA3Ee,CA4Ef,cAAe,CACf,aAAc,CACd,6BA9Ee,CA+Ef,uCAAwC,CACxC,yCAA0C,CAC1C,0CAA2C,CA/E9C,6BAoFE,iBAAkB,CAClB,2EAA6E,CAC7E,SAAU,CAtFZ,8BA0FE,kBAAmB,CACnB,yCAA0C,CAC1C,SAAU\",\"sourcesContent\":[\"/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon {\\n\\tdisplay: flex;\\n\\talign-self: center;\\n\\tjustify-self: center;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\",\"$scope_version:\\\"16fd49f\\\"; @import 'variables'; @import 'material-icons';\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n$arrow-width: 10px;\\n\\n.popover {\\n\\tz-index: 100000;\\n\\tdisplay: block !important;\\n\\n\\tfilter: drop-shadow(0 1px 10px var(--color-box-shadow));\\n\\n\\t&__inner {\\n\\t\\tpadding: 0;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground: var(--color-main-background);\\n\\t}\\n\\n\\t&__arrow {\\n\\t\\tposition: absolute;\\n\\t\\tz-index: 1;\\n\\t\\twidth: 0;\\n\\t\\theight: 0;\\n\\t\\tmargin: $arrow-width;\\n\\t\\tborder-style: solid;\\n\\t\\tborder-color: var(--color-main-background);\\n\\t}\\n\\n\\t&[x-placement^='top'] {\\n\\t\\tmargin-bottom: $arrow-width;\\n\\n\\t\\t.popover__arrow {\\n\\t\\t\\tbottom: -$arrow-width;\\n\\t\\t\\tleft: calc(50% - $arrow-width);\\n\\t\\t\\tmargin-top: 0;\\n\\t\\t\\tmargin-bottom: 0;\\n\\t\\t\\tborder-width: $arrow-width $arrow-width 0 $arrow-width;\\n\\t\\t\\tborder-right-color: transparent !important;\\n\\t\\t\\tborder-bottom-color: transparent !important;\\n\\t\\t\\tborder-left-color: transparent !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&[x-placement^='bottom'] {\\n\\t\\tmargin-top: $arrow-width;\\n\\n\\t\\t.popover__arrow {\\n\\t\\t\\ttop: -$arrow-width;\\n\\t\\t\\tleft: calc(50% - $arrow-width);\\n\\t\\t\\tmargin-top: 0;\\n\\t\\t\\tmargin-bottom: 0;\\n\\t\\t\\tborder-width: 0 $arrow-width $arrow-width $arrow-width;\\n\\t\\t\\tborder-top-color: transparent !important;\\n\\t\\t\\tborder-right-color: transparent !important;\\n\\t\\t\\tborder-left-color: transparent !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&[x-placement^='right'] {\\n\\t\\tmargin-left: $arrow-width;\\n\\n\\t\\t.popover__arrow {\\n\\t\\t\\ttop: calc(50% - $arrow-width);\\n\\t\\t\\tleft: -$arrow-width;\\n\\t\\t\\tmargin-right: 0;\\n\\t\\t\\tmargin-left: 0;\\n\\t\\t\\tborder-width: $arrow-width $arrow-width $arrow-width 0;\\n\\t\\t\\tborder-top-color: transparent !important;\\n\\t\\t\\tborder-bottom-color: transparent !important;\\n\\t\\t\\tborder-left-color: transparent !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&[x-placement^='left'] {\\n\\t\\tmargin-right: $arrow-width;\\n\\n\\t\\t.popover__arrow {\\n\\t\\t\\ttop: calc(50% - $arrow-width);\\n\\t\\t\\tright: -$arrow-width;\\n\\t\\t\\tmargin-right: 0;\\n\\t\\t\\tmargin-left: 0;\\n\\t\\t\\tborder-width: $arrow-width 0 $arrow-width $arrow-width;\\n\\t\\t\\tborder-top-color: transparent !important;\\n\\t\\t\\tborder-right-color: transparent !important;\\n\\t\\t\\tborder-bottom-color: transparent !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&[aria-hidden='true'] {\\n\\t\\tvisibility: hidden;\\n\\t\\ttransition: opacity var(--animation-quick), visibility var(--animation-quick);\\n\\t\\topacity: 0;\\n\\t}\\n\\n\\t&[aria-hidden='false'] {\\n\\t\\tvisibility: visible;\\n\\t\\ttransition: opacity var(--animation-quick);\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!./index.scss\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { VTooltip } from 'v-tooltip'\nimport './index.scss'\n\n// force scope the tooltip and use .vue-tooltip\n// instead of .tooltip to avoid server compatibility\n// issues and the use of !important\nVTooltip.options.defaultTemplate = `<div class=\"vue-tooltip\" role=\"tooltip\" data-v-${SCOPE_VERSION}><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>`\nVTooltip.options.defaultHtml = false\nVTooltip.options.defaultDelay = { show: 500, hide: 200 }\n\nexport default VTooltip\n","module.exports = require(\"@nextcloud/l10n/dist/gettext\");","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.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, \".material-design-icon{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.vue-tooltip[data-v-16fd49f]{position:absolute;z-index:100000;right:auto;left:auto;display:block;margin:0;margin-top:-3px;padding:10px 0;text-align:left;text-align:start;opacity:0;line-height:1.6;line-break:auto;filter:drop-shadow(0 1px 10px var(--color-box-shadow))}.vue-tooltip[data-v-16fd49f][x-placement^='top'] .tooltip-arrow{bottom:0;margin-top:0;margin-bottom:0;border-width:10px 10px 0 10px;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent}.vue-tooltip[data-v-16fd49f][x-placement^='bottom'] .tooltip-arrow{top:0;margin-top:0;margin-bottom:0;border-width:0 10px 10px 10px;border-top-color:transparent;border-right-color:transparent;border-left-color:transparent}.vue-tooltip[data-v-16fd49f][x-placement^='right'] .tooltip-arrow{right:100%;margin-right:0;margin-left:0;border-width:10px 10px 10px 0;border-top-color:transparent;border-bottom-color:transparent;border-left-color:transparent}.vue-tooltip[data-v-16fd49f][x-placement^='left'] .tooltip-arrow{left:100%;margin-right:0;margin-left:0;border-width:10px 0 10px 10px;border-top-color:transparent;border-right-color:transparent;border-bottom-color:transparent}.vue-tooltip[data-v-16fd49f][aria-hidden='true']{visibility:hidden;transition:opacity .15s, visibility .15s;opacity:0}.vue-tooltip[data-v-16fd49f][aria-hidden='false']{visibility:visible;transition:opacity .15s;opacity:1}.vue-tooltip[data-v-16fd49f] .tooltip-inner{max-width:350px;padding:5px 8px;text-align:center;color:var(--color-main-text);border-radius:var(--border-radius);background-color:var(--color-main-background)}.vue-tooltip[data-v-16fd49f] .tooltip-arrow{position:absolute;z-index:1;width:0;height:0;margin:0;border-style:solid;border-color:var(--color-main-background)}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../assets/material-icons.css\",\"webpack://./index.scss\"],\"names\":[],\"mappings\":\"AAGA,sBACC,YAAa,CACb,iBAAkB,CAClB,mBAAoB,CACpB,kBAAmB,CACnB,sBAAuB,CCOxB,6BACC,iBAAkB,CAClB,cAAe,CACf,UAAW,CACX,SAAU,CACV,aAAc,CACd,QAAS,CAET,eAAgB,CAChB,cAAe,CACf,eAAgB,CAChB,gBAAiB,CACjB,SAAU,CACV,eAAgB,CAEhB,eAAgB,CAChB,sDAAuD,CAhBxD,gEAqBG,QAAS,CACT,YAAa,CACb,eAAgB,CAChB,6BA1Be,CA2Bf,8BAA+B,CAC/B,+BAAgC,CAChC,6BAA8B,CA3BjC,mEAkCG,KAAM,CACN,YAAa,CACb,eAAgB,CAChB,6BAvCe,CAwCf,4BAA6B,CAC7B,8BAA+B,CAC/B,6BAA8B,CAxCjC,kEA+CG,UAAW,CACX,cAAe,CACf,aAAc,CACd,6BAAsD,CACtD,4BAA6B,CAC7B,+BAAgC,CAChC,6BAA8B,CArDjC,iEA4DG,SAAU,CACV,cAAe,CACf,aAAc,CACd,6BAjEe,CAkEf,4BAA6B,CAC7B,8BAA+B,CAC/B,+BAAgC,CAlEnC,iDAwEE,iBAAkB,CAClB,wCAAyC,CACzC,SAAU,CA1EZ,kDA6EE,kBAAmB,CACnB,uBAAwB,CACxB,SAAU,CA/EZ,4CAoFE,eAAgB,CAChB,eAAgB,CAChB,iBAAkB,CAClB,4BAA6B,CAC7B,kCAAmC,CACnC,6CAA8C,CAzFhD,4CA8FE,iBAAkB,CAClB,SAAU,CACV,OAAQ,CACR,QAAS,CACT,QAAS,CACT,kBAAmB,CACnB,yCAA0C\",\"sourcesContent\":[\"/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon {\\n\\tdisplay: flex;\\n\\talign-self: center;\\n\\tjustify-self: center;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\",\"$scope_version:\\\"16fd49f\\\"; @import 'variables'; @import 'material-icons';\\n/**\\n* @copyright Copyright (c) 2016, John Molakvoæ <skjnldsv@protonmail.com>\\n* @copyright Copyright (c) 2016, Robin Appelman <robin@icewind.nl>\\n* @copyright Copyright (c) 2016, Jan-Christoph Borchardt <hey@jancborchardt.net>\\n* @copyright Copyright (c) 2016, Erik Pellikka <erik@pellikka.org>\\n* @copyright Copyright (c) 2015, Vincent Petry <pvince81@owncloud.com>\\n*\\n* Bootstrap v3.3.5 (http://getbootstrap.com)\\n* Copyright 2011-2015 Twitter, Inc.\\n* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\\n*/\\n\\n$arrow-width: 10px;\\n\\n.vue-tooltip[data-v-#{$scope_version}] {\\n\\tposition: absolute;\\n\\tz-index: 100000;\\n\\tright: auto;\\n\\tleft: auto;\\n\\tdisplay: block;\\n\\tmargin: 0;\\n\\t/* default to top */\\n\\tmargin-top: -3px;\\n\\tpadding: 10px 0;\\n\\ttext-align: left;\\n\\ttext-align: start;\\n\\topacity: 0;\\n\\tline-height: 1.6;\\n\\n\\tline-break: auto;\\n\\tfilter: drop-shadow(0 1px 10px var(--color-box-shadow));\\n\\n\\t// TOP\\n\\t&[x-placement^='top'] {\\n\\t\\t.tooltip-arrow {\\n\\t\\t\\tbottom: 0;\\n\\t\\t\\tmargin-top: 0;\\n\\t\\t\\tmargin-bottom: 0;\\n\\t\\t\\tborder-width: $arrow-width $arrow-width 0 $arrow-width;\\n\\t\\t\\tborder-right-color: transparent;\\n\\t\\t\\tborder-bottom-color: transparent;\\n\\t\\t\\tborder-left-color: transparent;\\n\\t\\t}\\n\\t}\\n\\n\\t// BOTTOM\\n\\t&[x-placement^='bottom'] {\\n\\t\\t.tooltip-arrow {\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tmargin-top: 0;\\n\\t\\t\\tmargin-bottom: 0;\\n\\t\\t\\tborder-width: 0 $arrow-width $arrow-width $arrow-width;\\n\\t\\t\\tborder-top-color: transparent;\\n\\t\\t\\tborder-right-color: transparent;\\n\\t\\t\\tborder-left-color: transparent;\\n\\t\\t}\\n\\t}\\n\\n\\t// RIGHT\\n\\t&[x-placement^='right'] {\\n\\t\\t.tooltip-arrow {\\n\\t\\t\\tright: 100%;\\n\\t\\t\\tmargin-right: 0;\\n\\t\\t\\tmargin-left: 0;\\n\\t\\t\\tborder-width: $arrow-width $arrow-width $arrow-width 0;\\n\\t\\t\\tborder-top-color: transparent;\\n\\t\\t\\tborder-bottom-color: transparent;\\n\\t\\t\\tborder-left-color: transparent;\\n\\t\\t}\\n\\t}\\n\\n\\t// LEFT\\n\\t&[x-placement^='left'] {\\n\\t\\t.tooltip-arrow {\\n\\t\\t\\tleft: 100%;\\n\\t\\t\\tmargin-right: 0;\\n\\t\\t\\tmargin-left: 0;\\n\\t\\t\\tborder-width: $arrow-width 0 $arrow-width $arrow-width;\\n\\t\\t\\tborder-top-color: transparent;\\n\\t\\t\\tborder-right-color: transparent;\\n\\t\\t\\tborder-bottom-color: transparent;\\n\\t\\t}\\n\\t}\\n\\n\\t// HIDDEN / SHOWN\\n\\t&[aria-hidden='true'] {\\n\\t\\tvisibility: hidden;\\n\\t\\ttransition: opacity .15s, visibility .15s;\\n\\t\\topacity: 0;\\n\\t}\\n\\t&[aria-hidden='false'] {\\n\\t\\tvisibility: visible;\\n\\t\\ttransition: opacity .15s;\\n\\t\\topacity: 1;\\n\\t}\\n\\n\\t// CONTENT\\n\\t.tooltip-inner {\\n\\t\\tmax-width: 350px;\\n\\t\\tpadding: 5px 8px;\\n\\t\\ttext-align: center;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t}\\n\\n\\t// ARROW\\n\\t.tooltip-arrow {\\n\\t\\tposition: absolute;\\n\\t\\tz-index: 1;\\n\\t\\twidth: 0;\\n\\t\\theight: 0;\\n\\t\\tmargin: 0;\\n\\t\\tborder-style: solid;\\n\\t\\tborder-color: var(--color-main-background);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('VPopover',_vm._g(_vm._b({ref:\"popover\",attrs:{\"popover-base-class\":\"popover\",\"popover-wrapper-class\":\"popover__wrapper\",\"popover-arrow-class\":\"popover__arrow\",\"popover-inner-class\":\"popover__inner\"},scopedSlots:_vm._u([{key:\"popover\",fn:function(){return [_vm._t(\"default\")]},proxy:true}],null,true)},'VPopover',_vm.$attrs,false),_vm.$listeners),[_vm._t(\"trigger\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Popover.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!./Popover.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 Marco Ambrosini <marcoambrosini@pm.me>\n -\n - @author Marco Ambrosini <marcoambrosini@pm.me>\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<docs>\n\n### General description\n\nThis component is just a wrapper for the v-component plugin by Akryum,\nplease refer to this documentation for customization:\nhttps://github.com/Akryum/v-tooltip\n\nThis components has two slots:\n* 'trigger' which can be any html element and it will trigger the popover\nthis slot is optional since you can toggle the popover also by updating the\nopen prop on this component;\n\n* a default slot that is for the content of the popover.\n\n### Examples\n\nWith a `<button>` as a trigger:\n```vue\n<template>\n\t<Popover>\n\t\t<template #trigger>\n\t\t\t<button> I am the trigger </button>\n\t\t</template>\n\t\t<template>\n\t\t<h2>this is some content</h2>\n\t\t</template>\n\t</Popover>\n</template>\n```\n</docs>\n\n<template>\n\t<VPopover\n\t\tref=\"popover\"\n\t\tv-bind=\"$attrs\"\n\t\tpopover-base-class=\"popover\"\n\t\tpopover-wrapper-class=\"popover__wrapper\"\n\t\tpopover-arrow-class=\"popover__arrow\"\n\t\tpopover-inner-class=\"popover__inner\"\n\t\tv-on=\"$listeners\">\n\t\t<!-- This will be the popover target (for the events and position) -->\n\t\t<slot name=\"trigger\" />\n\t\t<!-- This will be the content of the popover -->\n\t\t<template #popover>\n\t\t\t<slot />\n\t\t</template>\n\t</VPopover>\n</template>\n\n<script>\nimport { VPopover } from 'v-tooltip'\n\nexport default {\n\tname: 'Popover',\n\tcomponents: {\n\t\tVPopover,\n\t},\n\n\tmounted() {\n\t\tthis.$watch(\n\t\t\t() => {\n\t\t\t\t// required because v-tooltip doesn't provide events\n\t\t\t\t// and @show is too early\n\t\t\t\t// see https://github.com/Akryum/v-tooltip/issues/661\n\t\t\t\treturn this.$refs.popover.isOpen\n\t\t\t},\n\t\t\t(val) => {\n\t\t\t\tif (val) {\n\t\t\t\t\t/**\n\t\t\t\t\t * Triggered after the tooltip was visually displayed.\n\t\t\t\t\t *\n\t\t\t\t\t * This is different from the 'show' and 'apply-show' which\n\t\t\t\t\t * run earlier than this where there is no guarantee that the\n\t\t\t\t\t * tooltip is already visible and in the DOM.\n\t\t\t\t\t */\n\t\t\t\t\tthis.$emit('after-show')\n\t\t\t\t} else {\n\t\t\t\t\t/**\n\t\t\t\t\t * Triggered after the tooltip was visually hidden.\n\t\t\t\t\t */\n\t\t\t\t\tthis.$emit('after-hide')\n\t\t\t\t}\n\t\t\t}\n\t\t)\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n$arrow-width: 10px;\n\n.popover {\n\tz-index: 100000;\n\tdisplay: block !important;\n\n\tfilter: drop-shadow(0 1px 10px var(--color-box-shadow));\n\n\t&__inner {\n\t\tpadding: 0;\n\t\tcolor: var(--color-main-text);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground: var(--color-main-background);\n\t}\n\n\t&__arrow {\n\t\tposition: absolute;\n\t\tz-index: 1;\n\t\twidth: 0;\n\t\theight: 0;\n\t\tmargin: $arrow-width;\n\t\tborder-style: solid;\n\t\tborder-color: var(--color-main-background);\n\t}\n\n\t&[x-placement^='top'] {\n\t\tmargin-bottom: $arrow-width;\n\n\t\t.popover__arrow {\n\t\t\tbottom: -$arrow-width;\n\t\t\tleft: calc(50% - $arrow-width);\n\t\t\tmargin-top: 0;\n\t\t\tmargin-bottom: 0;\n\t\t\tborder-width: $arrow-width $arrow-width 0 $arrow-width;\n\t\t\tborder-right-color: transparent !important;\n\t\t\tborder-bottom-color: transparent !important;\n\t\t\tborder-left-color: transparent !important;\n\t\t}\n\t}\n\n\t&[x-placement^='bottom'] {\n\t\tmargin-top: $arrow-width;\n\n\t\t.popover__arrow {\n\t\t\ttop: -$arrow-width;\n\t\t\tleft: calc(50% - $arrow-width);\n\t\t\tmargin-top: 0;\n\t\t\tmargin-bottom: 0;\n\t\t\tborder-width: 0 $arrow-width $arrow-width $arrow-width;\n\t\t\tborder-top-color: transparent !important;\n\t\t\tborder-right-color: transparent !important;\n\t\t\tborder-left-color: transparent !important;\n\t\t}\n\t}\n\n\t&[x-placement^='right'] {\n\t\tmargin-left: $arrow-width;\n\n\t\t.popover__arrow {\n\t\t\ttop: calc(50% - $arrow-width);\n\t\t\tleft: -$arrow-width;\n\t\t\tmargin-right: 0;\n\t\t\tmargin-left: 0;\n\t\t\tborder-width: $arrow-width $arrow-width $arrow-width 0;\n\t\t\tborder-top-color: transparent !important;\n\t\t\tborder-bottom-color: transparent !important;\n\t\t\tborder-left-color: transparent !important;\n\t\t}\n\t}\n\n\t&[x-placement^='left'] {\n\t\tmargin-right: $arrow-width;\n\n\t\t.popover__arrow {\n\t\t\ttop: calc(50% - $arrow-width);\n\t\t\tright: -$arrow-width;\n\t\t\tmargin-right: 0;\n\t\t\tmargin-left: 0;\n\t\t\tborder-width: $arrow-width 0 $arrow-width $arrow-width;\n\t\t\tborder-top-color: transparent !important;\n\t\t\tborder-right-color: transparent !important;\n\t\t\tborder-bottom-color: transparent !important;\n\t\t}\n\t}\n\n\t&[aria-hidden='true'] {\n\t\tvisibility: hidden;\n\t\ttransition: opacity var(--animation-quick), visibility var(--animation-quick);\n\t\topacity: 0;\n\t}\n\n\t&[aria-hidden='false'] {\n\t\tvisibility: visible;\n\t\ttransition: opacity var(--animation-quick);\n\t\topacity: 1;\n\t}\n}\n\n</style>\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Popover.vue?vue&type=style&index=0&lang=scss&\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import { render, staticRenderFns } from \"./Popover.vue?vue&type=template&id=140d98c2&\"\nimport script from \"./Popover.vue?vue&type=script&lang=js&\"\nexport * from \"./Popover.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Popover.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./Popover.vue?vue&type=custom&index=0&blockType=docs\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","module.exports = require(\"vue-material-design-icons/DotsHorizontal\");","module.exports = require(\"@nextcloud/event-bus\");","module.exports = require(\"@nextcloud/auth\");","/**\n * @copyright Copyright (c) 2019 Kristof Hamann, Paul Schwörer\n *\n * @author Kristof Hamann\n * @author Paul Schwörer\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\nimport Vue from 'vue'\n\nexport const IsMobileState = new Vue({\n\tdata() {\n\t\treturn {\n\t\t\tisMobile: false,\n\t\t}\n\t},\n\twatch: {\n\t\tisMobile(val) {\n\t\t\tthis.$emit('changed', val)\n\t\t},\n\t},\n\tcreated() {\n\t\twindow.addEventListener('resize', this.handleWindowResize)\n\t\tthis.handleWindowResize()\n\t},\n\tbeforeDestroy() {\n\t\twindow.removeEventListener('resize', this.handleWindowResize)\n\t},\n\tmethods: {\n\t\thandleWindowResize() {\n\t\t\tthis.isMobile = document.documentElement.clientWidth < 1024\n\t\t},\n\t},\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\nimport { IsMobileState } from '../../utils/IsMobileState'\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tisMobile: false,\n\t\t}\n\t},\n\tmounted() {\n\t\tIsMobileState.$on('changed', this.onIsMobileChanged)\n\t\tthis.isMobile = IsMobileState.isMobile\n\t},\n\tbeforeDestroy() {\n\t\tIsMobileState.$off('changed', this.onIsMobileChanged)\n\t},\n\tmethods: {\n\t\tonIsMobileChanged(val) {\n\t\t\tthis.isMobile = val\n\t\t},\n\t},\n}\n","module.exports = require(\"@nextcloud/axios\");","/**\n * @copyright Copyright (c) 2020 Georg Ehrke <georg-nextcloud@ehrke.email>\n *\n * @author Georg Ehrke <georg-nextcloud@ehrke.email>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { getCapabilities } from '@nextcloud/capabilities'\nimport { getCurrentUser } from '@nextcloud/auth'\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\thasStatus: false,\n\t\t\tuserStatus: {\n\t\t\t\tstatus: null,\n\t\t\t\tmessage: null,\n\t\t\t\ticon: null,\n\t\t\t},\n\t\t}\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Fetches the user-status from the server\n\t\t * @param {String} userId UserId of the user to fetch the status for\n\t\t *\n\t\t * @returns {Promise<void>}\n\t\t */\n\t\tasync fetchUserStatus(userId) {\n\t\t\tif (!userId) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst capabilities = getCapabilities()\n\t\t\tif (!Object.prototype.hasOwnProperty.call(capabilities, 'user_status') || !capabilities.user_status.enabled) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// User status endpoint is not available for guests.\n\t\t\tif (!getCurrentUser()) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst { data } = await axios.get(generateOcsUrl('apps/user_status/api/v1/statuses/{userId}', { userId }))\n\t\t\t\tconst {\n\t\t\t\t\tstatus,\n\t\t\t\t\tmessage,\n\t\t\t\t\ticon,\n\t\t\t\t} = data.ocs.data\n\t\t\t\tthis.userStatus.status = status\n\t\t\t\tthis.userStatus.message = message || ''\n\t\t\t\tthis.userStatus.icon = icon || ''\n\t\t\t\tthis.hasStatus = true\n\t\t\t} catch (e) {\n\t\t\t\tif (e.response.status === 404 && e.response.data.ocs?.data?.length === 0) {\n\t\t\t\t\t// User just has no status set, so don't log it\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tconsole.error(e)\n\t\t\t}\n\t\t},\n\t},\n}\n","module.exports = require(\"striptags\");","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.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, \".material-design-icon[data-v-724f9d58]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.mention-bubble--primary .mention-bubble__content[data-v-724f9d58]{color:var(--color-primary-text);background-color:var(--color-primary-element)}.mention-bubble__wrapper[data-v-724f9d58]{max-width:150px;height:18px;vertical-align:text-bottom;display:inline-flex;align-items:center}.mention-bubble__content[data-v-724f9d58]{display:inline-flex;overflow:hidden;align-items:center;max-width:100%;height:20px;-webkit-user-select:none;user-select:none;padding-right:6px;padding-left:2px;border-radius:10px;background-color:var(--color-background-dark)}.mention-bubble__icon[data-v-724f9d58]{position:relative;width:16px;height:16px;border-radius:8px;background-color:var(--color-background-darker);background-repeat:no-repeat;background-position:center;background-size:12px}.mention-bubble__icon--with-avatar[data-v-724f9d58]{color:inherit;background-size:cover}.mention-bubble__title[data-v-724f9d58]{overflow:hidden;margin-left:2px;white-space:nowrap;text-overflow:ellipsis}.mention-bubble__title[data-v-724f9d58]::before{content:attr(title)}.mention-bubble__select[data-v-724f9d58]{position:absolute;z-index:-1;left:-1000px}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../assets/material-icons.css\",\"webpack://./MentionBubble.vue\"],\"names\":[],\"mappings\":\"AAGA,uCACC,YAAa,CACb,iBAAkB,CAClB,mBAAoB,CACpB,kBAAmB,CACnB,sBAAuB,CC8FvB,mEACC,+BAAgC,CAChC,6CAA8C,CAC9C,0CAGA,eAXsB,CAatB,WAAwC,CACxC,0BAA2B,CAC3B,mBAAoB,CACpB,kBAAmB,CACnB,0CAGA,mBAAoB,CACpB,eAAgB,CAChB,kBAAmB,CACnB,cAAe,CACf,WAzBkB,CA0BlB,wBAAyB,CACzB,gBAAiB,CACjB,iBAAkC,CAClC,gBA3BkB,CA4BlB,kBAAiC,CACjC,6CAA8C,CAC9C,uCAGA,iBAAkB,CAClB,UAjCuD,CAkCvD,WAlCuD,CAmCvD,iBAAsC,CACtC,+CAAgD,CAChD,2BAA4B,CAC5B,0BAA2B,CAC3B,oBAA0D,CAE1D,oDACC,aAAc,CACd,qBAAsB,CACtB,wCAID,eAAgB,CAChB,eAlDkB,CAmDlB,kBAAmB,CACnB,sBAAuB,CAJvB,gDAOC,mBAAoB,CACpB,yCAKD,iBAAkB,CAClB,UAAW,CACX,YAAa\",\"sourcesContent\":[\"/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon {\\n\\tdisplay: flex;\\n\\talign-self: center;\\n\\tjustify-self: center;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\",\"$scope_version:\\\"16fd49f\\\"; @import 'variables'; @import 'material-icons';\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n$bubble-height: 20px;\\n$bubble-max-width: 150px;\\n$bubble-padding: 2px;\\n$bubble-avatar-size: $bubble-height - 2 * $bubble-padding;\\n\\n.mention-bubble {\\n\\t&--primary &__content {\\n\\t\\tcolor: var(--color-primary-text);\\n\\t\\tbackground-color: var(--color-primary-element);\\n\\t}\\n\\n\\t&__wrapper {\\n\\t\\tmax-width: $bubble-max-width;\\n\\t\\t// Align with text\\n\\t\\theight: $bubble-height - $bubble-padding;\\n\\t\\tvertical-align: text-bottom;\\n\\t\\tdisplay: inline-flex;\\n\\t\\talign-items: center;\\n\\t}\\n\\n\\t&__content {\\n\\t\\tdisplay: inline-flex;\\n\\t\\toverflow: hidden;\\n\\t\\talign-items: center;\\n\\t\\tmax-width: 100%;\\n\\t\\theight: $bubble-height ;\\n\\t\\t-webkit-user-select: none;\\n\\t\\tuser-select: none;\\n\\t\\tpadding-right: $bubble-padding * 3;\\n\\t\\tpadding-left: $bubble-padding;\\n\\t\\tborder-radius: $bubble-height / 2;\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t}\\n\\n\\t&__icon {\\n\\t\\tposition: relative;\\n\\t\\twidth: $bubble-avatar-size;\\n\\t\\theight: $bubble-avatar-size;\\n\\t\\tborder-radius: $bubble-avatar-size / 2;\\n\\t\\tbackground-color: var(--color-background-darker);\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\tbackground-position: center;\\n\\t\\tbackground-size: $bubble-avatar-size - 2 * $bubble-padding;\\n\\n\\t\\t&--with-avatar {\\n\\t\\t\\tcolor: inherit;\\n\\t\\t\\tbackground-size: cover;\\n\\t\\t}\\n\\t}\\n\\n\\t&__title {\\n\\t\\toverflow: hidden;\\n\\t\\tmargin-left: $bubble-padding;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\t// Put label in ::before so it is not selectable\\n\\t\\t&::before {\\n\\t\\t\\tcontent: attr(title);\\n\\t\\t}\\n\\t}\\n\\n\\t// Hide the mention id so it is selectable\\n\\t&__select {\\n\\t\\tposition: absolute;\\n\\t\\tz-index: -1;\\n\\t\\tleft: -1000px;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = require(\"v-click-outside\");","/**\n * @copyright Copyright (c) 2021 Raimund Schlüßler <raimund.schluessler@mailbox.org>\n *\n * @author Raimund Schlüßler <raimund.schluessler@mailbox.org>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport linkifyStr from 'linkify-string'\n\n/**\n * Linkify text\n *\n * @param {string} text The text to linkify\n * @returns {string} The linkified string\n */\nconst Linkify = (text) => {\n\treturn linkifyStr(text, {\n\t\tdefaultProtocol: 'https',\n\t\ttarget: '_blank',\n\t\tclassName: 'external linkified',\n\t\tattributes: {\n\t\t\trel: 'nofollow noopener noreferrer',\n\t\t},\n\t})\n}\n\nexport default Linkify\n","module.exports = require(\"linkify-string\");","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.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, \"\\nbutton.menuitem[data-v-2d3b91c8] {\\n\\ttext-align: left;\\n}\\nbutton.menuitem *[data-v-2d3b91c8] {\\n\\tcursor: pointer;\\n}\\nbutton.menuitem[data-v-2d3b91c8]:disabled {\\n\\topacity: 0.5 !important;\\n\\tcursor: default;\\n}\\nbutton.menuitem:disabled *[data-v-2d3b91c8] {\\n\\tcursor: default;\\n}\\n.menuitem.active[data-v-2d3b91c8] {\\n\\tbox-shadow: inset 2px 0 var(--color-primary);\\n\\tborder-radius: 0;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/PopoverMenu/PopoverMenuItem.vue\"],\"names\":[],\"mappings\":\";AAoLA;CACA,gBAAA;AACA;AAEA;CACA,eAAA;AACA;AAEA;CACA,uBAAA;CACA,eAAA;AACA;AAEA;CACA,eAAA;AACA;AAEA;CACA,4CAAA;CACA,gBAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\\n -\\n - @author John Molakvoæ <skjnldsv@protonmail.com>\\n -\\n - @license GNU AGPL version 3 or any later version\\n -\\n - This program is free software: you can redistribute it and/or modify\\n - it under the terms of the GNU Affero General Public License as\\n - published by the Free Software Foundation, either version 3 of the\\n - License, or (at your option) any later version.\\n -\\n - This program is distributed in the hope that it will be useful,\\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n - GNU Affero General Public License for more details.\\n -\\n - You should have received a copy of the GNU Affero General Public License\\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\\n -\\n -->\\n\\n<template>\\n\\t<li class=\\\"popover__menuitem\\\">\\n\\t\\t<!-- If item.href is set, a link will be directly used -->\\n\\t\\t<a v-if=\\\"item.href\\\"\\n\\t\\t\\t:href=\\\"(item.href) ? item.href : '#' \\\"\\n\\t\\t\\t:target=\\\"(item.target) ? item.target : '' \\\"\\n\\t\\t\\t:download=\\\"item.download\\\"\\n\\t\\t\\tclass=\\\"focusable\\\"\\n\\t\\t\\trel=\\\"noreferrer noopener\\\"\\n\\t\\t\\t@click=\\\"action\\\">\\n\\t\\t\\t<span v-if=\\\"!iconIsUrl\\\" :class=\\\"item.icon\\\" />\\n\\t\\t\\t<img v-else :src=\\\"item.icon\\\">\\n\\t\\t\\t<p v-if=\\\"item.text && item.longtext\\\">\\n\\t\\t\\t\\t<strong class=\\\"menuitem-text\\\">\\n\\t\\t\\t\\t\\t{{ item.text }}\\n\\t\\t\\t\\t</strong><br>\\n\\t\\t\\t\\t<span class=\\\"menuitem-text-detail\\\">\\n\\t\\t\\t\\t\\t{{ item.longtext }}\\n\\t\\t\\t\\t</span>\\n\\t\\t\\t</p>\\n\\t\\t\\t<span v-else-if=\\\"item.text\\\">\\n\\t\\t\\t\\t{{ item.text }}\\n\\t\\t\\t</span>\\n\\t\\t\\t<p v-else-if=\\\"item.longtext\\\">\\n\\t\\t\\t\\t{{ item.longtext }}\\n\\t\\t\\t</p>\\n\\t\\t</a>\\n\\n\\t\\t<!-- If item.input is set instead, an put will be used -->\\n\\t\\t<span v-else-if=\\\"item.input\\\" class=\\\"menuitem\\\" :class=\\\"{active: item.active}\\\">\\n\\t\\t\\t<!-- does not show if input is checkbox -->\\n\\t\\t\\t<span v-if=\\\"item.input !== 'checkbox'\\\" :class=\\\"item.icon\\\" />\\n\\n\\t\\t\\t<!-- only shows if input is text -->\\n\\t\\t\\t<form v-if=\\\"item.input === 'text'\\\"\\n\\t\\t\\t\\t:class=\\\"item.input\\\"\\n\\t\\t\\t\\t@submit.prevent=\\\"item.action\\\">\\n\\t\\t\\t\\t<input :type=\\\"item.input\\\"\\n\\t\\t\\t\\t\\t:value=\\\"item.value\\\"\\n\\t\\t\\t\\t\\t:placeholder=\\\"item.text\\\"\\n\\t\\t\\t\\t\\trequired>\\n\\t\\t\\t\\t<input type=\\\"submit\\\" value=\\\"\\\" class=\\\"icon-confirm\\\">\\n\\t\\t\\t</form>\\n\\n\\t\\t\\t<!-- checkbox -->\\n\\t\\t\\t<template v-else>\\n\\t\\t\\t\\t<!-- eslint-disable-next-line -->\\n\\t\\t\\t\\t<input :id=\\\"key\\\" v-model=\\\"item.model\\\"\\n\\t\\t\\t\\t\\t:type=\\\"item.input\\\"\\n\\t\\t\\t\\t\\t:class=\\\"item.input\\\"\\n\\t\\t\\t\\t\\t@change=\\\"item.action\\\">\\n\\t\\t\\t\\t<label :for=\\\"key\\\" @click.stop.prevent=\\\"item.action\\\">\\n\\t\\t\\t\\t\\t{{ item.text }}\\n\\t\\t\\t\\t</label>\\n\\t\\t\\t</template>\\n\\t\\t</span>\\n\\n\\t\\t<!-- If item.action is set instead, a button will be used -->\\n\\t\\t<button v-else-if=\\\"item.action\\\"\\n\\t\\t\\tclass=\\\"menuitem focusable\\\"\\n\\t\\t\\t:class=\\\"{active: item.active}\\\"\\n\\t\\t\\t:disabled=\\\"item.disabled\\\"\\n\\t\\t\\ttype=\\\"button\\\"\\n\\t\\t\\t@click.stop.prevent=\\\"item.action\\\">\\n\\t\\t\\t<span :class=\\\"item.icon\\\" />\\n\\t\\t\\t<p v-if=\\\"item.text && item.longtext\\\">\\n\\t\\t\\t\\t<strong class=\\\"menuitem-text\\\">\\n\\t\\t\\t\\t\\t{{ item.text }}\\n\\t\\t\\t\\t</strong><br>\\n\\t\\t\\t\\t<span class=\\\"menuitem-text-detail\\\">\\n\\t\\t\\t\\t\\t{{ item.longtext }}\\n\\t\\t\\t\\t</span>\\n\\t\\t\\t</p>\\n\\t\\t\\t<span v-else-if=\\\"item.text\\\">\\n\\t\\t\\t\\t{{ item.text }}\\n\\t\\t\\t</span>\\n\\t\\t\\t<p v-else-if=\\\"item.longtext\\\">\\n\\t\\t\\t\\t{{ item.longtext }}\\n\\t\\t\\t</p>\\n\\t\\t</button>\\n\\n\\t\\t<!-- If item.longtext is set AND the item does not have an action -->\\n\\t\\t<span v-else class=\\\"menuitem\\\" :class=\\\"{active: item.active}\\\">\\n\\t\\t\\t<span :class=\\\"item.icon\\\" />\\n\\t\\t\\t<p v-if=\\\"item.text && item.longtext\\\">\\n\\t\\t\\t\\t<strong class=\\\"menuitem-text\\\">\\n\\t\\t\\t\\t\\t{{ item.text }}\\n\\t\\t\\t\\t</strong><br>\\n\\t\\t\\t\\t<span class=\\\"menuitem-text-detail\\\">\\n\\t\\t\\t\\t\\t{{ item.longtext }}\\n\\t\\t\\t\\t</span>\\n\\t\\t\\t</p>\\n\\t\\t\\t<span v-else-if=\\\"item.text\\\">\\n\\t\\t\\t\\t{{ item.text }}\\n\\t\\t\\t</span>\\n\\t\\t\\t<p v-else-if=\\\"item.longtext\\\">\\n\\t\\t\\t\\t{{ item.longtext }}\\n\\t\\t\\t</p>\\n\\t\\t</span>\\n\\t</li>\\n</template>\\n\\n<script>\\nexport default {\\n\\tname: 'PopoverMenuItem',\\n\\tprops: {\\n\\t\\titem: {\\n\\t\\t\\ttype: Object,\\n\\t\\t\\trequired: true,\\n\\t\\t\\tdefault: () => {\\n\\t\\t\\t\\treturn {\\n\\t\\t\\t\\t\\tkey: 'nextcloud-link',\\n\\t\\t\\t\\t\\thref: 'https://nextcloud.com',\\n\\t\\t\\t\\t\\ticon: 'icon-links',\\n\\t\\t\\t\\t\\ttext: 'Nextcloud',\\n\\t\\t\\t\\t}\\n\\t\\t\\t},\\n\\t\\t\\t// check the input types\\n\\t\\t\\t// TODO: add more validation of types\\n\\t\\t\\tvalidator: item => {\\n\\t\\t\\t\\t// TODO: support radio\\n\\t\\t\\t\\tif (item.input) {\\n\\t\\t\\t\\t\\treturn ['text', 'checkbox'].indexOf(item.input) !== -1\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn true\\n\\t\\t\\t},\\n\\t\\t},\\n\\t},\\n\\tcomputed: {\\n\\t\\t// random key for inputs binding if not provided\\n\\t\\tkey() {\\n\\t\\t\\treturn this.item.key\\n\\t\\t\\t\\t? this.item.key\\n\\t\\t\\t\\t: Math.round(Math.random() * 16 * 1000000).toString(16)\\n\\t\\t},\\n\\t\\ticonIsUrl() {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\t// eslint-disable-next-line no-new\\n\\t\\t\\t\\tnew URL(this.item.icon)\\n\\t\\t\\t\\treturn true\\n\\t\\t\\t} catch (_) {\\n\\t\\t\\t\\treturn false\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n\\tmethods: {\\n\\t\\t// allow us to use both link and an action on `a`\\n\\t\\t// we still need to make sure item.action exists\\n\\t\\taction(event) {\\n\\t\\t\\tif (this.item.action) {\\n\\t\\t\\t\\tthis.item.action(event)\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n\\n<style scoped>\\n\\tbutton.menuitem {\\n\\t\\ttext-align: left;\\n\\t}\\n\\n\\tbutton.menuitem * {\\n\\t\\tcursor: pointer;\\n\\t}\\n\\n\\tbutton.menuitem:disabled {\\n\\t\\topacity: 0.5 !important;\\n\\t\\tcursor: default;\\n\\t}\\n\\n\\tbutton.menuitem:disabled * {\\n\\t\\tcursor: default;\\n\\t}\\n\\n\\t.menuitem.active {\\n\\t\\tbox-shadow: inset 2px 0 var(--color-primary);\\n\\t\\tborder-radius: 0;\\n\\t}\\n</style>\\n\\n<style lang=\\\"scss\\\" scoped>\\nli {\\n\\tdisplay: flex;\\n\\tflex: 0 0 auto;\\n\\n\\t&.hidden {\\n\\t\\tdisplay: none;\\n\\t}\\n\\n\\t> button,\\n\\t> a,\\n\\t> .menuitem {\\n\\t\\tcursor: pointer;\\n\\t\\tline-height: $clickable-area;\\n\\t\\tborder: 0;\\n\\t\\tborder-radius: 0; // otherwise Safari will cut the border-radius area\\n\\t\\tbackground-color: transparent;\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: flex-start;\\n\\t\\theight: auto;\\n\\t\\tmargin: 0;\\n\\t\\tpadding: 0;\\n\\t\\tfont-weight: normal;\\n\\t\\tbox-shadow: none;\\n\\t\\twidth: 100%;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\twhite-space: nowrap;\\n\\t\\topacity: $opacity_normal;\\n\\n\\t\\t// TODO split into individual components for readability\\n\\t\\tspan[class^='icon-'],\\n\\t\\tspan[class*=' icon-'],\\n\\t\\t&[class^='icon-'],\\n\\t\\t&[class*=' icon-'] {\\n\\t\\t\\tmin-width: 0; /* Overwrite icons*/\\n\\t\\t\\tmin-height: 0;\\n\\t\\t\\tbackground-position: #{$icon-margin} center;\\n\\t\\t\\tbackground-size: $icon-size;\\n\\t\\t}\\n\\n\\t\\tspan[class^='icon-'],\\n\\t\\tspan[class*=' icon-'] {\\n\\t\\t\\t/* Keep padding to define the width to\\n\\t\\t\\t\\tassure correct position of a possible text */\\n\\t\\t\\tpadding: #{$clickable-area / 2} 0 #{$clickable-area / 2} $clickable-area;\\n\\t\\t}\\n\\n\\t\\t// If no icons set, force left margin to align\\n\\t\\t&:not([class^='icon-']):not([class*='icon-']) {\\n\\t\\t\\t> span,\\n\\t\\t\\t> input,\\n\\t\\t\\t> form {\\n\\t\\t\\t\\t&:not([class^='icon-']):not([class*='icon-']):first-child {\\n\\t\\t\\t\\t\\tmargin-left: $clickable-area;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&[class^='icon-'],\\n\\t\\t&[class*=' icon-'] {\\n\\t\\t\\tpadding: 0 $icon-margin 0 $clickable-area;\\n\\t\\t}\\n\\n\\t\\t&:not(:disabled):hover,\\n\\t\\t&:not(:disabled):focus,\\n\\t\\t&:not(:disabled).active {\\n\\t\\t\\topacity: $opacity_full !important;\\n\\t\\t}\\n\\n\\t\\t/* prevent .action class to break the design */\\n\\t\\t&.action {\\n\\t\\t\\tpadding: inherit !important;\\n\\t\\t}\\n\\n\\t\\t> span {\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t}\\n\\n\\t\\t// long text area\\n\\t\\t> p {\\n\\t\\t\\twidth: 150px;\\n\\t\\t\\tline-height: 1.6em;\\n\\t\\t\\tpadding: 8px 0;\\n\\t\\t\\twhite-space: normal;\\n\\n\\t\\t\\t// in case there are no spaces like long email addresses\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t}\\n\\n\\t\\t// TODO: do we really supports it?\\n\\t\\t> select {\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tmargin-left: 6px;\\n\\t\\t}\\n\\n\\t\\t/* Add padding if contains icon+text */\\n\\t\\t&:not(:empty) {\\n\\t\\t\\tpadding-right: $icon-margin !important;\\n\\t\\t}\\n\\n\\t\\t/* DEPRECATED! old img in popover fallback\\n\\t\\t\\t* TODO: to remove */\\n\\t\\t> img {\\n\\t\\t\\twidth: $icon-size;\\n\\t\\t\\tmargin: $icon-margin;\\n\\t\\t}\\n\\n\\t\\t/* checkbox/radio fixes */\\n\\t\\t> input.radio + label,\\n\\t\\t> input.checkbox + label {\\n\\t\\t\\tpadding: 0 !important;\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\t\\t> input.checkbox + label::before {\\n\\t\\t\\tmargin: -2px 13px 0;\\n\\t\\t}\\n\\t\\t> input.radio + label::before {\\n\\t\\t\\tmargin: -2px 12px 0;\\n\\t\\t}\\n\\t\\t> input:not([type=radio]):not([type=checkbox]):not([type=image]) {\\n\\t\\t\\twidth: 150px;\\n\\t\\t}\\n\\n\\t\\t// Forms & text inputs\\n\\t\\tform {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex: 1 1 auto;\\n\\t\\t\\t/* put a small space between text and form\\n\\t\\t\\t\\tif there is an element before */\\n\\t\\t\\t&:not(:first-child) {\\n\\t\\t\\t\\tmargin-left: 5px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t/* no margin if hidden span before */\\n\\t\\t> span.hidden + form,\\n\\t\\t> span[style*='display:none'] + form {\\n\\t\\t\\tmargin-left: 0;\\n\\t\\t}\\n\\t\\t/* Inputs inside popover supports text, submit & reset */\\n\\t\\tinput {\\n\\t\\t\\tmin-width: $clickable-area;\\n\\t\\t\\tmax-height: #{$clickable-area - 4px}; /* twice the element margin-y */\\n\\t\\t\\tmargin: 2px 0;\\n\\t\\t\\tflex: 1 1 auto;\\n\\t\\t\\t// space between inline inputs\\n\\t\\t\\t&:not(:first-child) {\\n\\t\\t\\t\\tmargin-left: 5px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t// TODO: do that in js, should be cleaner\\n\\t/* css hack, only first not hidden */\\n\\t&:not(.hidden):not([style*='display:none']) {\\n\\t\\t&:first-of-type {\\n\\t\\t\\t> button, > a, > .menuitem {\\n\\t\\t\\t\\t> form, > input {\\n\\t\\t\\t\\t\\tmargin-top: $icon-margin - 2px; // minus the input margin\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t&:last-of-type {\\n\\t\\t\\t> button, > a, > .menuitem {\\n\\t\\t\\t\\t> form, > input {\\n\\t\\t\\t\\t\\tmargin-bottom: $icon-margin - 2px; // minus the input margin\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\t> button {\\n\\t\\tpadding: 0;\\n\\t\\tspan {\\n\\t\\t\\topacity: $opacity_full;\\n\\t\\t}\\n\\t}\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.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, \".material-design-icon[data-v-2d3b91c8]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}li[data-v-2d3b91c8]{display:flex;flex:0 0 auto}li.hidden[data-v-2d3b91c8]{display:none}li>button[data-v-2d3b91c8],li>a[data-v-2d3b91c8],li>.menuitem[data-v-2d3b91c8]{cursor:pointer;line-height:44px;border:0;border-radius:0;background-color:transparent;display:flex;align-items:flex-start;height:auto;margin:0;padding:0;font-weight:normal;box-shadow:none;width:100%;color:var(--color-main-text);white-space:nowrap;opacity:.7}li>button span[class^='icon-'][data-v-2d3b91c8],li>button span[class*=' icon-'][data-v-2d3b91c8],li>button[class^='icon-'][data-v-2d3b91c8],li>button[class*=' icon-'][data-v-2d3b91c8],li>a span[class^='icon-'][data-v-2d3b91c8],li>a span[class*=' icon-'][data-v-2d3b91c8],li>a[class^='icon-'][data-v-2d3b91c8],li>a[class*=' icon-'][data-v-2d3b91c8],li>.menuitem span[class^='icon-'][data-v-2d3b91c8],li>.menuitem span[class*=' icon-'][data-v-2d3b91c8],li>.menuitem[class^='icon-'][data-v-2d3b91c8],li>.menuitem[class*=' icon-'][data-v-2d3b91c8]{min-width:0;min-height:0;background-position:14px center;background-size:16px}li>button span[class^='icon-'][data-v-2d3b91c8],li>button span[class*=' icon-'][data-v-2d3b91c8],li>a span[class^='icon-'][data-v-2d3b91c8],li>a span[class*=' icon-'][data-v-2d3b91c8],li>.menuitem span[class^='icon-'][data-v-2d3b91c8],li>.menuitem span[class*=' icon-'][data-v-2d3b91c8]{padding:22px 0 22px 44px}li>button:not([class^='icon-']):not([class*='icon-'])>span[data-v-2d3b91c8]:not([class^='icon-']):not([class*='icon-']):first-child,li>button:not([class^='icon-']):not([class*='icon-'])>input[data-v-2d3b91c8]:not([class^='icon-']):not([class*='icon-']):first-child,li>button:not([class^='icon-']):not([class*='icon-'])>form[data-v-2d3b91c8]:not([class^='icon-']):not([class*='icon-']):first-child,li>a:not([class^='icon-']):not([class*='icon-'])>span[data-v-2d3b91c8]:not([class^='icon-']):not([class*='icon-']):first-child,li>a:not([class^='icon-']):not([class*='icon-'])>input[data-v-2d3b91c8]:not([class^='icon-']):not([class*='icon-']):first-child,li>a:not([class^='icon-']):not([class*='icon-'])>form[data-v-2d3b91c8]:not([class^='icon-']):not([class*='icon-']):first-child,li>.menuitem:not([class^='icon-']):not([class*='icon-'])>span[data-v-2d3b91c8]:not([class^='icon-']):not([class*='icon-']):first-child,li>.menuitem:not([class^='icon-']):not([class*='icon-'])>input[data-v-2d3b91c8]:not([class^='icon-']):not([class*='icon-']):first-child,li>.menuitem:not([class^='icon-']):not([class*='icon-'])>form[data-v-2d3b91c8]:not([class^='icon-']):not([class*='icon-']):first-child{margin-left:44px}li>button[class^='icon-'][data-v-2d3b91c8],li>button[class*=' icon-'][data-v-2d3b91c8],li>a[class^='icon-'][data-v-2d3b91c8],li>a[class*=' icon-'][data-v-2d3b91c8],li>.menuitem[class^='icon-'][data-v-2d3b91c8],li>.menuitem[class*=' icon-'][data-v-2d3b91c8]{padding:0 14px 0 44px}li>button[data-v-2d3b91c8]:not(:disabled):hover,li>button[data-v-2d3b91c8]:not(:disabled):focus,li>button:not(:disabled).active[data-v-2d3b91c8],li>a[data-v-2d3b91c8]:not(:disabled):hover,li>a[data-v-2d3b91c8]:not(:disabled):focus,li>a:not(:disabled).active[data-v-2d3b91c8],li>.menuitem[data-v-2d3b91c8]:not(:disabled):hover,li>.menuitem[data-v-2d3b91c8]:not(:disabled):focus,li>.menuitem:not(:disabled).active[data-v-2d3b91c8]{opacity:1 !important}li>button.action[data-v-2d3b91c8],li>a.action[data-v-2d3b91c8],li>.menuitem.action[data-v-2d3b91c8]{padding:inherit !important}li>button>span[data-v-2d3b91c8],li>a>span[data-v-2d3b91c8],li>.menuitem>span[data-v-2d3b91c8]{cursor:pointer;white-space:nowrap}li>button>p[data-v-2d3b91c8],li>a>p[data-v-2d3b91c8],li>.menuitem>p[data-v-2d3b91c8]{width:150px;line-height:1.6em;padding:8px 0;white-space:normal;overflow:hidden;text-overflow:ellipsis}li>button>select[data-v-2d3b91c8],li>a>select[data-v-2d3b91c8],li>.menuitem>select[data-v-2d3b91c8]{margin:0;margin-left:6px}li>button[data-v-2d3b91c8]:not(:empty),li>a[data-v-2d3b91c8]:not(:empty),li>.menuitem[data-v-2d3b91c8]:not(:empty){padding-right:14px !important}li>button>img[data-v-2d3b91c8],li>a>img[data-v-2d3b91c8],li>.menuitem>img[data-v-2d3b91c8]{width:16px;margin:14px}li>button>input.radio+label[data-v-2d3b91c8],li>button>input.checkbox+label[data-v-2d3b91c8],li>a>input.radio+label[data-v-2d3b91c8],li>a>input.checkbox+label[data-v-2d3b91c8],li>.menuitem>input.radio+label[data-v-2d3b91c8],li>.menuitem>input.checkbox+label[data-v-2d3b91c8]{padding:0 !important;width:100%}li>button>input.checkbox+label[data-v-2d3b91c8]::before,li>a>input.checkbox+label[data-v-2d3b91c8]::before,li>.menuitem>input.checkbox+label[data-v-2d3b91c8]::before{margin:-2px 13px 0}li>button>input.radio+label[data-v-2d3b91c8]::before,li>a>input.radio+label[data-v-2d3b91c8]::before,li>.menuitem>input.radio+label[data-v-2d3b91c8]::before{margin:-2px 12px 0}li>button>input[data-v-2d3b91c8]:not([type=radio]):not([type=checkbox]):not([type=image]),li>a>input[data-v-2d3b91c8]:not([type=radio]):not([type=checkbox]):not([type=image]),li>.menuitem>input[data-v-2d3b91c8]:not([type=radio]):not([type=checkbox]):not([type=image]){width:150px}li>button form[data-v-2d3b91c8],li>a form[data-v-2d3b91c8],li>.menuitem form[data-v-2d3b91c8]{display:flex;flex:1 1 auto}li>button form[data-v-2d3b91c8]:not(:first-child),li>a form[data-v-2d3b91c8]:not(:first-child),li>.menuitem form[data-v-2d3b91c8]:not(:first-child){margin-left:5px}li>button>span.hidden+form[data-v-2d3b91c8],li>button>span[style*='display:none']+form[data-v-2d3b91c8],li>a>span.hidden+form[data-v-2d3b91c8],li>a>span[style*='display:none']+form[data-v-2d3b91c8],li>.menuitem>span.hidden+form[data-v-2d3b91c8],li>.menuitem>span[style*='display:none']+form[data-v-2d3b91c8]{margin-left:0}li>button input[data-v-2d3b91c8],li>a input[data-v-2d3b91c8],li>.menuitem input[data-v-2d3b91c8]{min-width:44px;max-height:40px;margin:2px 0;flex:1 1 auto}li>button input[data-v-2d3b91c8]:not(:first-child),li>a input[data-v-2d3b91c8]:not(:first-child),li>.menuitem input[data-v-2d3b91c8]:not(:first-child){margin-left:5px}li:not(.hidden):not([style*='display:none']):first-of-type>button>form[data-v-2d3b91c8],li:not(.hidden):not([style*='display:none']):first-of-type>button>input[data-v-2d3b91c8],li:not(.hidden):not([style*='display:none']):first-of-type>a>form[data-v-2d3b91c8],li:not(.hidden):not([style*='display:none']):first-of-type>a>input[data-v-2d3b91c8],li:not(.hidden):not([style*='display:none']):first-of-type>.menuitem>form[data-v-2d3b91c8],li:not(.hidden):not([style*='display:none']):first-of-type>.menuitem>input[data-v-2d3b91c8]{margin-top:12px}li:not(.hidden):not([style*='display:none']):last-of-type>button>form[data-v-2d3b91c8],li:not(.hidden):not([style*='display:none']):last-of-type>button>input[data-v-2d3b91c8],li:not(.hidden):not([style*='display:none']):last-of-type>a>form[data-v-2d3b91c8],li:not(.hidden):not([style*='display:none']):last-of-type>a>input[data-v-2d3b91c8],li:not(.hidden):not([style*='display:none']):last-of-type>.menuitem>form[data-v-2d3b91c8],li:not(.hidden):not([style*='display:none']):last-of-type>.menuitem>input[data-v-2d3b91c8]{margin-bottom:12px}li>button[data-v-2d3b91c8]{padding:0}li>button span[data-v-2d3b91c8]{opacity:1}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../assets/material-icons.css\",\"webpack://./PopoverMenuItem.vue\",\"webpack://./../../assets/variables.scss\"],\"names\":[],\"mappings\":\"AAGA,uCACC,YAAa,CACb,iBAAkB,CAClB,mBAAoB,CACpB,kBAAmB,CACnB,sBAAuB,CCqMxB,oBACC,YAAa,CACb,aAAc,CAFf,2BAKE,YAAa,CALf,+EAWE,cAAe,CACf,gBChMmB,CDiMnB,QAAS,CACT,eAAgB,CAChB,4BAA6B,CAC7B,YAAa,CACb,sBAAuB,CACvB,WAAY,CACZ,QAAS,CACT,SAAU,CACV,kBAAmB,CACnB,eAAgB,CAChB,UAAW,CACX,4BAA6B,CAC7B,kBAAmB,CACnB,UC5LiB,CDkKnB,giBAiCG,WAAY,CACZ,YAAa,CACb,+BAA2C,CAC3C,oBCpNa,CDgLhB,+RA2CG,wBC/NkB,CDoLrB,iqCAoDK,gBCxOgB,CDoLrB,iQA2DG,qBC/OkB,CDoLrB,6aAiEG,oBAAiC,CAjEpC,oGAsEG,0BAA2B,CAtE9B,8FA0EG,cAAe,CACf,kBAAmB,CA3EtB,qFAgFG,WAAY,CACZ,iBAAkB,CAClB,aAAc,CACd,kBAAmB,CAGnB,eAAgB,CAChB,sBAAuB,CAvF1B,oGA4FG,QAAS,CACT,eAAgB,CA7FnB,mHAkGG,6BAAsC,CAlGzC,2FAwGG,UCxRa,CDyRb,WCrR6C,CD4KhD,mRA+GG,oBAAqB,CACrB,UAAW,CAhHd,sKAmHG,kBAAmB,CAnHtB,6JAsHG,kBAAmB,CAtHtB,4QAyHG,WAAY,CAzHf,8FA8HG,YAAa,CACb,aAAc,CA/HjB,oJAmII,eAAgB,CAnIpB,oTAyIG,aAAc,CAzIjB,iGA6IG,cCjUkB,CDkUlB,eAAY,CACZ,YAAa,CACb,aAAc,CAhJjB,uJAmJI,eAAgB,CAnJpB,+gBA8JK,eAA8B,CA9JnC,ygBAqKK,kBAAiC,CArKtC,2BA2KE,SAAU,CA3KZ,gCA6KG,SC9Ua\",\"sourcesContent\":[\"/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon {\\n\\tdisplay: flex;\\n\\talign-self: center;\\n\\tjustify-self: center;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\",\"$scope_version:\\\"16fd49f\\\"; @import 'variables'; @import 'material-icons';\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nli {\\n\\tdisplay: flex;\\n\\tflex: 0 0 auto;\\n\\n\\t&.hidden {\\n\\t\\tdisplay: none;\\n\\t}\\n\\n\\t> button,\\n\\t> a,\\n\\t> .menuitem {\\n\\t\\tcursor: pointer;\\n\\t\\tline-height: $clickable-area;\\n\\t\\tborder: 0;\\n\\t\\tborder-radius: 0; // otherwise Safari will cut the border-radius area\\n\\t\\tbackground-color: transparent;\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: flex-start;\\n\\t\\theight: auto;\\n\\t\\tmargin: 0;\\n\\t\\tpadding: 0;\\n\\t\\tfont-weight: normal;\\n\\t\\tbox-shadow: none;\\n\\t\\twidth: 100%;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\twhite-space: nowrap;\\n\\t\\topacity: $opacity_normal;\\n\\n\\t\\t// TODO split into individual components for readability\\n\\t\\tspan[class^='icon-'],\\n\\t\\tspan[class*=' icon-'],\\n\\t\\t&[class^='icon-'],\\n\\t\\t&[class*=' icon-'] {\\n\\t\\t\\tmin-width: 0; /* Overwrite icons*/\\n\\t\\t\\tmin-height: 0;\\n\\t\\t\\tbackground-position: #{$icon-margin} center;\\n\\t\\t\\tbackground-size: $icon-size;\\n\\t\\t}\\n\\n\\t\\tspan[class^='icon-'],\\n\\t\\tspan[class*=' icon-'] {\\n\\t\\t\\t/* Keep padding to define the width to\\n\\t\\t\\t\\tassure correct position of a possible text */\\n\\t\\t\\tpadding: #{$clickable-area / 2} 0 #{$clickable-area / 2} $clickable-area;\\n\\t\\t}\\n\\n\\t\\t// If no icons set, force left margin to align\\n\\t\\t&:not([class^='icon-']):not([class*='icon-']) {\\n\\t\\t\\t> span,\\n\\t\\t\\t> input,\\n\\t\\t\\t> form {\\n\\t\\t\\t\\t&:not([class^='icon-']):not([class*='icon-']):first-child {\\n\\t\\t\\t\\t\\tmargin-left: $clickable-area;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&[class^='icon-'],\\n\\t\\t&[class*=' icon-'] {\\n\\t\\t\\tpadding: 0 $icon-margin 0 $clickable-area;\\n\\t\\t}\\n\\n\\t\\t&:not(:disabled):hover,\\n\\t\\t&:not(:disabled):focus,\\n\\t\\t&:not(:disabled).active {\\n\\t\\t\\topacity: $opacity_full !important;\\n\\t\\t}\\n\\n\\t\\t/* prevent .action class to break the design */\\n\\t\\t&.action {\\n\\t\\t\\tpadding: inherit !important;\\n\\t\\t}\\n\\n\\t\\t> span {\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t}\\n\\n\\t\\t// long text area\\n\\t\\t> p {\\n\\t\\t\\twidth: 150px;\\n\\t\\t\\tline-height: 1.6em;\\n\\t\\t\\tpadding: 8px 0;\\n\\t\\t\\twhite-space: normal;\\n\\n\\t\\t\\t// in case there are no spaces like long email addresses\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t}\\n\\n\\t\\t// TODO: do we really supports it?\\n\\t\\t> select {\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tmargin-left: 6px;\\n\\t\\t}\\n\\n\\t\\t/* Add padding if contains icon+text */\\n\\t\\t&:not(:empty) {\\n\\t\\t\\tpadding-right: $icon-margin !important;\\n\\t\\t}\\n\\n\\t\\t/* DEPRECATED! old img in popover fallback\\n\\t\\t\\t* TODO: to remove */\\n\\t\\t> img {\\n\\t\\t\\twidth: $icon-size;\\n\\t\\t\\tmargin: $icon-margin;\\n\\t\\t}\\n\\n\\t\\t/* checkbox/radio fixes */\\n\\t\\t> input.radio + label,\\n\\t\\t> input.checkbox + label {\\n\\t\\t\\tpadding: 0 !important;\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\t\\t> input.checkbox + label::before {\\n\\t\\t\\tmargin: -2px 13px 0;\\n\\t\\t}\\n\\t\\t> input.radio + label::before {\\n\\t\\t\\tmargin: -2px 12px 0;\\n\\t\\t}\\n\\t\\t> input:not([type=radio]):not([type=checkbox]):not([type=image]) {\\n\\t\\t\\twidth: 150px;\\n\\t\\t}\\n\\n\\t\\t// Forms & text inputs\\n\\t\\tform {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex: 1 1 auto;\\n\\t\\t\\t/* put a small space between text and form\\n\\t\\t\\t\\tif there is an element before */\\n\\t\\t\\t&:not(:first-child) {\\n\\t\\t\\t\\tmargin-left: 5px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t/* no margin if hidden span before */\\n\\t\\t> span.hidden + form,\\n\\t\\t> span[style*='display:none'] + form {\\n\\t\\t\\tmargin-left: 0;\\n\\t\\t}\\n\\t\\t/* Inputs inside popover supports text, submit & reset */\\n\\t\\tinput {\\n\\t\\t\\tmin-width: $clickable-area;\\n\\t\\t\\tmax-height: #{$clickable-area - 4px}; /* twice the element margin-y */\\n\\t\\t\\tmargin: 2px 0;\\n\\t\\t\\tflex: 1 1 auto;\\n\\t\\t\\t// space between inline inputs\\n\\t\\t\\t&:not(:first-child) {\\n\\t\\t\\t\\tmargin-left: 5px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t// TODO: do that in js, should be cleaner\\n\\t/* css hack, only first not hidden */\\n\\t&:not(.hidden):not([style*='display:none']) {\\n\\t\\t&:first-of-type {\\n\\t\\t\\t> button, > a, > .menuitem {\\n\\t\\t\\t\\t> form, > input {\\n\\t\\t\\t\\t\\tmargin-top: $icon-margin - 2px; // minus the input margin\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t&:last-of-type {\\n\\t\\t\\t> button, > a, > .menuitem {\\n\\t\\t\\t\\t> form, > input {\\n\\t\\t\\t\\t\\tmargin-bottom: $icon-margin - 2px; // minus the input margin\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\t> button {\\n\\t\\tpadding: 0;\\n\\t\\tspan {\\n\\t\\t\\topacity: $opacity_full;\\n\\t\\t}\\n\\t}\\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\\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\\n// recommended is 48px\\n// 44px is what we choose and have very good visual-to-usability ratio\\n$clickable-area: 44px;\\n\\n// background icon size\\n// also used for the scss icon font\\n$icon-size: 16px;\\n\\n// icon padding for a $clickable-area width and a $icon-size icon\\n// ( 44px - 16px ) / 2\\n$icon-margin: ($clickable-area - $icon-size) / 2;\\n\\n// transparency background for icons\\n$icon-focus-bg: rgba(127, 127, 127, .25);\\n\\n// popovermenu arrow width from the triangle center\\n$arrow-width: 9px;\\n\\n// opacities\\n$opacity_disabled: .5;\\n$opacity_normal: .7;\\n$opacity_full: 1;\\n\\n// menu round background hover feedback\\n// good looking on dark AND white bg\\n$action-background-hover: rgba(127, 127, 127, .25);\\n\\n// various structure data used in the \\n// `AppNavigation` component\\n$header-height: 50px;\\n$navigation-width: 300px;\\n\\n// mobile breakpoint\\n$breakpoint-mobile: 1024px;\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.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, \".material-design-icon[data-v-4dae360a]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}ul[data-v-4dae360a]{display:flex;flex-direction:column}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../assets/material-icons.css\",\"webpack://./PopoverMenu.vue\"],\"names\":[],\"mappings\":\"AAGA,uCACC,YAAa,CACb,iBAAkB,CAClB,mBAAoB,CACpB,kBAAmB,CACnB,sBAAuB,CCkDxB,oBACC,YAAa,CACb,qBAAsB\",\"sourcesContent\":[\"/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon {\\n\\tdisplay: flex;\\n\\talign-self: center;\\n\\tjustify-self: center;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\",\"$scope_version:\\\"16fd49f\\\"; @import 'variables'; @import 'material-icons';\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nul {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/**\n * @copyright Copyright (c) 2020 Raimund Schlüßler <raimund.schluessler@mailbox.org>\n *\n * @author Raimund Schlüßler <raimund.schluessler@mailbox.org>\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\n/**\n * Find the ranges of a substr in a given string\n *\n * @param {String} text The text to search in\n * @param {String} search The text to search for\n * @returns {Array} The array of ranges to highlight\n */\nconst FindRanges = (text, search) => {\n\tconst ranges = []\n\tlet currentIndex = 0\n\tlet index = text.toLowerCase().indexOf(search.toLowerCase(), currentIndex)\n\t// Variable to track that we don't iterate more often than the length of the text.\n\t// Shouldn't happen anyway, but just to be sure to not hang the browser for some reason.\n\tlet i = 0\n\twhile (index > -1 && i < text.length) {\n\t\tcurrentIndex = index + search.length\n\t\tranges.push({ start: index, end: currentIndex })\n\n\t\tindex = text.toLowerCase().indexOf(search.toLowerCase(), currentIndex)\n\t\ti++\n\t}\n\treturn ranges\n}\n\nexport default FindRanges\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MentionBubble.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!./MentionBubble.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2020 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<template>\n\t<span :class=\"{'mention-bubble--primary': primary}\"\n\t\tclass=\"mention-bubble\"\n\t\tcontenteditable=\"false\">\n\t\t<span class=\"mention-bubble__wrapper\">\n\t\t\t<span class=\"mention-bubble__content\">\n\t\t\t\t<!-- Avatar or icon -->\n\t\t\t\t<span :class=\"[icon, `mention-bubble__icon--${avatarUrl ? 'with-avatar' : ''}`]\"\n\t\t\t\t\t:style=\"avatarUrl ? { backgroundImage: `url(${avatarUrl})` } : null\"\n\t\t\t\t\tclass=\"mention-bubble__icon\" />\n\n\t\t\t\t<!-- Title -->\n\t\t\t\t<span role=\"heading\" class=\"mention-bubble__title\" :title=\"label\" />\n\t\t\t</span>\n\n\t\t\t<!-- Selectable text for copy/paste -->\n\t\t\t<span role=\"none\" class=\"mention-bubble__select\">{{ mentionText }}</span>\n\t\t</span>\n\t</span>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\n\nexport default {\n\tname: 'MentionBubble',\n\n\tprops: {\n\t\tid: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tlabel: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsource: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tprimary: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tcomputed: {\n\t\tavatarUrl() {\n\t\t\treturn this.id && this.source === 'users'\n\t\t\t\t? this.getAvatarUrl(this.id, 44)\n\t\t\t\t: null\n\t\t},\n\t\tmentionText() {\n\t\t\treturn this.id.indexOf(' ') === -1\n\t\t\t\t? `@${this.id}`\n\t\t\t\t: `@\"${this.id}\"`\n\t\t},\n\t},\n\n\tmethods: {\n\t\tgetAvatarUrl(user, size) {\n\t\t\treturn generateUrl('/avatar/{user}/{size}', {\n\t\t\t\tuser,\n\t\t\t\tsize,\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n$bubble-height: 20px;\n$bubble-max-width: 150px;\n$bubble-padding: 2px;\n$bubble-avatar-size: $bubble-height - 2 * $bubble-padding;\n\n.mention-bubble {\n\t&--primary &__content {\n\t\tcolor: var(--color-primary-text);\n\t\tbackground-color: var(--color-primary-element);\n\t}\n\n\t&__wrapper {\n\t\tmax-width: $bubble-max-width;\n\t\t// Align with text\n\t\theight: $bubble-height - $bubble-padding;\n\t\tvertical-align: text-bottom;\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t}\n\n\t&__content {\n\t\tdisplay: inline-flex;\n\t\toverflow: hidden;\n\t\talign-items: center;\n\t\tmax-width: 100%;\n\t\theight: $bubble-height ;\n\t\t-webkit-user-select: none;\n\t\tuser-select: none;\n\t\tpadding-right: $bubble-padding * 3;\n\t\tpadding-left: $bubble-padding;\n\t\tborder-radius: $bubble-height / 2;\n\t\tbackground-color: var(--color-background-dark);\n\t}\n\n\t&__icon {\n\t\tposition: relative;\n\t\twidth: $bubble-avatar-size;\n\t\theight: $bubble-avatar-size;\n\t\tborder-radius: $bubble-avatar-size / 2;\n\t\tbackground-color: var(--color-background-darker);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: center;\n\t\tbackground-size: $bubble-avatar-size - 2 * $bubble-padding;\n\n\t\t&--with-avatar {\n\t\t\tcolor: inherit;\n\t\t\tbackground-size: cover;\n\t\t}\n\t}\n\n\t&__title {\n\t\toverflow: hidden;\n\t\tmargin-left: $bubble-padding;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\t// Put label in ::before so it is not selectable\n\t\t&::before {\n\t\t\tcontent: attr(title);\n\t\t}\n\t}\n\n\t// Hide the mention id so it is selectable\n\t&__select {\n\t\tposition: absolute;\n\t\tz-index: -1;\n\t\tleft: -1000px;\n\t}\n}\n\n</style>\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MentionBubble.vue?vue&type=style&index=0&id=724f9d58&lang=scss&scoped=true&\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import { render, staticRenderFns } from \"./MentionBubble.vue?vue&type=template&id=724f9d58&scoped=true&\"\nimport script from \"./MentionBubble.vue?vue&type=script&lang=js&\"\nexport * from \"./MentionBubble.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MentionBubble.vue?vue&type=style&index=0&id=724f9d58&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"724f9d58\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"mention-bubble\",class:{'mention-bubble--primary': _vm.primary},attrs:{\"contenteditable\":\"false\"}},[_c('span',{staticClass:\"mention-bubble__wrapper\"},[_c('span',{staticClass:\"mention-bubble__content\"},[_c('span',{staticClass:\"mention-bubble__icon\",class:[_vm.icon, (\"mention-bubble__icon--\" + (_vm.avatarUrl ? 'with-avatar' : ''))],style:(_vm.avatarUrl ? { backgroundImage: (\"url(\" + _vm.avatarUrl + \")\") } : null)}),_vm._v(\" \"),_c('span',{staticClass:\"mention-bubble__title\",attrs:{\"role\":\"heading\",\"title\":_vm.label}})]),_vm._v(\" \"),_c('span',{staticClass:\"mention-bubble__select\",attrs:{\"role\":\"none\"}},[_vm._v(_vm._s(_vm.mentionText))])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 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\nimport escapeHtml from 'escape-html'\nimport Linkify from '../../utils/Linkify'\nimport stripTags from 'striptags'\nimport Vue from 'vue'\n\nimport MentionBubble from '../../components/RichContenteditable/MentionBubble'\n\n// Beginning or whitespace. Non-capturing group\nconst MENTION_START = '(?:^|\\\\s)'\n// Anything that is not text or end-of-line. Non-capturing group\nconst MENTION_END = '(?:[^a-z]|$)'\nexport const USERID_REGEX = new RegExp(`${MENTION_START}(@[a-zA-Z0-9_.@\\\\-']+)(${MENTION_END})`, 'gi')\nexport const USERID_REGEX_WITH_SPACE = new RegExp(`${MENTION_START}(@"[a-zA-Z0-9 _.@\\\\-']+")(${MENTION_END})`, 'gi')\n\nexport default {\n\tprops: {\n\t\tuserData: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({}),\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Convert the value string to html for the inner content\n\t\t *\n\t\t * @param {string} value the content without html\n\t\t * @returns {string} rendered html\n\t\t */\n\t\trenderContent(value) {\n\t\t\t// Sanitize the value prop\n\t\t\tconst sanitizedValue = escapeHtml(value)\n\n\t\t\t// Extract all the userIds\n\t\t\tconst splitValue = sanitizedValue.split(USERID_REGEX)\n\t\t\t\t.map(part => part.split(USERID_REGEX_WITH_SPACE)).flat()\n\n\t\t\t// Replace userIds by html\n\t\t\treturn splitValue\n\t\t\t\t.map(part => {\n\t\t\t\t\t// When splitting, the string is always putting the userIds\n\t\t\t\t\t// on the the uneven indexes. We only want to generate the mentions html\n\t\t\t\t\tif (!part.startsWith('@')) {\n\t\t\t\t\t\t// This part doesn't contain a mention, let's make sure links are parsed\n\t\t\t\t\t\treturn Linkify(part)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Extracting the id, nuking the \" and @\n\t\t\t\t\tconst id = part.replace(/@|"/gi, '')\n\t\t\t\t\t// Compiling template and prepend with the space we removed during the split\n\t\t\t\t\treturn ' ' + this.genSelectTemplate(id)\n\t\t\t\t})\n\t\t\t\t.join('')\n\t\t\t\t.replace(/\\n/gmi, '<br>')\n\t\t\t\t.replace(/&/gmi, '&')\n\t\t},\n\n\t\t/**\n\t\t * Convert the innerHtml content to a string with mentions as text\n\t\t *\n\t\t * @param {string} content the content without html\n\t\t * @returns {string}\n\t\t */\n\t\tparseContent(content) {\n\t\t\tlet text = content.replace(/<br>/gmi, '\\n')\n\t\t\ttext = text.replace(/ /gmi, ' ')\n\t\t\ttext = text.replace(/&/gmi, '&')\n\n\t\t\t// Convert the mentions to text only\n\t\t\t// first we replace divs with new lines\n\t\t\ttext = text.replace(/<\\/div>/gmi, '\\n')\n\t\t\t// then we remove all leftover html\n\t\t\ttext = stripTags(text, '<div>')\n\t\t\ttext = stripTags(text)\n\n\t\t\treturn text\n\t\t},\n\n\t\t/**\n\t\t * Generate an autocompletion popup entry template\n\t\t *\n\t\t * @param {string} value the value to match against the userData\n\t\t * @returns {string}\n\t\t */\n\t\tgenSelectTemplate(value) {\n\t\t\tconst data = this.userData[value]\n\n\t\t\t// Fallback to @mention in case no data matches\n\t\t\tif (!data) {\n\t\t\t\t// return `@${value}`\n\t\t\t\treturn value.indexOf(' ') === -1\n\t\t\t\t\t? `@${value}`\n\t\t\t\t\t: `@\"${value}\"`\n\t\t\t}\n\n\t\t\t// Return template and make sure we strip of new lines and tabs\n\t\t\treturn this.renderComponentHtml(data, MentionBubble).replace(/[\\n\\t]/gmi, '')\n\t\t},\n\n\t\t/**\n\t\t * Render a component and return its html content\n\t\t *\n\t\t * @param {Object} propsData the props to pass to the component\n\t\t * @param {Object} component the component to render\n\t\t * @returns {string} the rendered html\n\t\t */\n\t\trenderComponentHtml(propsData, component) {\n\t\t\tconst View = Vue.extend(component)\n\t\t\tconst Item = new View({\n\t\t\t\tpropsData,\n\t\t\t})\n\n\t\t\t// Prepare mountpoint\n\t\t\tconst wrapper = document.createElement('div')\n\t\t\tconst mount = document.createElement('div')\n\t\t\twrapper.style.display = 'none'\n\t\t\twrapper.appendChild(mount)\n\t\t\tdocument.body.appendChild(wrapper)\n\n\t\t\t// Mount and get raw html\n\t\t\tItem.$mount(mount)\n\t\t\tconst renderedHtml = wrapper.innerHTML\n\n\t\t\t// Destroy\n\t\t\tItem.$destroy()\n\t\t\twrapper.remove()\n\n\t\t\treturn renderedHtml\n\t\t},\n\t},\n}\n","<!--\n - @copyright Copyright (c) 2021 Raimund Schlüßler <raimund.schluessler@mailbox.org>\n -\n - @author Raimund Schlüßler <raimund.schluessler@mailbox.org>\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\n<docs>\n\n### General description\n\nHighlight a string with html <strong>. Accepts a substring to highlight or an array with ranges.\n\n### Usage\n\n```vue\n<template>\n\t<div>\n\t\t<Highlight text=\"Highlight me please!\" search=\"me\" />\n\t\t<br />\n\t\t<Highlight text=\"Highlight me please!\" :highlight=\"[{ start: 4, end: 12 }]\" />\n\t</div>\n</template>\n```\n</docs>\n\n<script>\nimport FindRanges from '../../utils/FindRanges'\n\nexport default {\n\tname: 'Highlight',\n\tprops: {\n\t\t/**\n\t\t * The string to display\n\t\t */\n\t\ttext: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * The string to match and highlight\n\t\t */\n\t\tsearch: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * The ranges to highlight, takes precedence over the search prop.\n\t\t */\n\t\thighlight: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t},\n\tcomputed: {\n\t\t/**\n\t\t * The indice ranges which should be highlighted.\n\t\t * If an array with ranges is provided, we use it. Otherwise\n\t\t * we calculate it based on the provided substring to highlight.\n\t\t *\n\t\t * @returns {Array} The array of ranges to highlight\n\t\t */\n\t\tranges() {\n\t\t\tlet ranges = []\n\t\t\t// If the search term and the highlight array is empty, return early with empty array\n\t\t\tif (!this.search && this.highlight.length === 0) {\n\t\t\t\treturn ranges\n\t\t\t}\n\n\t\t\t// If there are ranges to highlight provided, we use this array.\n\t\t\tif (this.highlight.length > 0) {\n\t\t\t\tranges = this.highlight\n\t\t\t// Otherwise we check the text to highlight for matches of the search term.\n\t\t\t} else {\n\t\t\t\tranges = FindRanges(this.text, this.search)\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Ensure that the start of each range is equal to or smaller than the end\n\t\t\t */\n\t\t\tranges.forEach((range, i) => {\n\t\t\t\tif (range.end < range.start) {\n\t\t\t\t\tranges[i] = {\n\t\t\t\t\t\tstart: range.end,\n\t\t\t\t\t\tend: range.start,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\n\t\t\t/**\n\t\t\t * Validate the ranges array to be within the string length\n\t\t\t * and discard ranges which are completely out of bonds.\n\t\t\t */\n\t\t\tranges = ranges.reduce((validRanges, range) => {\n\t\t\t\tif (range.start < this.text.length && range.end > 0) {\n\t\t\t\t\tvalidRanges.push({\n\t\t\t\t\t\tstart: (range.start < 0) ? 0 : range.start,\n\t\t\t\t\t\tend: (range.end > this.text.length) ? this.text.length : range.end,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\treturn validRanges\n\t\t\t}, [])\n\n\t\t\t/**\n\t\t\t * Sort ranges ascendingly (necessary for next step)\n\t\t\t */\n\t\t\tranges.sort((a, b) => {\n\t\t\t\treturn a.start - b.start\n\t\t\t})\n\n\t\t\t/**\n\t\t\t * Merge overlapping or adjacent ranges\n\t\t\t */\n\t\t\tranges = ranges.reduce((mergedRanges, range) => {\n\t\t\t\t// If there are no ranges, just add the range\n\t\t\t\tif (!mergedRanges.length) {\n\t\t\t\t\tmergedRanges.push(range)\n\t\t\t\t} else {\n\t\t\t\t\t// If the range overlaps the last range, merge them\n\t\t\t\t\tconst idx = mergedRanges.length - 1\n\t\t\t\t\tif (mergedRanges[idx].end >= range.start) {\n\t\t\t\t\t\tmergedRanges[idx] = {\n\t\t\t\t\t\t\tstart: mergedRanges[idx].start,\n\t\t\t\t\t\t\tend: Math.max(mergedRanges[idx].end, range.end),\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmergedRanges.push(range)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn mergedRanges\n\t\t\t}, [])\n\n\t\t\treturn ranges\n\t\t},\n\t\t/**\n\t\t * Calculate the different chunks to show based on the ranges to highlight.\n\t\t *\n\t\t * @returns {Array} The chunks\n\t\t */\n\t\tchunks() {\n\t\t\t// If the ranges array is empty, show only one chunk with all text\n\t\t\tif (this.ranges.length === 0) {\n\t\t\t\treturn [{\n\t\t\t\t\tstart: 0,\n\t\t\t\t\tend: this.text.length,\n\t\t\t\t\thighlight: false,\n\t\t\t\t\ttext: this.text,\n\t\t\t\t}]\n\t\t\t}\n\t\t\t// Calculate the chunks\n\t\t\tconst chunks = []\n\t\t\tlet currentIndex = 0\n\t\t\tlet currentRange = 0\n\t\t\t// Iterate over all characters in the text\n\t\t\twhile (currentIndex < this.text.length) {\n\t\t\t\t// Get the first range to highlight\n\t\t\t\tconst range = this.ranges[currentRange]\n\t\t\t\t// If the range starts at the current index, construct a chunk to highlight,\n\t\t\t\t// set the next range and continue with the next iteration.\n\t\t\t\tif (range.start === currentIndex) {\n\t\t\t\t\tchunks.push({\n\t\t\t\t\t\t...range,\n\t\t\t\t\t\thighlight: true,\n\t\t\t\t\t\ttext: this.text.substr(range.start, range.end - range.start),\n\t\t\t\t\t})\n\t\t\t\t\tcurrentRange++\n\t\t\t\t\tcurrentIndex = range.end\n\t\t\t\t\t// If this was the last range to highlight and we haven't reached the end of the text,\n\t\t\t\t\t// add the rest of the text without highlighting.\n\t\t\t\t\tif (currentRange >= this.ranges.length && currentIndex < this.text.length) {\n\t\t\t\t\t\tchunks.push({\n\t\t\t\t\t\t\tstart: currentIndex,\n\t\t\t\t\t\t\tend: this.text.length,\n\t\t\t\t\t\t\thighlight: false,\n\t\t\t\t\t\t\ttext: this.text.substr(currentIndex, this.text.length - currentIndex),\n\t\t\t\t\t\t})\n\t\t\t\t\t\t// Set the current index so the while loop ends.\n\t\t\t\t\t\tcurrentIndex = this.text.length\n\t\t\t\t\t}\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\t// If the current range does start after the current index, construct a chunk without\n\t\t\t\t// highlighting and set the current index to the start of the current range.\n\t\t\t\tchunks.push({\n\t\t\t\t\tstart: currentIndex,\n\t\t\t\t\tend: range.start,\n\t\t\t\t\thighlight: false,\n\t\t\t\t\ttext: this.text.substr(currentIndex, range.start - currentIndex),\n\t\t\t\t})\n\t\t\t\tcurrentIndex = range.start\n\t\t\t}\n\t\t\treturn chunks\n\t\t},\n\t},\n\t/**\n\t * The render function to display the component\n\t *\n\t * @param {Function} createElement The function to create VNodes\n\t * @returns {VNodes} The created VNodes\n\t */\n\trender(createElement) {\n\t\tif (!this.ranges.length) {\n\t\t\treturn createElement('span', {}, this.text)\n\t\t}\n\n\t\treturn createElement('span', {}, this.chunks.map(chunk => {\n\t\t\treturn chunk.highlight ? createElement('strong', {}, chunk.text) : chunk.text\n\t\t}))\n\t},\n}\n</script>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Highlight.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!./Highlight.vue?vue&type=script&lang=js&\"","var render, staticRenderFns\nimport script from \"./Highlight.vue?vue&type=script&lang=js&\"\nexport * from \"./Highlight.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./Highlight.vue?vue&type=custom&index=0&blockType=docs\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","/**\n * @copyright Copyright (c) 2020 Raimund Schlüßler <raimund.schluessler@mailbox.org>\n *\n * @author Raimund Schlüßler <raimund.schluessler@mailbox.org>\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\nimport Highlight from './Highlight'\n\nexport default Highlight\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nimport ___CSS_LOADER_URL_IMPORT_0___ from \"../../assets/status-icons/user-status-online.svg\";\nimport ___CSS_LOADER_URL_IMPORT_1___ from \"../../assets/status-icons/user-status-dnd.svg\";\nimport ___CSS_LOADER_URL_IMPORT_2___ from \"../../assets/status-icons/user-status-away.svg\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".material-design-icon[data-v-13c68150]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.avatardiv[data-v-13c68150]{position:relative;display:inline-block;width:var(--size);height:var(--size)}.avatardiv--unknown[data-v-13c68150]{position:relative;background-color:var(--color-text-maxcontrast)}.avatardiv[data-v-13c68150]:not(.avatardiv--unknown){background-color:#fff !important;box-shadow:0 0 5px rgba(0,0,0,0.05) inset}body.theme--dark .avatardiv[data-v-13c68150]:not(.avatardiv--unknown){background-color:#000 !important}.avatardiv--with-menu[data-v-13c68150]{cursor:pointer}.avatardiv--with-menu[data-v-13c68150] .trigger{position:absolute;top:0;left:0}.avatardiv--with-menu .icon-more[data-v-13c68150],.avatardiv--with-menu .icon-loading[data-v-13c68150]{display:flex;align-items:center;justify-content:center;width:var(--size);height:var(--size);cursor:pointer;background:none}.avatardiv--with-menu .icon-more[data-v-13c68150]{opacity:0}.avatardiv--with-menu:focus .icon-more[data-v-13c68150],.avatardiv--with-menu:hover .icon-more[data-v-13c68150]{opacity:1}.avatardiv--with-menu:focus img[data-v-13c68150],.avatardiv--with-menu:hover img[data-v-13c68150]{opacity:0.3}.avatardiv--with-menu .icon-more[data-v-13c68150],.avatardiv--with-menu img[data-v-13c68150]{transition:opacity var(--animation-quick)}.avatardiv>.unknown[data-v-13c68150]{position:absolute;top:0;left:0;display:block;width:100%;text-align:center;font-weight:normal;color:var(--color-main-background)}.avatardiv img[data-v-13c68150]{width:100%;height:100%;object-fit:cover}.avatardiv .avatardiv__user-status[data-v-13c68150]{position:absolute;right:-4px;bottom:-4px;height:18px;width:18px;line-height:15px;font-size:var(--default-font-size);border:2px solid var(--color-main-background);background-color:var(--color-main-background);background-repeat:no-repeat;background-size:16px;background-position:center;border-radius:50%}.acli:hover .avatardiv .avatardiv__user-status[data-v-13c68150]{border-color:var(--color-background-hover);background-color:var(--color-background-hover)}.acli.active .avatardiv .avatardiv__user-status[data-v-13c68150]{border-color:var(--color-primary-light);background-color:var(--color-primary-light)}.avatardiv .avatardiv__user-status--online[data-v-13c68150]{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \")}.avatardiv .avatardiv__user-status--dnd[data-v-13c68150]{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \");background-color:#ffffff}.avatardiv .avatardiv__user-status--away[data-v-13c68150]{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \")}.avatardiv .avatardiv__user-status--icon[data-v-13c68150]{border:none;background-color:transparent}.avatardiv .popovermenu-wrapper[data-v-13c68150]{position:relative;display:inline-block}.avatar-class-icon[data-v-13c68150]{border-radius:50%;background-color:var(--color-background-darker);height:100%}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../assets/material-icons.css\",\"webpack://./Avatar.vue\"],\"names\":[],\"mappings\":\"AAGA,uCACC,YAAa,CACb,iBAAkB,CAClB,mBAAoB,CACpB,kBAAmB,CACnB,sBAAuB,CC0kBxB,4BACC,iBAAkB,CAClB,oBAAqB,CACrB,iBAAkB,CAClB,kBAAmB,CAEnB,qCACC,iBAAkB,CAClB,8CAA+C,CARjD,qDAaE,gCAAiC,CAKjC,yCAA6C,CAJ7C,sEAEC,gCAAiC,CACjC,uCAKD,cAAe,CADf,iDAGC,iBAAkB,CAClB,KAAM,CACN,MAAO,CALR,uGAQC,YAAa,CACb,kBAAmB,CACnB,sBAAuB,CACvB,iBAAkB,CAClB,kBAAmB,CACnB,cAAe,CACf,eAAgB,CAdjB,kDAiBC,SAAU,CAjBX,gHAsBE,SAAU,CAtBZ,kGAyBE,WAAY,CAzBd,6FA8BC,yCAA0C,CAnD7C,qCAwDE,iBAAkB,CAClB,KAAM,CACN,MAAO,CACP,aAAc,CACd,UAAW,CACX,iBAAkB,CAClB,kBAAmB,CACnB,kCAAmC,CA/DrC,gCAoEE,UAAW,CACX,WAAY,CAEZ,gBAAiB,CAvEnB,oDA2EE,iBAAkB,CAClB,UAAW,CACX,WAAY,CACZ,WAAY,CACZ,UAAW,CACX,gBAAiB,CACjB,kCAAmC,CACnC,6CAA8C,CAC9C,6CAA8C,CAC9C,2BAA4B,CAC5B,oBAAqB,CACrB,0BAA2B,CAC3B,iBAAkB,CAElB,gEACC,0CAA2C,CAC3C,8CAA+C,CAC/C,iEAEA,uCAAwC,CACxC,2CAA4C,CA/F/C,4DAmGG,wDAAyE,CAnG5E,yDAsGG,wDAAsE,CACtE,wBAAyB,CAvG5B,0DA0GG,wDAAuE,CA1G1E,0DA6GG,WAAY,CACZ,4BAA6B,CA9GhC,iDAmHE,iBAAkB,CAClB,oBAAqB,CACrB,oCAID,iBAAkB,CAClB,+CAAgD,CAChD,WAAY\",\"sourcesContent\":[\"/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon {\\n\\tdisplay: flex;\\n\\talign-self: center;\\n\\tjustify-self: center;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\",\"$scope_version:\\\"16fd49f\\\"; @import 'variables'; @import 'material-icons';\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.avatardiv {\\n\\tposition: relative;\\n\\tdisplay: inline-block;\\n\\twidth: var(--size);\\n\\theight: var(--size);\\n\\n\\t&--unknown {\\n\\t\\tposition: relative;\\n\\t\\tbackground-color: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t&:not(&--unknown) {\\n\\t\\t// White background for avatars with transparency\\n\\t\\tbackground-color: #fff !important;\\n\\t\\tbody.theme--dark & {\\n\\t\\t\\t// And black background in dark mode, as it shines through on hover of the menu\\n\\t\\t\\tbackground-color: #000 !important;\\n\\t\\t}\\n\\t\\tbox-shadow: 0 0 5px rgba(0, 0, 0, 0.05) inset;\\n\\t}\\n\\n\\t&--with-menu {\\n\\t\\tcursor: pointer;\\n\\t\\t::v-deep .trigger {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tleft: 0;\\n\\t\\t}\\n\\t\\t.icon-more, .icon-loading {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tjustify-content: center;\\n\\t\\t\\twidth: var(--size);\\n\\t\\t\\theight: var(--size);\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\tbackground: none;\\n\\t\\t}\\n\\t\\t.icon-more {\\n\\t\\t\\topacity: 0;\\n\\t\\t}\\n\\t\\t&:focus,\\n\\t\\t&:hover {\\n\\t\\t\\t.icon-more {\\n\\t\\t\\t\\topacity: 1;\\n\\t\\t\\t}\\n\\t\\t\\timg {\\n\\t\\t\\t\\topacity: 0.3;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t.icon-more,\\n\\t\\timg {\\n\\t\\t\\ttransition: opacity var(--animation-quick);\\n\\t\\t}\\n\\t}\\n\\n\\t> .unknown {\\n\\t\\tposition: absolute;\\n\\t\\ttop: 0;\\n\\t\\tleft: 0;\\n\\t\\tdisplay: block;\\n\\t\\twidth: 100%;\\n\\t\\ttext-align: center;\\n\\t\\tfont-weight: normal;\\n\\t\\tcolor: var(--color-main-background);\\n\\t}\\n\\n\\timg {\\n\\t\\t// Cover entire area\\n\\t\\twidth: 100%;\\n\\t\\theight: 100%;\\n\\t\\t// Keep ratio\\n\\t\\tobject-fit: cover;\\n\\t}\\n\\n\\t.avatardiv__user-status {\\n\\t\\tposition: absolute;\\n\\t\\tright: -4px;\\n\\t\\tbottom: -4px;\\n\\t\\theight: 18px;\\n\\t\\twidth: 18px;\\n\\t\\tline-height: 15px;\\n\\t\\tfont-size: var(--default-font-size);\\n\\t\\tborder: 2px solid var(--color-main-background);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\tbackground-size: 16px;\\n\\t\\tbackground-position: center;\\n\\t\\tborder-radius: 50%;\\n\\n\\t\\t.acli:hover & {\\n\\t\\t\\tborder-color: var(--color-background-hover);\\n\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t}\\n\\t\\t.acli.active & {\\n\\t\\t\\tborder-color: var(--color-primary-light);\\n\\t\\t\\tbackground-color: var(--color-primary-light);\\n\\t\\t}\\n\\n\\t\\t&--online{\\n\\t\\t\\tbackground-image: url('../../assets/status-icons/user-status-online.svg');\\n\\t\\t}\\n\\t\\t&--dnd{\\n\\t\\t\\tbackground-image: url('../../assets/status-icons/user-status-dnd.svg');\\n\\t\\t\\tbackground-color: #ffffff;\\n\\t\\t}\\n\\t\\t&--away{\\n\\t\\t\\tbackground-image: url('../../assets/status-icons/user-status-away.svg');\\n\\t\\t}\\n\\t\\t&--icon {\\n\\t\\t\\tborder: none;\\n\\t\\t\\tbackground-color: transparent;\\n\\t\\t}\\n\\t}\\n\\n\\t.popovermenu-wrapper {\\n\\t\\tposition: relative;\\n\\t\\tdisplay: inline-block;\\n\\t}\\n}\\n\\n.avatar-class-icon {\\n\\tborder-radius: 50%;\\n\\tbackground-color: var(--color-background-darker);\\n\\theight: 100%;\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = require(\"escape-html\");","/**\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\n/**\n * Originally taken from https://github.com/nextcloud/server/blob/master/core/js/placeholder.js\n */\n\nfunction Color(r, g, b) {\n\tthis.r = r\n\tthis.g = g\n\tthis.b = b\n}\n\nfunction stepCalc(steps, ends) {\n\tconst step = new Array(3)\n\tstep[0] = (ends[1].r - ends[0].r) / steps\n\tstep[1] = (ends[1].g - ends[0].g) / steps\n\tstep[2] = (ends[1].b - ends[0].b) / steps\n\treturn step\n}\n\nfunction mixPalette(steps, color1, color2) {\n\tconst palette = []\n\tpalette.push(color1)\n\tconst step = stepCalc(steps, [color1, color2])\n\tfor (let i = 1; i < steps; i++) {\n\t\tconst r = parseInt(color1.r + step[0] * i, 10)\n\t\tconst g = parseInt(color1.g + step[1] * i, 10)\n\t\tconst b = parseInt(color1.b + step[2] * i, 10)\n\t\tpalette.push(new Color(r, g, b))\n\t}\n\treturn palette\n}\n\n/**\n * Generate colors from the official nextcloud color\n * You can provide how many colors you want (multiplied by 3)\n * if step = 6\n * 3 colors * 6 will result in 18 generated colors\n *\n * @param {number} [steps=6] Number of steps to go from a color to another\n * @returns {Object[]}\n */\nfunction GenColors(steps) {\n\tif (!steps) {\n\t\tsteps = 6\n\t}\n\n\tconst red = new Color(182, 70, 157)\n\tconst yellow = new Color(221, 203, 85)\n\tconst blue = new Color(0, 130, 201) // Nextcloud blue\n\n\tconst palette1 = mixPalette(steps, red, yellow)\n\tconst palette2 = mixPalette(steps, yellow, blue)\n\tconst palette3 = mixPalette(steps, blue, red)\n\n\treturn palette1.concat(palette2).concat(palette3)\n}\n\nexport default GenColors\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke <georg-nextcloud@ehrke.email>\n *\n * @author Georg Ehrke <georg-nextcloud@ehrke.email>\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\nexport default {\n\tprops: {\n\t\t/**\n\t\t * A class-name or an array of class-names\n\t\t * to be ignored when clicking outside\n\t\t * an element\n\t\t */\n\t\texcludeClickOutsideClasses: {\n\t\t\ttype: String | Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Middleware Handler for V-Click-Outside\n\t\t *\n\t\t * @param {Event} event The click event\n\t\t * @returns {Boolean}\n\t\t */\n\t\tclickOutsideMiddleware(event) {\n\t\t\tconst excludedClassList = Array.isArray(this.excludeClickOutsideClasses)\n\t\t\t\t? this.excludeClickOutsideClasses\n\t\t\t\t: [this.excludeClickOutsideClasses]\n\n\t\t\t// No need to iterate through all parents\n\t\t\t// if class-list is empty\n\t\t\tif (excludedClassList.length === 0) {\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\treturn !this.hasNodeOrAnyParentClass(event.target, excludedClassList)\n\t\t},\n\t\t/**\n\t\t * Checks if given node or any of it's parents have a class of classArray\n\t\t *\n\t\t * @param {Element} node Node to test\n\t\t * @param {Array} classArray List of classes to check for\n\t\t * @returns {Boolean}\n\t\t */\n\t\thasNodeOrAnyParentClass(node, classArray) {\n\t\t\tfor (const className of classArray) {\n\t\t\t\tif (node?.classList?.contains(className)) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn !!node.parentElement && this.hasNodeOrAnyParentClass(node.parentElement, classArray)\n\t\t},\n\t},\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\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tisFullscreen: this._isFullscreen(),\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 fullscreen mode\n\t\t\tthis.isFullscreen = this._isFullscreen()\n\t\t},\n\t\t_isFullscreen() {\n\t\t\t// if the window height is equal to the screen height,\n\t\t\t// we're in full screen mode\n\t\t\treturn window.outerHeight === screen.height\n\t\t},\n\t},\n}\n","module.exports = require(\"@nextcloud/browser-storage\");","export default \"data:image/svg+xml;base64,PCEtLSBUaGlzIGljb24gaXMgcGFydCBvZiBNYXRlcmlhbCBVSSBJY29ucy4gQ29weXJpZ2h0IDIwMjAgR29vZ2xlIEluYy4sIEFwYWNoZS0yLjAgTGljZW5zZSAtLT4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZD0iTTQuOCAxMS4yaDYuNFY0LjhINC44djYuNHpNOCAwQzMuNiAwIDAgMy42IDAgOHMzLjYgOCA4IDggOC0zLjYgOC04LTMuNi04LTgtOHoiIGZpbGw9IiM0OWIzODIiLz48L3N2Zz4K\"","export default \"data:image/svg+xml;base64,PCEtLSBUaGlzIGljb24gaXMgcGFydCBvZiBNYXRlcmlhbCBVSSBJY29ucy4gQ29weXJpZ2h0IDIwMjAgR29vZ2xlIEluYy4sIEFwYWNoZS0yLjAgTGljZW5zZSAtLT4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZD0iTS00LTRoMjR2MjRILTRWLTR6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTggMEMzLjYgMCAwIDMuNiAwIDhzMy42IDggOCA4IDgtMy42IDgtOC0zLjYtOC04LTh6IiBmaWxsPSIjZWQ0ODRjIi8+PHBhdGggZD0iTTUgNi41aDZjLjggMCAxLjUuNyAxLjUgMS41cy0uNyAxLjUtMS41IDEuNUg1Yy0uOCAwLTEuNS0uNy0xLjUtMS41UzQuMiA2LjUgNSA2LjV6IiBmaWxsPSIjZmRmZmZmIi8+PC9zdmc+Cg==\"","export default \"data:image/svg+xml;base64,PCEtLSBUaGlzIGljb24gaXMgcGFydCBvZiBNYXRlcmlhbCBVSSBJY29ucy4gQ29weXJpZ2h0IDIwMjAgR29vZ2xlIEluYy4sIEFwYWNoZS0yLjAgTGljZW5zZSAtLT4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTS00LTRoMjR2MjRILTR6Ii8+PHBhdGggZD0iTTYuOS4xQzMgLjYtLjEgNC0uMSA4YzAgNC40IDMuNiA4IDggOCA0IDAgNy40LTMgOC02LjktMS4yIDEuMy0yLjkgMi4xLTQuNyAyLjEtMy41IDAtNi40LTIuOS02LjQtNi40IDAtMS45LjgtMy42IDIuMS00Ljd6IiBmaWxsPSIjZjRhMzMxIi8+PC9zdmc+Cg==\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',{staticClass:\"popover__menu\"},_vm._l((_vm.menu),function(item,key){return _c('PopoverMenuItem',{key:key,attrs:{\"item\":item}})}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PopoverMenuItem.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!./PopoverMenuItem.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<li class=\"popover__menuitem\">\n\t\t<!-- If item.href is set, a link will be directly used -->\n\t\t<a v-if=\"item.href\"\n\t\t\t:href=\"(item.href) ? item.href : '#' \"\n\t\t\t:target=\"(item.target) ? item.target : '' \"\n\t\t\t:download=\"item.download\"\n\t\t\tclass=\"focusable\"\n\t\t\trel=\"noreferrer noopener\"\n\t\t\t@click=\"action\">\n\t\t\t<span v-if=\"!iconIsUrl\" :class=\"item.icon\" />\n\t\t\t<img v-else :src=\"item.icon\">\n\t\t\t<p v-if=\"item.text && item.longtext\">\n\t\t\t\t<strong class=\"menuitem-text\">\n\t\t\t\t\t{{ item.text }}\n\t\t\t\t</strong><br>\n\t\t\t\t<span class=\"menuitem-text-detail\">\n\t\t\t\t\t{{ item.longtext }}\n\t\t\t\t</span>\n\t\t\t</p>\n\t\t\t<span v-else-if=\"item.text\">\n\t\t\t\t{{ item.text }}\n\t\t\t</span>\n\t\t\t<p v-else-if=\"item.longtext\">\n\t\t\t\t{{ item.longtext }}\n\t\t\t</p>\n\t\t</a>\n\n\t\t<!-- If item.input is set instead, an put will be used -->\n\t\t<span v-else-if=\"item.input\" class=\"menuitem\" :class=\"{active: item.active}\">\n\t\t\t<!-- does not show if input is checkbox -->\n\t\t\t<span v-if=\"item.input !== 'checkbox'\" :class=\"item.icon\" />\n\n\t\t\t<!-- only shows if input is text -->\n\t\t\t<form v-if=\"item.input === 'text'\"\n\t\t\t\t:class=\"item.input\"\n\t\t\t\t@submit.prevent=\"item.action\">\n\t\t\t\t<input :type=\"item.input\"\n\t\t\t\t\t:value=\"item.value\"\n\t\t\t\t\t:placeholder=\"item.text\"\n\t\t\t\t\trequired>\n\t\t\t\t<input type=\"submit\" value=\"\" class=\"icon-confirm\">\n\t\t\t</form>\n\n\t\t\t<!-- checkbox -->\n\t\t\t<template v-else>\n\t\t\t\t<!-- eslint-disable-next-line -->\n\t\t\t\t<input :id=\"key\" v-model=\"item.model\"\n\t\t\t\t\t:type=\"item.input\"\n\t\t\t\t\t:class=\"item.input\"\n\t\t\t\t\t@change=\"item.action\">\n\t\t\t\t<label :for=\"key\" @click.stop.prevent=\"item.action\">\n\t\t\t\t\t{{ item.text }}\n\t\t\t\t</label>\n\t\t\t</template>\n\t\t</span>\n\n\t\t<!-- If item.action is set instead, a button will be used -->\n\t\t<button v-else-if=\"item.action\"\n\t\t\tclass=\"menuitem focusable\"\n\t\t\t:class=\"{active: item.active}\"\n\t\t\t:disabled=\"item.disabled\"\n\t\t\ttype=\"button\"\n\t\t\t@click.stop.prevent=\"item.action\">\n\t\t\t<span :class=\"item.icon\" />\n\t\t\t<p v-if=\"item.text && item.longtext\">\n\t\t\t\t<strong class=\"menuitem-text\">\n\t\t\t\t\t{{ item.text }}\n\t\t\t\t</strong><br>\n\t\t\t\t<span class=\"menuitem-text-detail\">\n\t\t\t\t\t{{ item.longtext }}\n\t\t\t\t</span>\n\t\t\t</p>\n\t\t\t<span v-else-if=\"item.text\">\n\t\t\t\t{{ item.text }}\n\t\t\t</span>\n\t\t\t<p v-else-if=\"item.longtext\">\n\t\t\t\t{{ item.longtext }}\n\t\t\t</p>\n\t\t</button>\n\n\t\t<!-- If item.longtext is set AND the item does not have an action -->\n\t\t<span v-else class=\"menuitem\" :class=\"{active: item.active}\">\n\t\t\t<span :class=\"item.icon\" />\n\t\t\t<p v-if=\"item.text && item.longtext\">\n\t\t\t\t<strong class=\"menuitem-text\">\n\t\t\t\t\t{{ item.text }}\n\t\t\t\t</strong><br>\n\t\t\t\t<span class=\"menuitem-text-detail\">\n\t\t\t\t\t{{ item.longtext }}\n\t\t\t\t</span>\n\t\t\t</p>\n\t\t\t<span v-else-if=\"item.text\">\n\t\t\t\t{{ item.text }}\n\t\t\t</span>\n\t\t\t<p v-else-if=\"item.longtext\">\n\t\t\t\t{{ item.longtext }}\n\t\t\t</p>\n\t\t</span>\n\t</li>\n</template>\n\n<script>\nexport default {\n\tname: 'PopoverMenuItem',\n\tprops: {\n\t\titem: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t\tdefault: () => {\n\t\t\t\treturn {\n\t\t\t\t\tkey: 'nextcloud-link',\n\t\t\t\t\thref: 'https://nextcloud.com',\n\t\t\t\t\ticon: 'icon-links',\n\t\t\t\t\ttext: 'Nextcloud',\n\t\t\t\t}\n\t\t\t},\n\t\t\t// check the input types\n\t\t\t// TODO: add more validation of types\n\t\t\tvalidator: item => {\n\t\t\t\t// TODO: support radio\n\t\t\t\tif (item.input) {\n\t\t\t\t\treturn ['text', 'checkbox'].indexOf(item.input) !== -1\n\t\t\t\t}\n\t\t\t\treturn true\n\t\t\t},\n\t\t},\n\t},\n\tcomputed: {\n\t\t// random key for inputs binding if not provided\n\t\tkey() {\n\t\t\treturn this.item.key\n\t\t\t\t? this.item.key\n\t\t\t\t: Math.round(Math.random() * 16 * 1000000).toString(16)\n\t\t},\n\t\ticonIsUrl() {\n\t\t\ttry {\n\t\t\t\t// eslint-disable-next-line no-new\n\t\t\t\tnew URL(this.item.icon)\n\t\t\t\treturn true\n\t\t\t} catch (_) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\t// allow us to use both link and an action on `a`\n\t\t// we still need to make sure item.action exists\n\t\taction(event) {\n\t\t\tif (this.item.action) {\n\t\t\t\tthis.item.action(event)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\tbutton.menuitem {\n\t\ttext-align: left;\n\t}\n\n\tbutton.menuitem * {\n\t\tcursor: pointer;\n\t}\n\n\tbutton.menuitem:disabled {\n\t\topacity: 0.5 !important;\n\t\tcursor: default;\n\t}\n\n\tbutton.menuitem:disabled * {\n\t\tcursor: default;\n\t}\n\n\t.menuitem.active {\n\t\tbox-shadow: inset 2px 0 var(--color-primary);\n\t\tborder-radius: 0;\n\t}\n</style>\n\n<style lang=\"scss\" scoped>\nli {\n\tdisplay: flex;\n\tflex: 0 0 auto;\n\n\t&.hidden {\n\t\tdisplay: none;\n\t}\n\n\t> button,\n\t> a,\n\t> .menuitem {\n\t\tcursor: pointer;\n\t\tline-height: $clickable-area;\n\t\tborder: 0;\n\t\tborder-radius: 0; // otherwise Safari will cut the border-radius area\n\t\tbackground-color: transparent;\n\t\tdisplay: flex;\n\t\talign-items: flex-start;\n\t\theight: auto;\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\tfont-weight: normal;\n\t\tbox-shadow: none;\n\t\twidth: 100%;\n\t\tcolor: var(--color-main-text);\n\t\twhite-space: nowrap;\n\t\topacity: $opacity_normal;\n\n\t\t// TODO split into individual components for readability\n\t\tspan[class^='icon-'],\n\t\tspan[class*=' icon-'],\n\t\t&[class^='icon-'],\n\t\t&[class*=' icon-'] {\n\t\t\tmin-width: 0; /* Overwrite icons*/\n\t\t\tmin-height: 0;\n\t\t\tbackground-position: #{$icon-margin} center;\n\t\t\tbackground-size: $icon-size;\n\t\t}\n\n\t\tspan[class^='icon-'],\n\t\tspan[class*=' icon-'] {\n\t\t\t/* Keep padding to define the width to\n\t\t\t\tassure correct position of a possible text */\n\t\t\tpadding: #{$clickable-area / 2} 0 #{$clickable-area / 2} $clickable-area;\n\t\t}\n\n\t\t// If no icons set, force left margin to align\n\t\t&:not([class^='icon-']):not([class*='icon-']) {\n\t\t\t> span,\n\t\t\t> input,\n\t\t\t> form {\n\t\t\t\t&:not([class^='icon-']):not([class*='icon-']):first-child {\n\t\t\t\t\tmargin-left: $clickable-area;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&[class^='icon-'],\n\t\t&[class*=' icon-'] {\n\t\t\tpadding: 0 $icon-margin 0 $clickable-area;\n\t\t}\n\n\t\t&:not(:disabled):hover,\n\t\t&:not(:disabled):focus,\n\t\t&:not(:disabled).active {\n\t\t\topacity: $opacity_full !important;\n\t\t}\n\n\t\t/* prevent .action class to break the design */\n\t\t&.action {\n\t\t\tpadding: inherit !important;\n\t\t}\n\n\t\t> span {\n\t\t\tcursor: pointer;\n\t\t\twhite-space: nowrap;\n\t\t}\n\n\t\t// long text area\n\t\t> p {\n\t\t\twidth: 150px;\n\t\t\tline-height: 1.6em;\n\t\t\tpadding: 8px 0;\n\t\t\twhite-space: normal;\n\n\t\t\t// in case there are no spaces like long email addresses\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t}\n\n\t\t// TODO: do we really supports it?\n\t\t> select {\n\t\t\tmargin: 0;\n\t\t\tmargin-left: 6px;\n\t\t}\n\n\t\t/* Add padding if contains icon+text */\n\t\t&:not(:empty) {\n\t\t\tpadding-right: $icon-margin !important;\n\t\t}\n\n\t\t/* DEPRECATED! old img in popover fallback\n\t\t\t* TODO: to remove */\n\t\t> img {\n\t\t\twidth: $icon-size;\n\t\t\tmargin: $icon-margin;\n\t\t}\n\n\t\t/* checkbox/radio fixes */\n\t\t> input.radio + label,\n\t\t> input.checkbox + label {\n\t\t\tpadding: 0 !important;\n\t\t\twidth: 100%;\n\t\t}\n\t\t> input.checkbox + label::before {\n\t\t\tmargin: -2px 13px 0;\n\t\t}\n\t\t> input.radio + label::before {\n\t\t\tmargin: -2px 12px 0;\n\t\t}\n\t\t> input:not([type=radio]):not([type=checkbox]):not([type=image]) {\n\t\t\twidth: 150px;\n\t\t}\n\n\t\t// Forms & text inputs\n\t\tform {\n\t\t\tdisplay: flex;\n\t\t\tflex: 1 1 auto;\n\t\t\t/* put a small space between text and form\n\t\t\t\tif there is an element before */\n\t\t\t&:not(:first-child) {\n\t\t\t\tmargin-left: 5px;\n\t\t\t}\n\t\t}\n\t\t/* no margin if hidden span before */\n\t\t> span.hidden + form,\n\t\t> span[style*='display:none'] + form {\n\t\t\tmargin-left: 0;\n\t\t}\n\t\t/* Inputs inside popover supports text, submit & reset */\n\t\tinput {\n\t\t\tmin-width: $clickable-area;\n\t\t\tmax-height: #{$clickable-area - 4px}; /* twice the element margin-y */\n\t\t\tmargin: 2px 0;\n\t\t\tflex: 1 1 auto;\n\t\t\t// space between inline inputs\n\t\t\t&:not(:first-child) {\n\t\t\t\tmargin-left: 5px;\n\t\t\t}\n\t\t}\n\t}\n\n\t// TODO: do that in js, should be cleaner\n\t/* css hack, only first not hidden */\n\t&:not(.hidden):not([style*='display:none']) {\n\t\t&:first-of-type {\n\t\t\t> button, > a, > .menuitem {\n\t\t\t\t> form, > input {\n\t\t\t\t\tmargin-top: $icon-margin - 2px; // minus the input margin\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t&:last-of-type {\n\t\t\t> button, > a, > .menuitem {\n\t\t\t\t> form, > input {\n\t\t\t\t\tmargin-bottom: $icon-margin - 2px; // minus the input margin\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t> button {\n\t\tpadding: 0;\n\t\tspan {\n\t\t\topacity: $opacity_full;\n\t\t}\n\t}\n}\n</style>\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PopoverMenuItem.vue?vue&type=style&index=0&id=2d3b91c8&scoped=true&lang=css&\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PopoverMenuItem.vue?vue&type=style&index=1&id=2d3b91c8&lang=scss&scoped=true&\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PopoverMenu.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!./PopoverMenu.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<docs>\n\tThis component is deprecated. Please use the [Actions](#/Components?id=actions-1) component instead.\n</docs>\n\n<template>\n\t<ul class=\"popover__menu\">\n\t\t<PopoverMenuItem v-for=\"(item, key) in menu\" :key=\"key\" :item=\"item\" />\n\t</ul>\n</template>\n\n<script>\nimport PopoverMenuItem from './PopoverMenuItem'\n\nexport default {\n\tname: 'PopoverMenu',\n\tcomponents: {\n\t\tPopoverMenuItem,\n\t},\n\tprops: {\n\t\tmenu: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => {\n\t\t\t\treturn [{\n\t\t\t\t\thref: 'https://nextcloud.com',\n\t\t\t\t\ticon: 'icon-links',\n\t\t\t\t\ttext: 'Nextcloud',\n\t\t\t\t}]\n\t\t\t},\n\t\t\trequired: true,\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nul {\n\tdisplay: flex;\n\tflex-direction: column;\n}\n</style>\n","import { render, staticRenderFns } from \"./PopoverMenuItem.vue?vue&type=template&id=2d3b91c8&scoped=true&\"\nimport script from \"./PopoverMenuItem.vue?vue&type=script&lang=js&\"\nexport * from \"./PopoverMenuItem.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PopoverMenuItem.vue?vue&type=style&index=0&id=2d3b91c8&scoped=true&lang=css&\"\nimport style1 from \"./PopoverMenuItem.vue?vue&type=style&index=1&id=2d3b91c8&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2d3b91c8\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{staticClass:\"popover__menuitem\"},[(_vm.item.href)?_c('a',{staticClass:\"focusable\",attrs:{\"href\":(_vm.item.href) ? _vm.item.href : '#',\"target\":(_vm.item.target) ? _vm.item.target : '',\"download\":_vm.item.download,\"rel\":\"noreferrer noopener\"},on:{\"click\":_vm.action}},[(!_vm.iconIsUrl)?_c('span',{class:_vm.item.icon}):_c('img',{attrs:{\"src\":_vm.item.icon}}),_vm._v(\" \"),(_vm.item.text && _vm.item.longtext)?_c('p',[_c('strong',{staticClass:\"menuitem-text\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.item.text)+\"\\n\\t\\t\\t\")]),_c('br'),_vm._v(\" \"),_c('span',{staticClass:\"menuitem-text-detail\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.item.longtext)+\"\\n\\t\\t\\t\")])]):(_vm.item.text)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.item.text)+\"\\n\\t\\t\")]):(_vm.item.longtext)?_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.item.longtext)+\"\\n\\t\\t\")]):_vm._e()]):(_vm.item.input)?_c('span',{staticClass:\"menuitem\",class:{active: _vm.item.active}},[(_vm.item.input !== 'checkbox')?_c('span',{class:_vm.item.icon}):_vm._e(),_vm._v(\" \"),(_vm.item.input === 'text')?_c('form',{class:_vm.item.input,on:{\"submit\":function($event){$event.preventDefault();return _vm.item.action($event)}}},[_c('input',{attrs:{\"type\":_vm.item.input,\"placeholder\":_vm.item.text,\"required\":\"\"},domProps:{\"value\":_vm.item.value}}),_vm._v(\" \"),_c('input',{staticClass:\"icon-confirm\",attrs:{\"type\":\"submit\",\"value\":\"\"}})]):[((_vm.item.input)==='checkbox')?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.item.model),expression:\"item.model\"}],class:_vm.item.input,attrs:{\"id\":_vm.key,\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.item.model)?_vm._i(_vm.item.model,null)>-1:(_vm.item.model)},on:{\"change\":[function($event){var $$a=_vm.item.model,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.item, \"model\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.item, \"model\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.item, \"model\", $$c)}},_vm.item.action]}}):((_vm.item.input)==='radio')?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.item.model),expression:\"item.model\"}],class:_vm.item.input,attrs:{\"id\":_vm.key,\"type\":\"radio\"},domProps:{\"checked\":_vm._q(_vm.item.model,null)},on:{\"change\":[function($event){return _vm.$set(_vm.item, \"model\", null)},_vm.item.action]}}):_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.item.model),expression:\"item.model\"}],class:_vm.item.input,attrs:{\"id\":_vm.key,\"type\":_vm.item.input},domProps:{\"value\":(_vm.item.model)},on:{\"change\":_vm.item.action,\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.item, \"model\", $event.target.value)}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":_vm.key},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.item.action($event)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.item.text)+\"\\n\\t\\t\\t\")])]],2):(_vm.item.action)?_c('button',{staticClass:\"menuitem focusable\",class:{active: _vm.item.active},attrs:{\"disabled\":_vm.item.disabled,\"type\":\"button\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.item.action($event)}}},[_c('span',{class:_vm.item.icon}),_vm._v(\" \"),(_vm.item.text && _vm.item.longtext)?_c('p',[_c('strong',{staticClass:\"menuitem-text\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.item.text)+\"\\n\\t\\t\\t\")]),_c('br'),_vm._v(\" \"),_c('span',{staticClass:\"menuitem-text-detail\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.item.longtext)+\"\\n\\t\\t\\t\")])]):(_vm.item.text)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.item.text)+\"\\n\\t\\t\")]):(_vm.item.longtext)?_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.item.longtext)+\"\\n\\t\\t\")]):_vm._e()]):_c('span',{staticClass:\"menuitem\",class:{active: _vm.item.active}},[_c('span',{class:_vm.item.icon}),_vm._v(\" \"),(_vm.item.text && _vm.item.longtext)?_c('p',[_c('strong',{staticClass:\"menuitem-text\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.item.text)+\"\\n\\t\\t\\t\")]),_c('br'),_vm._v(\" \"),_c('span',{staticClass:\"menuitem-text-detail\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.item.longtext)+\"\\n\\t\\t\\t\")])]):(_vm.item.text)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.item.text)+\"\\n\\t\\t\")]):(_vm.item.longtext)?_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.item.longtext)+\"\\n\\t\\t\")]):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PopoverMenu.vue?vue&type=style&index=0&id=4dae360a&lang=scss&scoped=true&\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import { render, staticRenderFns } from \"./PopoverMenu.vue?vue&type=template&id=4dae360a&scoped=true&\"\nimport script from \"./PopoverMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./PopoverMenu.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PopoverMenu.vue?vue&type=style&index=0&id=4dae360a&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4dae360a\",\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./PopoverMenu.vue?vue&type=custom&index=0&blockType=docs\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport PopoverMenu from './PopoverMenu'\n\nexport default PopoverMenu\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',_vm._g({directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(_vm.tooltip),expression:\"tooltip\"},{name:\"click-outside\",rawName:\"v-click-outside\",value:(_vm.closeMenu),expression:\"closeMenu\"}],ref:\"main\",staticClass:\"avatardiv popovermenu-wrapper\",class:{\n\t\t'avatardiv--unknown': _vm.userDoesNotExist,\n\t\t'avatardiv--with-menu': _vm.hasMenu\n\t},style:(_vm.avatarStyle),attrs:{\"tabindex\":_vm.disableMenu ? '-1' : '0',\"aria-label\":_vm.avatarAriaLabel,\"role\":_vm.disableMenu ? '' : 'button'},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.toggleMenu($event)}}},!_vm.disableMenu ? { click: _vm.toggleMenu } : {}),[(_vm.iconClass)?_c('div',{staticClass:\"avatar-class-icon\",class:_vm.iconClass}):(_vm.isAvatarLoaded && !_vm.userDoesNotExist)?_c('img',{attrs:{\"src\":_vm.avatarUrlLoaded,\"srcset\":_vm.avatarSrcSetLoaded,\"alt\":\"\"}}):_vm._e(),_vm._v(\" \"),(_vm.hasMenu)?_c('Popover',{attrs:{\"placement\":\"auto\",\"container\":_vm.menuContainer,\"open\":_vm.contactsMenuOpenState},on:{\"after-show\":_vm.handlePopoverAfterShow,\"after-hide\":_vm.handlePopoverAfterHide},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [(_vm.contactsMenuLoading)?_c('div',{staticClass:\"icon-loading\"}):_c('DotsHorizontal',{staticClass:\"icon-more\",attrs:{\"size\":20,\"title\":\"\",\"decorative\":\"\"}})]},proxy:true}],null,false,2015540072)},[_c('PopoverMenu',{ref:\"popoverMenu\",attrs:{\"menu\":_vm.menu}})],1):_vm._e(),_vm._v(\" \"),(_vm.showUserStatusIconOnAvatar)?_c('div',{staticClass:\"avatardiv__user-status avatardiv__user-status--icon\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.userStatus.icon)+\"\\n\\t\")]):(_vm.canDisplayUserStatus)?_c('div',{staticClass:\"avatardiv__user-status\",class:'avatardiv__user-status--' + _vm.userStatus.status}):_vm._e(),_vm._v(\" \"),(_vm.userDoesNotExist && !_vm.iconClass)?_c('div',{staticClass:\"unknown\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.initials)+\"\\n\\t\")]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<docs>\n\n### Basic user avatar\n\n```vue\n\t<avatar user=\"janedoe\" display-name=\"Jane Doe\" />\n```\n\n### Avatar with image\n\n```vue\n\t<avatar url=\"https://nextcloud.com/wp-content/themes/next/assets/img/common/nextcloud-square-logo.png\" />\n```\n\n</docs>\n<template>\n\t<div\n\t\tref=\"main\"\n\t\tv-tooltip=\"tooltip\"\n\t\tv-click-outside=\"closeMenu\"\n\t\t:class=\"{\n\t\t\t'avatardiv--unknown': userDoesNotExist,\n\t\t\t'avatardiv--with-menu': hasMenu\n\t\t}\"\n\t\t:style=\"avatarStyle\"\n\t\tclass=\"avatardiv popovermenu-wrapper\"\n\t\t:tabindex=\"disableMenu ? '-1' : '0'\"\n\t\t:aria-label=\"avatarAriaLabel\"\n\t\t:role=\"disableMenu ? '' : 'button'\"\n\t\tv-on=\"!disableMenu ? { click: toggleMenu } : {}\"\n\t\t@keydown.enter=\"toggleMenu\">\n\t\t<!-- Avatar icon or image -->\n\t\t<div v-if=\"iconClass\" :class=\"iconClass\" class=\"avatar-class-icon\" />\n\t\t<img v-else-if=\"isAvatarLoaded && !userDoesNotExist\"\n\t\t\t:src=\"avatarUrlLoaded\"\n\t\t\t:srcset=\"avatarSrcSetLoaded\"\n\t\t\talt=\"\">\n\n\t\t<!-- Contact menu -->\n\t\t<Popover\n\t\t\tv-if=\"hasMenu\"\n\t\t\tplacement=\"auto\"\n\t\t\t:container=\"menuContainer\"\n\t\t\t:open=\"contactsMenuOpenState\"\n\t\t\t@after-show=\"handlePopoverAfterShow\"\n\t\t\t@after-hide=\"handlePopoverAfterHide\">\n\t\t\t<PopoverMenu ref=\"popoverMenu\" :menu=\"menu\" />\n\t\t\t<template #trigger>\n\t\t\t\t<div v-if=\"contactsMenuLoading\" class=\"icon-loading\" />\n\t\t\t\t<DotsHorizontal v-else\n\t\t\t\t\t:size=\"20\"\n\t\t\t\t\tclass=\"icon-more\"\n\t\t\t\t\ttitle=\"\"\n\t\t\t\t\tdecorative />\n\t\t\t</template>\n\t\t</Popover>\n\n\t\t<!-- Avatar status -->\n\t\t<div v-if=\"showUserStatusIconOnAvatar\" class=\"avatardiv__user-status avatardiv__user-status--icon\">\n\t\t\t{{ userStatus.icon }}\n\t\t</div>\n\t\t<div v-else-if=\"canDisplayUserStatus\"\n\t\t\tclass=\"avatardiv__user-status\"\n\t\t\t:class=\"'avatardiv__user-status--' + userStatus.status\" />\n\n\t\t<!-- Show the letter if no avatar nor icon class -->\n\t\t<div v-if=\"userDoesNotExist && !iconClass\" class=\"unknown\">\n\t\t\t{{ initials }}\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport DotsHorizontal from 'vue-material-design-icons/DotsHorizontal'\n\nimport { directive as ClickOutside } from 'v-click-outside'\nimport { generateUrl } from '@nextcloud/router'\nimport { getBuilder } from '@nextcloud/browser-storage'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport axios from '@nextcloud/axios'\n\nimport PopoverMenu from '../PopoverMenu'\nimport Tooltip from '../../directives/Tooltip'\nimport usernameToColor from '../../functions/usernameToColor'\nimport { userStatus } from '../../mixins'\nimport { t } from '../../l10n'\nimport Popover from '../Popover/Popover'\n\nconst browserStorage = getBuilder('nextcloud').persist().build()\n\nfunction getUserHasAvatar(userId) {\n\tconst flag = browserStorage.getItem('user-has-avatar.' + userId)\n\tif (typeof flag === 'string') {\n\t\treturn Boolean(flag)\n\t}\n\treturn null\n}\n\nfunction setUserHasAvatar(userId, flag) {\n\tif (userId) {\n\t\tbrowserStorage.setItem('user-has-avatar.' + userId, flag)\n\t}\n}\n\nexport default {\n\tname: 'Avatar',\n\n\tdirectives: {\n\t\ttooltip: Tooltip,\n\t\tClickOutside,\n\t},\n\tcomponents: {\n\t\tDotsHorizontal,\n\t\tPopover,\n\t\tPopoverMenu,\n\t},\n\tmixins: [userStatus],\n\tprops: {\n\t\t/**\n\t\t * Set a custom url to the avatar image\n\t\t * either the url, user or displayName property must be defined\n\t\t */\n\t\turl: {\n\t\t\ttype: String,\n\t\t\tdefault: undefined,\n\t\t},\n\t\t/**\n\t\t * Set a css icon-class for an icon to be used instead of the avatar.\n\t\t */\n\t\ticonClass: {\n\t\t\ttype: String,\n\t\t\tdefault: undefined,\n\t\t},\n\t\t/**\n\t\t * Set the user id to fetch the avatar\n\t\t * either the url, user or displayName property must be defined\n\t\t */\n\t\tuser: {\n\t\t\ttype: String,\n\t\t\tdefault: undefined,\n\t\t},\n\t\t/**\n\t\t * Whether or not to display the user-status\n\t\t */\n\t\tshowUserStatus: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\t/**\n\t\t * Whether or not to the status-icon should be used instead of online/away\n\t\t */\n\t\tshowUserStatusCompact: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\t/**\n\t\t * When the user status was preloaded via another source it can be handed in with this property to save the request.\n\t\t * If this property is not set the status will be fetched automatically.\n\t\t * If a preloaded no-status is available provide this object with properties \"status\", \"icon\" and \"message\" set to null.\n\t\t */\n\t\tpreloadedUserStatus: {\n\t\t\ttype: Object,\n\t\t\tdefault: undefined,\n\t\t},\n\t\t/**\n\t\t * Is the user a guest user (then we have to user a different endpoint)\n\t\t */\n\t\tisGuest: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t/**\n\t\t * Set a display name that will be rendered as a tooltip\n\t\t * either the url, user or displayName property must be defined\n\t\t * specify just the displayname to generate a placeholder avatar without\n\t\t * trying to fetch the avatar based on the user id\n\t\t */\n\t\tdisplayName: {\n\t\t\ttype: String,\n\t\t\tdefault: undefined,\n\t\t},\n\t\t/**\n\t\t * Set a size in px for the rendered avatar\n\t\t */\n\t\tsize: {\n\t\t\ttype: Number,\n\t\t\tdefault: 32,\n\t\t},\n\t\t/**\n\t\t * Placeholder avatars will be automatically generated when this is set to true\n\t\t */\n\t\tallowPlaceholder: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\t/**\n\t\t * Disable the tooltip\n\t\t */\n\t\tdisableTooltip: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t/**\n\t\t * Disable the menu\n\t\t */\n\t\tdisableMenu: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t/**\n\t\t * Declares a custom tooltip when not null\n\t\t * Fallback will be the displayName\n\t\t *\n\t\t * requires disableTooltip not to be set to true\n\t\t */\n\t\ttooltipMessage: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * Declares username is not a user's name, when true.\n\t\t * Prevents loading user's avatar from server and forces generating colored initials,\n\t\t * i.e. if the user is a group\n\t\t */\n\t\tisNoUser: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Choose the avatar menu alignment.\n\t\t * Possible values are `left`, `center`, `right`.\n\t\t */\n\t\tmenuPosition: {\n\t\t\ttype: String,\n\t\t\tdefault: 'center',\n\t\t},\n\n\t\t/**\n\t\t * Selector for the popover menu container\n\t\t */\n\t\tmenuContainer: {\n\t\t\ttype: String,\n\t\t\tdefault: 'body',\n\t\t},\n\n\t\tariaLabel: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tavatarUrlLoaded: null,\n\t\t\tavatarSrcSetLoaded: null,\n\t\t\tuserDoesNotExist: false,\n\t\t\tisAvatarLoaded: false,\n\t\t\tisMenuLoaded: false,\n\t\t\tcontactsMenuLoading: false,\n\t\t\tcontactsMenuActions: [],\n\t\t\tcontactsMenuOpenState: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tavatarAriaLabel() {\n\t\t\tif (this.ariaLabel !== null) {\n\t\t\t\treturn this.ariaLabel\n\t\t\t}\n\n\t\t\treturn t('Avatar of {displayName}', { displayName: this.displayName || this.userId })\n\t\t},\n\n\t\tcanDisplayUserStatus() {\n\t\t\treturn this.showUserStatus\n\t\t\t\t&& this.hasStatus\n\t\t\t\t&& ['online', 'away', 'dnd'].includes(this.userStatus.status)\n\t\t},\n\t\tshowUserStatusIconOnAvatar() {\n\t\t\treturn this.showUserStatus\n\t\t\t\t&& this.showUserStatusCompact\n\t\t\t\t&& this.hasStatus\n\t\t\t\t&& this.userStatus.status !== 'dnd'\n\t\t\t\t&& this.userStatus.icon\n\t\t},\n\t\tgetUserIdentifier() {\n\t\t\tif (this.isDisplayNameDefined) {\n\t\t\t\treturn this.displayName\n\t\t\t}\n\t\t\tif (this.isUserDefined) {\n\t\t\t\treturn this.user\n\t\t\t}\n\t\t\treturn ''\n\t\t},\n\t\tisUserDefined() {\n\t\t\treturn typeof this.user !== 'undefined'\n\t\t},\n\t\tisDisplayNameDefined() {\n\t\t\treturn typeof this.displayName !== 'undefined'\n\t\t},\n\t\tisUrlDefined() {\n\t\t\treturn typeof this.url !== 'undefined'\n\t\t},\n\t\thasMenu() {\n\t\t\tif (this.disableMenu) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif (this.isMenuLoaded) {\n\t\t\t\treturn this.menu.length > 0\n\t\t\t}\n\t\t\treturn !(this.user === getCurrentUser()?.uid || this.userDoesNotExist || this.url)\n\t\t},\n\t\tshouldShowPlaceholder() {\n\t\t\treturn this.allowPlaceholder && (\n\t\t\t\tthis.userDoesNotExist)\n\t\t},\n\t\tavatarStyle() {\n\t\t\tconst style = {\n\t\t\t\t'--size': this.size + 'px',\n\t\t\t\tlineHeight: this.size + 'px',\n\t\t\t\tfontSize: Math.round(this.size * 0.55) + 'px',\n\t\t\t}\n\n\t\t\tif (!this.iconClass && !this.avatarSrcSetLoaded) {\n\t\t\t\tconst rgb = usernameToColor(this.getUserIdentifier)\n\t\t\t\tstyle.backgroundColor = 'rgb(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ')'\n\t\t\t}\n\t\t\treturn style\n\t\t},\n\t\ttooltip() {\n\t\t\tif (this.disableTooltip) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif (this.tooltipMessage) {\n\t\t\t\treturn this.tooltipMessage\n\t\t\t}\n\n\t\t\treturn this.displayName\n\t\t},\n\t\tinitials() {\n\t\t\tlet initials\n\t\t\tif (this.shouldShowPlaceholder) {\n\t\t\t\tconst user = this.getUserIdentifier\n\t\t\t\tconst idx = user.indexOf(' ')\n\t\t\t\tif (user === '') {\n\t\t\t\t\tinitials = '?'\n\t\t\t\t} else {\n\t\t\t\t\tinitials = String.fromCodePoint(user.codePointAt(0))\n\t\t\t\t\tif (idx !== -1) {\n\t\t\t\t\t\tinitials = initials.concat(String.fromCodePoint(user.codePointAt(idx + 1)))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn initials.toUpperCase()\n\t\t},\n\t\tmenu() {\n\t\t\tconst actions = this.contactsMenuActions.map((item) => {\n\t\t\t\treturn {\n\t\t\t\t\thref: item.hyperlink,\n\t\t\t\t\ticon: item.icon,\n\t\t\t\t\tlongtext: item.title,\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tfunction escape(html) {\n\t\t\t\tconst text = document.createTextNode(html)\n\t\t\t\tconst p = document.createElement('p')\n\t\t\t\tp.appendChild(text)\n\t\t\t\treturn p.innerHTML\n\t\t\t}\n\n\t\t\tif (this.showUserStatus && (this.userStatus.icon || this.userStatus.message)) {\n\t\t\t\treturn [{\n\t\t\t\t\thref: '#',\n\t\t\t\t\ticon: `data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg'><text x='0' y='14' font-size='14'>${escape(this.userStatus.icon)}</text></svg>`,\n\t\t\t\t\ttext: `${this.userStatus.message}`,\n\t\t\t\t}].concat(actions)\n\t\t\t}\n\n\t\t\treturn actions\n\t\t},\n\t},\n\n\twatch: {\n\t\turl() {\n\t\t\tthis.userDoesNotExist = false\n\t\t\tthis.loadAvatarUrl()\n\t\t},\n\t\tuser() {\n\t\t\tthis.userDoesNotExist = false\n\t\t\tthis.isMenuLoaded = false\n\t\t\tthis.loadAvatarUrl()\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.loadAvatarUrl()\n\t\tif (this.showUserStatus && this.user && !this.isNoUser) {\n\t\t\tif (!this.preloadedUserStatus) {\n\t\t\t\tthis.fetchUserStatus(this.user)\n\t\t\t} else {\n\t\t\t\tthis.userStatus.status = this.preloadedUserStatus.status || ''\n\t\t\t\tthis.userStatus.message = this.preloadedUserStatus.message || ''\n\t\t\t\tthis.userStatus.icon = this.preloadedUserStatus.icon || ''\n\t\t\t\tthis.hasStatus = this.preloadedUserStatus.status !== null\n\t\t\t}\n\t\t\tsubscribe('user_status:status.updated', this.handleUserStatusUpdated)\n\t\t}\n\t},\n\n\tbeforeDestroyed() {\n\t\tif (this.showUserStatus && this.user && !this.isNoUser) {\n\t\t\tunsubscribe('user_status:status.updated', this.handleUserStatusUpdated)\n\t\t}\n\t},\n\n\tmethods: {\n\t\thandlePopoverAfterShow() {\n\t\t\tconst links = this.$refs.popoverMenu.$el.getElementsByTagName('a')\n\t\t\tif (links.length) {\n\t\t\t\tlinks[0].focus()\n\t\t\t}\n\t\t},\n\t\thandlePopoverAfterHide() {\n\t\t\t// bring focus back to the trigger\n\t\t\tthis.$refs.main.focus()\n\t\t},\n\t\thandleUserStatusUpdated(state) {\n\t\t\tif (this.user === state.userId) {\n\t\t\t\tthis.userStatus = {\n\t\t\t\t\tstatus: state.status,\n\t\t\t\t\ticon: state.icon,\n\t\t\t\t\tmessage: state.message,\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tasync toggleMenu() {\n\t\t\tif (!this.hasMenu) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (!this.contactsMenuOpenState) {\n\t\t\t\tawait this.fetchContactsMenu()\n\t\t\t}\n\t\t\tthis.contactsMenuOpenState = !this.contactsMenuOpenState\n\t\t},\n\t\tcloseMenu() {\n\t\t\tthis.contactsMenuOpenState = false\n\t\t},\n\t\tasync fetchContactsMenu() {\n\t\t\tthis.contactsMenuLoading = true\n\t\t\ttry {\n\t\t\t\tconst user = encodeURIComponent(this.user)\n\t\t\t\tconst { data } = await axios.post(generateUrl('contactsmenu/findOne'), `shareType=0&shareWith=${user}`)\n\t\t\t\tthis.contactsMenuActions = data.topAction ? [data.topAction].concat(data.actions) : data.actions\n\t\t\t} catch (e) {\n\t\t\t\tthis.contactsMenuOpenState = false\n\t\t\t}\n\t\t\tthis.contactsMenuLoading = false\n\t\t\tthis.isMenuLoaded = true\n\t\t},\n\n\t\t/**\n\t\t * Handle avatar loading if user or url defined\n\t\t */\n\t\tloadAvatarUrl() {\n\t\t\tthis.isAvatarLoaded = false\n\n\t\t\t/** Only run avatar image loading if either user or url property is defined */\n\t\t\tif (!this.isUrlDefined && (!this.isUserDefined || this.isNoUser)) {\n\t\t\t\tthis.isAvatarLoaded = true\n\t\t\t\tthis.userDoesNotExist = true\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Directly use the url if defined\n\t\t\tif (this.isUrlDefined) {\n\t\t\t\tthis.updateImageIfValid(this.url)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst avatarUrl = this.avatarUrlGenerator(this.user, this.size)\n\t\t\tconst srcset = [\n\t\t\t\tavatarUrl + ' 1x',\n\t\t\t\tthis.avatarUrlGenerator(this.user, this.size * 2) + ' 2x',\n\t\t\t\tthis.avatarUrlGenerator(this.user, this.size * 4) + ' 4x',\n\t\t\t].join(', ')\n\n\t\t\tthis.updateImageIfValid(avatarUrl, srcset)\n\t\t},\n\n\t\t/**\n\t\t * Generate an avatar url from the server's avatar endpoint\n\t\t *\n\t\t * @param {string} user the user id\n\t\t * @param {number} size the desired size\n\t\t * @returns {string}\n\t\t */\n\t\tavatarUrlGenerator(user, size) {\n\t\t\tlet url = '/avatar/{user}/{size}'\n\t\t\tif (this.isGuest) {\n\t\t\t\turl = '/avatar/guest/{user}/{size}'\n\t\t\t}\n\n\t\t\tlet avatarUrl = generateUrl(\n\t\t\t\turl,\n\t\t\t\t{\n\t\t\t\t\tuser,\n\t\t\t\t\tsize,\n\t\t\t\t})\n\n\t\t\t// eslint-disable-next-line camelcase\n\t\t\tif (user === getCurrentUser()?.uid && typeof oc_userconfig !== 'undefined') {\n\t\t\t\tavatarUrl += '?v=' + oc_userconfig.avatar.version\n\t\t\t}\n\n\t\t\treturn avatarUrl\n\t\t},\n\n\t\t/**\n\t\t * Check if the provided url is valid and update Avatar if so\n\t\t *\n\t\t * @param {string} url the avatar url\n\t\t * @param {array} srcset the avatar srcset\n\t\t */\n\t\tupdateImageIfValid(url, srcset = null) {\n\t\t\t// skip loading\n\t\t\tconst userHasAvatar = getUserHasAvatar(this.user)\n\t\t\tif (this.isUserDefined && typeof userHasAvatar === 'boolean') {\n\t\t\t\tthis.isAvatarLoaded = true\n\t\t\t\tthis.avatarUrlLoaded = url\n\t\t\t\tif (srcset) {\n\t\t\t\t\tthis.avatarSrcSetLoaded = srcset\n\t\t\t\t}\n\t\t\t\tif (userHasAvatar === false) {\n\t\t\t\t\tthis.userDoesNotExist = true\n\t\t\t\t}\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst img = new Image()\n\t\t\timg.onload = () => {\n\t\t\t\tthis.avatarUrlLoaded = url\n\t\t\t\tif (srcset) {\n\t\t\t\t\tthis.avatarSrcSetLoaded = srcset\n\t\t\t\t}\n\t\t\t\tthis.isAvatarLoaded = true\n\t\t\t\t// re-get to avoid concurrent access\n\t\t\t\tsetUserHasAvatar(this.user, true)\n\t\t\t}\n\t\t\timg.onerror = () => {\n\t\t\t\tconsole.debug('Invalid avatar url', url)\n\t\t\t\t// Avatar is invalid, reset\n\t\t\t\tthis.avatarUrlLoaded = null\n\t\t\t\tthis.avatarSrcSetLoaded = null\n\n\t\t\t\tthis.userDoesNotExist = true\n\t\t\t\tthis.isAvatarLoaded = false\n\t\t\t\tsetUserHasAvatar(this.user, false)\n\t\t\t}\n\n\t\t\tif (srcset) {\n\t\t\t\timg.srcset = srcset\n\t\t\t}\n\t\t\timg.src = url\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.avatardiv {\n\tposition: relative;\n\tdisplay: inline-block;\n\twidth: var(--size);\n\theight: var(--size);\n\n\t&--unknown {\n\t\tposition: relative;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t}\n\n\t&:not(&--unknown) {\n\t\t// White background for avatars with transparency\n\t\tbackground-color: #fff !important;\n\t\tbody.theme--dark & {\n\t\t\t// And black background in dark mode, as it shines through on hover of the menu\n\t\t\tbackground-color: #000 !important;\n\t\t}\n\t\tbox-shadow: 0 0 5px rgba(0, 0, 0, 0.05) inset;\n\t}\n\n\t&--with-menu {\n\t\tcursor: pointer;\n\t\t::v-deep .trigger {\n\t\t\tposition: absolute;\n\t\t\ttop: 0;\n\t\t\tleft: 0;\n\t\t}\n\t\t.icon-more, .icon-loading {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\twidth: var(--size);\n\t\t\theight: var(--size);\n\t\t\tcursor: pointer;\n\t\t\tbackground: none;\n\t\t}\n\t\t.icon-more {\n\t\t\topacity: 0;\n\t\t}\n\t\t&:focus,\n\t\t&:hover {\n\t\t\t.icon-more {\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t\timg {\n\t\t\t\topacity: 0.3;\n\t\t\t}\n\t\t}\n\t\t.icon-more,\n\t\timg {\n\t\t\ttransition: opacity var(--animation-quick);\n\t\t}\n\t}\n\n\t> .unknown {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\ttext-align: center;\n\t\tfont-weight: normal;\n\t\tcolor: var(--color-main-background);\n\t}\n\n\timg {\n\t\t// Cover entire area\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\t// Keep ratio\n\t\tobject-fit: cover;\n\t}\n\n\t.avatardiv__user-status {\n\t\tposition: absolute;\n\t\tright: -4px;\n\t\tbottom: -4px;\n\t\theight: 18px;\n\t\twidth: 18px;\n\t\tline-height: 15px;\n\t\tfont-size: var(--default-font-size);\n\t\tborder: 2px solid var(--color-main-background);\n\t\tbackground-color: var(--color-main-background);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-size: 16px;\n\t\tbackground-position: center;\n\t\tborder-radius: 50%;\n\n\t\t.acli:hover & {\n\t\t\tborder-color: var(--color-background-hover);\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t}\n\t\t.acli.active & {\n\t\t\tborder-color: var(--color-primary-light);\n\t\t\tbackground-color: var(--color-primary-light);\n\t\t}\n\n\t\t&--online{\n\t\t\tbackground-image: url('../../assets/status-icons/user-status-online.svg');\n\t\t}\n\t\t&--dnd{\n\t\t\tbackground-image: url('../../assets/status-icons/user-status-dnd.svg');\n\t\t\tbackground-color: #ffffff;\n\t\t}\n\t\t&--away{\n\t\t\tbackground-image: url('../../assets/status-icons/user-status-away.svg');\n\t\t}\n\t\t&--icon {\n\t\t\tborder: none;\n\t\t\tbackground-color: transparent;\n\t\t}\n\t}\n\n\t.popovermenu-wrapper {\n\t\tposition: relative;\n\t\tdisplay: inline-block;\n\t}\n}\n\n.avatar-class-icon {\n\tborder-radius: 50%;\n\tbackground-color: var(--color-background-darker);\n\theight: 100%;\n}\n\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Avatar.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!./Avatar.vue?vue&type=script&lang=js&\"","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Avatar.vue?vue&type=style&index=0&id=13c68150&scoped=true&lang=scss&\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import { render, staticRenderFns } from \"./Avatar.vue?vue&type=template&id=13c68150&scoped=true&\"\nimport script from \"./Avatar.vue?vue&type=script&lang=js&\"\nexport * from \"./Avatar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Avatar.vue?vue&type=style&index=0&id=13c68150&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"13c68150\",\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./Avatar.vue?vue&type=custom&index=0&blockType=docs\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","/**\n * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Avatar from './Avatar'\n\nexport default Avatar\n","module.exports = require(\"md5\");","module.exports = require(\"@nextcloud/capabilities\");","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport md5 from 'md5'\nimport GenColors from '../../utils/GenColors'\n\n/**\n * Originally taken from https://github.com/nextcloud/server/blob/master/core/js/placeholder.js\n * @param {string} username Display name or user id to generate from\n * @returns {Object} the rgb colors as {r:255, g:255, b:255}\n */\nconst usernameToColor = function(username) {\n\t// Normalize hash\n\tlet hash = username.toLowerCase()\n\n\t// Already a md5 hash?\n\tif (hash.match(/^([0-9a-f]{4}-?){8}$/) === null) {\n\t\thash = md5(hash)\n\t}\n\n\thash = hash.replace(/[^0-9a-f]/g, '')\n\n\tconst steps = 6\n\tconst finalPalette = GenColors(steps)\n\n\t// Convert a string to an integer evenly\n\tfunction hashToInt(hash, maximum) {\n\t\tlet finalInt = 0\n\t\tconst result = []\n\n\t\t// Splitting evenly the string\n\t\tfor (let i = 0; i < hash.length; i++) {\n\t\t\t// chars in md5 goes up to f, hex:16\n\t\t\tresult.push(parseInt(hash.charAt(i), 16) % 16)\n\t\t}\n\n\t\t// Adds up all results\n\t\tfor (const j in result) {\n\t\t\tfinalInt += result[j]\n\t\t}\n\n\t\t// chars in md5 goes up to f, hex:16\n\t\t// make sure we're always using int in our operation\n\t\treturn parseInt(parseInt(finalInt, 10) % maximum, 10)\n\t}\n\treturn finalPalette[hashToInt(hash, steps * 3)]\n}\n\nexport default usernameToColor\n","/**\n * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport usernameToColor from './usernameToColor'\n\nexport default usernameToColor\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.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, \".material-design-icon[data-v-28d338d4]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.option[data-v-28d338d4]{display:flex;align-items:center;width:100%;height:var(--height)}.option__avatar[data-v-28d338d4]{margin-right:var(--margin)}.option__details[data-v-28d338d4]{display:flex;flex:1 1;flex-direction:column;justify-content:center;min-width:0}.option__lineone[data-v-28d338d4]{color:var(--color-text-light)}.option__linetwo[data-v-28d338d4]{opacity:.7}.option__lineone[data-v-28d338d4],.option__linetwo[data-v-28d338d4]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;line-height:1.1em}.option__lineone strong[data-v-28d338d4],.option__linetwo strong[data-v-28d338d4]{font-weight:bold}.option__icon[data-v-28d338d4]{flex:0 0 44px;width:44px;height:44px;opacity:.5;background-position:center;background-size:16px}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../assets/material-icons.css\",\"webpack://./ListItemIcon.vue\",\"webpack://./../../assets/variables.scss\"],\"names\":[],\"mappings\":\"AAGA,uCACC,YAAa,CACb,iBAAkB,CAClB,mBAAoB,CACpB,kBAAmB,CACnB,sBAAuB,CCgOxB,yBACC,YAAa,CACb,kBAAmB,CACnB,UAAW,CACX,oBAAqB,CAErB,iCACC,0BAA2B,CAC3B,kCAGA,YAAa,CACb,QAAS,CACT,qBAAsB,CACtB,sBAAuB,CACvB,WAAY,CACZ,kCAGA,6BAA8B,CAC9B,kCAEA,UCnNiB,CDoNjB,oEAGA,eAAgB,CAChB,kBAAmB,CACnB,sBAAuB,CACvB,iBAAkB,CALlB,kFAOC,gBAAiB,CACjB,+BAID,aCnPmB,CDoPnB,UCpPmB,CDqPnB,WCrPmB,CDsPnB,UCrOmB,CDsOnB,0BAA2B,CAC3B,oBAAqB\",\"sourcesContent\":[\"/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon {\\n\\tdisplay: flex;\\n\\talign-self: center;\\n\\tjustify-self: center;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\",\"$scope_version:\\\"16fd49f\\\"; @import 'variables'; @import 'material-icons';\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.option {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\twidth: 100%;\\n\\theight: var(--height);\\n\\n\\t&__avatar {\\n\\t\\tmargin-right: var(--margin);\\n\\t}\\n\\n\\t&__details {\\n\\t\\tdisplay: flex;\\n\\t\\tflex: 1 1;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: center;\\n\\t\\tmin-width: 0;\\n\\t}\\n\\n\\t&__lineone {\\n\\t\\tcolor: var(--color-text-light);\\n\\t}\\n\\t&__linetwo {\\n\\t\\topacity: $opacity_normal;\\n\\t}\\n\\t&__lineone,\\n\\t&__linetwo {\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\tline-height: 1.1em;\\n\\t\\tstrong {\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t}\\n\\t}\\n\\n\\t&__icon {\\n\\t\\tflex: 0 0 $clickable-area;\\n\\t\\twidth: $clickable-area;\\n\\t\\theight: $clickable-area;\\n\\t\\topacity: $opacity_disabled;\\n\\t\\tbackground-position: center;\\n\\t\\tbackground-size: 16px;\\n\\t}\\n}\\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\\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\\n// recommended is 48px\\n// 44px is what we choose and have very good visual-to-usability ratio\\n$clickable-area: 44px;\\n\\n// background icon size\\n// also used for the scss icon font\\n$icon-size: 16px;\\n\\n// icon padding for a $clickable-area width and a $icon-size icon\\n// ( 44px - 16px ) / 2\\n$icon-margin: ($clickable-area - $icon-size) / 2;\\n\\n// transparency background for icons\\n$icon-focus-bg: rgba(127, 127, 127, .25);\\n\\n// popovermenu arrow width from the triangle center\\n$arrow-width: 9px;\\n\\n// opacities\\n$opacity_disabled: .5;\\n$opacity_normal: .7;\\n$opacity_full: 1;\\n\\n// menu round background hover feedback\\n// good looking on dark AND white bg\\n$action-background-hover: rgba(127, 127, 127, .25);\\n\\n// various structure data used in the \\n// `AppNavigation` component\\n$header-height: 50px;\\n$navigation-width: 300px;\\n\\n// mobile breakpoint\\n$breakpoint-mobile: 1024px;\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',_vm._g({staticClass:\"option\",style:(_vm.cssVars),attrs:{\"id\":_vm.id}},_vm.$listeners),[_c('Avatar',_vm._b({staticClass:\"option__avatar\",attrs:{\"disable-menu\":true,\"disable-tooltip\":true,\"display-name\":_vm.displayName || _vm.title,\"is-no-user\":_vm.isNoUser,\"size\":_vm.avatarSize}},'Avatar',_vm.$attrs,false)),_vm._v(\" \"),_c('div',{staticClass:\"option__details\"},[_c('Highlight',{staticClass:\"option__lineone\",attrs:{\"text\":_vm.title,\"search\":_vm.search}}),_vm._v(\" \"),(_vm.isValidSubtitle && _vm.isSizeBigEnough)?_c('Highlight',{staticClass:\"option__linetwo\",attrs:{\"text\":_vm.subtitle,\"search\":_vm.search}}):(_vm.hasStatus)?_c('span',[_c('span',[_vm._v(_vm._s(_vm.userStatus.icon))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.userStatus.message))])]):_vm._e()],1),_vm._v(\" \"),_vm._t(\"default\"),_vm._v(\" \"),(_vm.hasIcon && !_vm.hasSlot)?_c('span',{staticClass:\"icon option__icon\",class:_vm.icon}):_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListItemIcon.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!./ListItemIcon.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n<docs>\n## This is used to display a avatar-title/subtitle + icon layout\nIt might be used for list rendering or within the multiselect for example\n\n> **Note:** Any binding will be forwarded on the Avatar component root\n\n```vue\n<ListItemIcon title=\"User 1\" />\n<ListItemIcon title=\"User 1\" subtitle=\"Hidden subtitle because size is too small\" :avatar-size=\"24\" />\n```\n```vue\n<ListItemIcon title=\"User 1\" :avatar-size=\"44\" icon=\"icon-user\" />\n```\n\n### With icon\n```vue\n<ListItemIcon title=\"Group 1\" subtitle=\"13 members\" icon=\"icon-group\" :is-no-user=\"true\" />\n```\n\n### Searching\n```vue\n<ListItemIcon title=\"Test user 1\" subtitle=\"callmetest@domain.com\" search=\"test\" />\n<ListItemIcon title=\"Testing admin\" subtitle=\"testme@example.com\" search=\"test\" />\n<ListItemIcon title=\"Test group 2\" subtitle=\"loremipsum@domain.com\" icon=\"icon-group\" :is-no-user=\"true\" search=\"test\" />\n```\n\n### With actions\n```vue\n<ListItemIcon title=\"Test user 1\" subtitle=\"callmetest@domain.com\">\n\t<Actions>\n\t\t<ActionButton icon=\"icon-edit\" @click=\"alert('Edit')\">Edit</ActionButton>\n\t\t<ActionButton icon=\"icon-delete\" @click=\"alert('Delete')\">Delete</ActionButton>\n\t</Actions>\n</ListItemIcon>\n```\n</docs>\n\n<template>\n\t<span :id=\"id\"\n\t\tclass=\"option\"\n\t\t:style=\"cssVars\"\n\t\tv-on=\"$listeners\">\n\t\t<Avatar\n\t\t\tv-bind=\"$attrs\"\n\t\t\t:disable-menu=\"true\"\n\t\t\t:disable-tooltip=\"true\"\n\t\t\t:display-name=\"displayName || title\"\n\t\t\t:is-no-user=\"isNoUser\"\n\t\t\t:size=\"avatarSize\"\n\t\t\tclass=\"option__avatar\" />\n\t\t<div class=\"option__details\">\n\t\t\t<Highlight\n\t\t\t\tclass=\"option__lineone\"\n\t\t\t\t:text=\"title\"\n\t\t\t\t:search=\"search\" />\n\t\t\t<Highlight\n\t\t\t\tv-if=\"isValidSubtitle && isSizeBigEnough\"\n\t\t\t\tclass=\"option__linetwo\"\n\t\t\t\t:text=\"subtitle\"\n\t\t\t\t:search=\"search\" />\n\t\t\t<span v-else-if=\"hasStatus\">\n\t\t\t\t<span>{{ userStatus.icon }}</span>\n\t\t\t\t<span>{{ userStatus.message }}</span>\n\t\t\t</span>\n\t\t</div>\n\n\t\t<!-- @slot use this slot to add a custom icon or actions -->\n\t\t<slot />\n\t\t<span v-if=\"hasIcon && !hasSlot\" class=\"icon option__icon\" :class=\"icon\" />\n\t</span>\n</template>\n\n<script>\nimport Avatar from '../Avatar'\nimport Highlight from '../Highlight'\nimport { userStatus } from '../../mixins'\n\n// global margin, ^2 ratio\nconst margin = 8\nconst defaultSize = 32\n\nexport default {\n\tname: 'ListItemIcon',\n\n\tcomponents: {\n\t\tAvatar,\n\t\tHighlight,\n\t},\n\tmixins: [userStatus],\n\n\tprops: {\n\t\t/**\n\t\t * Default first line text\n\t\t */\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\n\t\t/**\n\t\t * Secondary optional line\n\t\t * Only visible on size of 32 and above\n\t\t */\n\t\tsubtitle: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/**\n\t\t * Icon class to be displayed at the end of the component\n\t\t */\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/**\n\t\t * Search within the highlight of title/subtitle\n\t\t */\n\t\tsearch: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/**\n\t\t * Set a size in px that will define the avatar height/width\n\t\t * and therefore, the height of the component\n\t\t */\n\t\tavatarSize: {\n\t\t\ttype: Number,\n\t\t\tdefault: defaultSize,\n\t\t},\n\n\t\t/**\n\t\t * Disable the margins of this component.\n\t\t * Useful for integration in Multiselect for example\n\t\t */\n\t\tnoMargin: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * See the [Avatar](#Avatar) displayName prop\n\t\t * Fallback to title\n\t\t */\n\t\tdisplayName: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * See the [Avatar](#Avatar) isNoUser prop\n\t\t * Enable/disable the UserStatus fetching\n\t\t */\n\t\tisNoUser: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Unique list item ID\n\t\t */\n\t\tid: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tmargin,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\thasIcon() {\n\t\t\treturn this.icon !== ''\n\t\t},\n\t\thasSlot() {\n\t\t\treturn !!this.$slots.default\n\t\t},\n\n\t\tisValidSubtitle() {\n\t\t\treturn this.subtitle?.trim?.() !== ''\n\t\t},\n\t\tisSizeBigEnough() {\n\t\t\treturn this.avatarSize >= defaultSize\n\t\t},\n\n\t\tcssVars() {\n\t\t\t// Don't use margin to calculate the height if noMargin\n\t\t\tconst margin = this.noMargin ? 0 : this.margin\n\n\t\t\treturn {\n\t\t\t\t'--height': this.avatarSize + 2 * margin + 'px',\n\t\t\t\t'--margin': this.margin + 'px',\n\t\t\t}\n\t\t},\n\t},\n\n\tbeforeMount() {\n\t\t// If we don't have a subtitle and if this is a user\n\t\tif (!this.isNoUser && !this.subtitle) {\n\t\t\tthis.fetchUserStatus(this.user)\n\t\t}\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.option {\n\tdisplay: flex;\n\talign-items: center;\n\twidth: 100%;\n\theight: var(--height);\n\n\t&__avatar {\n\t\tmargin-right: var(--margin);\n\t}\n\n\t&__details {\n\t\tdisplay: flex;\n\t\tflex: 1 1;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\tmin-width: 0;\n\t}\n\n\t&__lineone {\n\t\tcolor: var(--color-text-light);\n\t}\n\t&__linetwo {\n\t\topacity: $opacity_normal;\n\t}\n\t&__lineone,\n\t&__linetwo {\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\tline-height: 1.1em;\n\t\tstrong {\n\t\t\tfont-weight: bold;\n\t\t}\n\t}\n\n\t&__icon {\n\t\tflex: 0 0 $clickable-area;\n\t\twidth: $clickable-area;\n\t\theight: $clickable-area;\n\t\topacity: $opacity_disabled;\n\t\tbackground-position: center;\n\t\tbackground-size: 16px;\n\t}\n}\n\n</style>\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListItemIcon.vue?vue&type=style&index=0&id=28d338d4&lang=scss&scoped=true&\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import { render, staticRenderFns } from \"./ListItemIcon.vue?vue&type=template&id=28d338d4&scoped=true&\"\nimport script from \"./ListItemIcon.vue?vue&type=script&lang=js&\"\nexport * from \"./ListItemIcon.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ListItemIcon.vue?vue&type=style&index=0&id=28d338d4&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"28d338d4\",\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./ListItemIcon.vue?vue&type=custom&index=0&blockType=docs\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","/**\n * @copyright Copyright (c) 2020 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\nimport ListItemIcon from './ListItemIcon'\n\nexport default ListItemIcon\n"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"sources":["webpack://NextcloudVue.[name]/webpack/universalModuleDefinition","webpack://NextcloudVue.[name]/webpack/bootstrap","webpack://NextcloudVue.[name]/./node_modules/css-loader/dist/runtime/cssWithMappingToString.js","webpack://NextcloudVue.[name]/./node_modules/css-loader/dist/runtime/api.js","webpack://NextcloudVue.[name]/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://NextcloudVue.[name]/./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack://NextcloudVue.[name]/./src/l10n.js","webpack://NextcloudVue.[name]/external \"v-tooltip\"","webpack://NextcloudVue.[name]/external \"vue\"","webpack://NextcloudVue.[name]/external \"@nextcloud/router\"","webpack://NextcloudVue.[name]/./node_modules/css-loader/dist/runtime/getUrl.js","webpack://NextcloudVue.[name]/./src/components/Popover/Popover.vue?463f","webpack://NextcloudVue.[name]/./src/directives/Tooltip/index.scss?afe8","webpack://NextcloudVue.[name]/./src/directives/Tooltip/index.js","webpack://NextcloudVue.[name]/external \"@nextcloud/l10n/dist/gettext\"","webpack://NextcloudVue.[name]/./src/directives/Tooltip/index.scss","webpack://NextcloudVue.[name]/./src/components/Popover/Popover.vue?e51b","webpack://NextcloudVue.[name]/./src/components/Popover/Popover.vue?01d2","webpack://NextcloudVue.[name]/src/components/Popover/Popover.vue","webpack://NextcloudVue.[name]/./src/components/Popover/Popover.vue?266e","webpack://NextcloudVue.[name]/./src/components/Popover/Popover.vue","webpack://NextcloudVue.[name]/external \"vue-material-design-icons/DotsHorizontal\"","webpack://NextcloudVue.[name]/external \"@nextcloud/event-bus\"","webpack://NextcloudVue.[name]/external \"@nextcloud/auth\"","webpack://NextcloudVue.[name]/./src/utils/IsMobileState.js","webpack://NextcloudVue.[name]/./src/mixins/isMobile/index.js","webpack://NextcloudVue.[name]/external \"@nextcloud/axios\"","webpack://NextcloudVue.[name]/./src/mixins/userStatus.js","webpack://NextcloudVue.[name]/external \"striptags\"","webpack://NextcloudVue.[name]/./src/components/RichContenteditable/MentionBubble.vue?6186","webpack://NextcloudVue.[name]/external \"v-click-outside\"","webpack://NextcloudVue.[name]/./src/utils/Linkify.js","webpack://NextcloudVue.[name]/external \"linkify-string\"","webpack://NextcloudVue.[name]/./src/components/PopoverMenu/PopoverMenuItem.vue?d151","webpack://NextcloudVue.[name]/./src/components/PopoverMenu/PopoverMenuItem.vue?d8f6","webpack://NextcloudVue.[name]/./src/components/PopoverMenu/PopoverMenu.vue?154d","webpack://NextcloudVue.[name]/./src/utils/FindRanges.js","webpack://NextcloudVue.[name]/./src/components/RichContenteditable/MentionBubble.vue?6825","webpack://NextcloudVue.[name]/src/components/RichContenteditable/MentionBubble.vue","webpack://NextcloudVue.[name]/./src/components/RichContenteditable/MentionBubble.vue?dd58","webpack://NextcloudVue.[name]/./src/components/RichContenteditable/MentionBubble.vue","webpack://NextcloudVue.[name]/./src/components/RichContenteditable/MentionBubble.vue?2857","webpack://NextcloudVue.[name]/./src/mixins/richEditor/index.js","webpack://NextcloudVue.[name]/src/components/Highlight/Highlight.vue","webpack://NextcloudVue.[name]/./src/components/Highlight/Highlight.vue?4290","webpack://NextcloudVue.[name]/./src/components/Highlight/Highlight.vue","webpack://NextcloudVue.[name]/./src/components/Highlight/index.js","webpack://NextcloudVue.[name]/./src/components/Avatar/Avatar.vue?e251","webpack://NextcloudVue.[name]/external \"escape-html\"","webpack://NextcloudVue.[name]/./src/utils/GenColors.js","webpack://NextcloudVue.[name]/./src/mixins/excludeClickOutsideClasses/index.js","webpack://NextcloudVue.[name]/./src/mixins/isFullscreen/index.js","webpack://NextcloudVue.[name]/external \"@nextcloud/browser-storage\"","webpack://NextcloudVue.[name]/./src/assets/status-icons/user-status-online.svg","webpack://NextcloudVue.[name]/./src/assets/status-icons/user-status-dnd.svg","webpack://NextcloudVue.[name]/./src/assets/status-icons/user-status-away.svg","webpack://NextcloudVue.[name]/./src/components/PopoverMenu/PopoverMenu.vue?cfe3","webpack://NextcloudVue.[name]/./src/components/PopoverMenu/PopoverMenuItem.vue?63e6","webpack://NextcloudVue.[name]/src/components/PopoverMenu/PopoverMenuItem.vue","webpack://NextcloudVue.[name]/./src/components/PopoverMenu/PopoverMenuItem.vue?1b96","webpack://NextcloudVue.[name]/./src/components/PopoverMenu/PopoverMenuItem.vue?73d5","webpack://NextcloudVue.[name]/./src/components/PopoverMenu/PopoverMenu.vue?7e94","webpack://NextcloudVue.[name]/src/components/PopoverMenu/PopoverMenu.vue","webpack://NextcloudVue.[name]/./src/components/PopoverMenu/PopoverMenuItem.vue","webpack://NextcloudVue.[name]/./src/components/PopoverMenu/PopoverMenuItem.vue?fd73","webpack://NextcloudVue.[name]/./src/components/PopoverMenu/PopoverMenu.vue?5a99","webpack://NextcloudVue.[name]/./src/components/PopoverMenu/PopoverMenu.vue","webpack://NextcloudVue.[name]/./src/components/PopoverMenu/index.js","webpack://NextcloudVue.[name]/./src/components/Avatar/Avatar.vue?b953","webpack://NextcloudVue.[name]/src/components/Avatar/Avatar.vue","webpack://NextcloudVue.[name]/./src/components/Avatar/Avatar.vue?d51d","webpack://NextcloudVue.[name]/./src/components/Avatar/Avatar.vue?cb4c","webpack://NextcloudVue.[name]/./src/components/Avatar/Avatar.vue","webpack://NextcloudVue.[name]/./src/components/Avatar/index.js","webpack://NextcloudVue.[name]/external \"md5\"","webpack://NextcloudVue.[name]/external \"@nextcloud/capabilities\"","webpack://NextcloudVue.[name]/./src/functions/usernameToColor/usernameToColor.js","webpack://NextcloudVue.[name]/./src/functions/usernameToColor/index.js","webpack://NextcloudVue.[name]/./src/components/ListItemIcon/ListItemIcon.vue?0eea","webpack://NextcloudVue.[name]/./src/components/ListItemIcon/ListItemIcon.vue?7dc8","webpack://NextcloudVue.[name]/./src/components/ListItemIcon/ListItemIcon.vue?5fd9","webpack://NextcloudVue.[name]/src/components/ListItemIcon/ListItemIcon.vue","webpack://NextcloudVue.[name]/./src/components/ListItemIcon/ListItemIcon.vue?6275","webpack://NextcloudVue.[name]/./src/components/ListItemIcon/ListItemIcon.vue","webpack://NextcloudVue.[name]/./src/components/ListItemIcon/index.js"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","_slicedToArray","arr","Array","isArray","_arrayWithHoles","_i","iterator","_s","_e","_arr","_n","_d","next","done","push","length","err","_iterableToArrayLimit","minLen","_arrayLikeToArray","toString","slice","constructor","from","test","_unsupportedIterableToArray","TypeError","_nonIterableRest","len","arr2","item","_item","content","cssMapping","btoa","base64","unescape","encodeURIComponent","JSON","stringify","data","concat","sourceMapping","sourceURLs","sources","map","source","sourceRoot","join","cssWithMappingToString","list","this","mediaQuery","dedupe","alreadyImportedModules","id","memo","isOldIE","Boolean","document","all","atob","getTarget","target","styleTarget","querySelector","HTMLIFrameElement","contentDocument","head","e","stylesInDom","getIndexByIdentifier","identifier","result","modulesToDom","options","idCountMap","identifiers","base","count","index","obj","css","media","sourceMap","references","updater","addStyle","insertStyleElement","style","createElement","attributes","nonce","nc","keys","forEach","setAttribute","insert","Error","appendChild","textStore","replaceText","replacement","filter","applyToSingletonTag","remove","styleSheet","cssText","cssNode","createTextNode","childNodes","removeChild","insertBefore","applyToTag","removeAttribute","firstChild","singleton","singletonCounter","update","styleIndex","parentNode","removeStyleElement","newObj","lastIdentifiers","newList","newLastIdentifiers","_index","splice","normalizeComponent","scriptExports","render","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","_compiled","functional","_scopeId","context","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","h","existing","beforeCreate","__webpack_exports__","_nextcloud_l10n_dist_gettext__WEBPACK_IMPORTED_MODULE_0__","gtBuilder","getGettextBuilder","detectLocale","TRANSLATIONS","lang","translations","pluralId","msgid","msgid_plural","msgstr","addTranslation","locale","","gt","build","ngettext","gettext","require","url","default","hash","needQuotes","replace","_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0__","_node_modules_css_loader_dist_runtime_cssWithMappingToString_js__WEBPACK_IMPORTED_MODULE_0___default","_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__","___CSS_LOADER_EXPORT___","_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default","a","version","names","mappings","sourcesContent","injectStylesIntoStyleTag_default","Tooltip","locals","VTooltip","defaultTemplate","SCOPE_VERSION","defaultHtml","defaultDelay","show","hide","Popover_Popovervue_type_script_lang_js_","components","VPopover","mounted","_this","$watch","$refs","popover","isOpen","val","$emit","Popovervue_type_style_index_0_lang_scss_","component","componentNormalizer","_vm","_h","$createElement","_self","_c","_g","_b","ref","attrs","popover-base-class","popover-wrapper-class","popover-arrow-class","popover-inner-class","scopedSlots","_u","fn","_t","proxy","$attrs","$listeners","Popovervue_type_custom_index_0_blockType_docs_default","IsMobileState","Vue","isMobile","watch","created","addEventListener","handleWindowResize","beforeDestroy","removeEventListener","methods","documentElement","clientWidth","$on","onIsMobileChanged","$off","userStatus","hasStatus","status","message","icon","fetchUserStatus","userId","regeneratorRuntime","mark","_callee","capabilities","_yield$axios$get","_data$ocs$data","_e$response$data$ocs","_e$response$data$ocs$","wrap","_context","prev","abrupt","getCapabilities","user_status","enabled","getCurrentUser","axios","generateOcsUrl","sent","ocs","t0","response","console","error","stop","linkify_string__WEBPACK_IMPORTED_MODULE_0__","linkify_string__WEBPACK_IMPORTED_MODULE_0___default","Linkify","text","linkifyStr","defaultProtocol","className","rel","FindRanges","search","ranges","currentIndex","toLowerCase","indexOf","start","end","RichContenteditable_MentionBubblevue_type_script_lang_js_","props","type","String","required","label","primary","computed","avatarUrl","getAvatarUrl","mentionText","user","size","router_","MentionBubblevue_type_style_index_0_id_724f9d58_lang_scss_scoped_true_","MentionBubble","staticClass","class","mention-bubble--primary","contenteditable","backgroundImage","_v","role","title","USERID_REGEX","RegExp","USERID_REGEX_WITH_SPACE","userData","renderContent","escapeHtml","split","part","flat","startsWith","genSelectTemplate","parseContent","stripTags","renderComponentHtml","propsData","Item","extend","wrapper","mount","display","body","$mount","renderedHtml","innerHTML","$destroy","Highlight_Highlightvue_type_script_lang_js_","highlight","range","reduce","validRanges","sort","b","mergedRanges","idx","Math","max","chunks","currentRange","substr","_objectSpread","chunk","Highlightvue_type_custom_index_0_blockType_docs_default","Highlight","_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2__","_node_modules_css_loader_dist_runtime_getUrl_js__WEBPACK_IMPORTED_MODULE_2___default","_assets_status_icons_user_status_online_svg__WEBPACK_IMPORTED_MODULE_3__","_assets_status_icons_user_status_dnd_svg__WEBPACK_IMPORTED_MODULE_4__","_assets_status_icons_user_status_away_svg__WEBPACK_IMPORTED_MODULE_5__","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_REPLACEMENT_1___","___CSS_LOADER_URL_REPLACEMENT_2___","Color","g","mixPalette","steps","color1","color2","palette","step","ends","stepCalc","parseInt","GenColors","red","yellow","blue","palette1","palette2","palette3","excludeClickOutsideClasses","clickOutsideMiddleware","event","excludedClassList","hasNodeOrAnyParentClass","node","classArray","_step","_iterator","_createForOfIteratorHelper","_node$classList","classList","contains","f","parentElement","isFullscreen","_isFullscreen","beforeMount","_onResize","outerHeight","screen","height","PopoverMenu_PopoverMenuItemvue_type_script_lang_js_","href","validator","input","round","random","iconIsUrl","URL","_","action","PopoverMenuItemvue_type_style_index_0_id_2d3b91c8_scoped_true_lang_css_","PopoverMenuItemvue_type_style_index_1_id_2d3b91c8_lang_scss_scoped_true_options","PopoverMenuItemvue_type_style_index_1_id_2d3b91c8_lang_scss_scoped_true_","PopoverMenu_PopoverMenuvue_type_script_lang_js_","PopoverMenuItem","download","on","click","src","longtext","active","submit","$event","preventDefault","placeholder","domProps","directives","rawName","expression","checked","model","change","$$a","$$el","$$c","$$i","$set","_q","composing","for","stopPropagation","disabled","menu","PopoverMenuvue_type_style_index_0_id_4dae360a_lang_scss_scoped_true_options","PopoverMenuvue_type_style_index_0_id_4dae360a_lang_scss_scoped_true_","PopoverMenu_component","_l","PopoverMenuvue_type_custom_index_0_blockType_docs_default","PopoverMenu","browserStorage","browser_storage_","persist","getUserHasAvatar","flag","getItem","setUserHasAvatar","setItem","Avatar_Avatarvue_type_script_lang_js_","tooltip","ClickOutside","external_v_click_outside_","DotsHorizontal","DotsHorizontal_default","Popover","mixins","undefined","iconClass","showUserStatus","showUserStatusCompact","preloadedUserStatus","isGuest","displayName","Number","allowPlaceholder","disableTooltip","disableMenu","tooltipMessage","isNoUser","menuPosition","menuContainer","ariaLabel","avatarUrlLoaded","avatarSrcSetLoaded","userDoesNotExist","isAvatarLoaded","isMenuLoaded","contactsMenuLoading","contactsMenuActions","contactsMenuOpenState","avatarAriaLabel","l10n","canDisplayUserStatus","includes","showUserStatusIconOnAvatar","getUserIdentifier","isDisplayNameDefined","isUserDefined","isUrlDefined","hasMenu","_getCurrentUser","auth_","uid","shouldShowPlaceholder","avatarStyle","--size","lineHeight","fontSize","rgb","usernameToColor","backgroundColor","initials","fromCodePoint","codePointAt","toUpperCase","html","actions","hyperlink","loadAvatarUrl","event_bus_","handleUserStatusUpdated","beforeDestroyed","handlePopoverAfterShow","links","popoverMenu","$el","getElementsByTagName","focus","handlePopoverAfterHide","main","state","toggleMenu","_asyncToGenerator","fetchContactsMenu","closeMenu","_this2","_callee2","_yield$axios$post","_context2","axios_default","post","topAction","updateImageIfValid","avatarUrlGenerator","srcset","_getCurrentUser2","oc_userconfig","avatar","_this3","arguments","userHasAvatar","img","Image","onload","onerror","debug","Avatarvue_type_style_index_0_id_340ddd8f_scoped_true_lang_scss_","avatardiv--unknown","avatardiv--with-menu","tabindex","aria-label","keydown","_k","keyCode","alt","placement","container","open","after-show","after-hide","decorative","Avatarvue_type_custom_index_0_blockType_docs_default","Avatar","username","match","md5","maximum","finalInt","charAt","j","hashToInt","ListItemIcon_ListItemIconvue_type_script_lang_js_","subtitle","avatarSize","noMargin","margin","hasIcon","hasSlot","$slots","isValidSubtitle","_this$subtitle","_this$subtitle$trim","trim","isSizeBigEnough","cssVars","--height","--margin","ListItemIconvue_type_style_index_0_id_28d338d4_lang_scss_scoped_true_","disable-menu","disable-tooltip","display-name","is-no-user","ListItemIconvue_type_custom_index_0_blockType_docs_default","ListItemIcon"],"mappings":"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","file":"Components/ListItemIcon.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Components/ListItemIcon\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Components/ListItemIcon\"] = factory();\n\telse\n\t\troot[\"NextcloudVue\"] = root[\"NextcloudVue\"] || {}, root[\"NextcloudVue\"][\"Components/ListItemIcon\"] = factory();\n})(window, function() {\nreturn "," \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 = \"/dist/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 67);\n","\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { 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\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nmodule.exports = function cssWithMappingToString(item) {\n var _item = _slicedToArray(item, 4),\n content = _item[1],\n cssMapping = _item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (typeof btoa === \"function\") {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === \"string\") {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, \"\"]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};","\"use strict\";\n\nvar isOldIE = function isOldIE() {\n var memo;\n return function memorize() {\n if (typeof memo === 'undefined') {\n // Test for IE <= 9 as proposed by Browserhacks\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n // Tests for existence of standard globals is to allow style-loader\n // to operate correctly into non-standard environments\n // @see https://github.com/webpack-contrib/style-loader/issues/177\n memo = Boolean(window && document && document.all && !window.atob);\n }\n\n return memo;\n };\n}();\n\nvar getTarget = function getTarget() {\n var memo = {};\n return function memorize(target) {\n if (typeof memo[target] === 'undefined') {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDom.length; i++) {\n if (stylesInDom[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var index = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3]\n };\n\n if (index !== -1) {\n stylesInDom[index].references++;\n stylesInDom[index].updater(obj);\n } else {\n stylesInDom.push({\n identifier: identifier,\n updater: addStyle(obj, options),\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction insertStyleElement(options) {\n var style = document.createElement('style');\n var attributes = options.attributes || {};\n\n if (typeof attributes.nonce === 'undefined') {\n var nonce = typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n\n if (nonce) {\n attributes.nonce = nonce;\n }\n }\n\n Object.keys(attributes).forEach(function (key) {\n style.setAttribute(key, attributes[key]);\n });\n\n if (typeof options.insert === 'function') {\n options.insert(style);\n } else {\n var target = getTarget(options.insert || 'head');\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n }\n\n return style;\n}\n\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */\n\n\nvar replaceText = function replaceText() {\n var textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join('\\n');\n };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n /* istanbul ignore if */\n\n if (style.styleSheet) {\n style.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = style.childNodes;\n\n if (childNodes[index]) {\n style.removeChild(childNodes[index]);\n }\n\n if (childNodes.length) {\n style.insertBefore(cssNode, childNodes[index]);\n } else {\n style.appendChild(cssNode);\n }\n }\n}\n\nfunction applyToTag(style, options, obj) {\n var css = obj.css;\n var media = obj.media;\n var sourceMap = obj.sourceMap;\n\n if (media) {\n style.setAttribute('media', media);\n } else {\n style.removeAttribute('media');\n }\n\n if (sourceMap && typeof btoa !== 'undefined') {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while (style.firstChild) {\n style.removeChild(style.firstChild);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n var style;\n var update;\n var remove;\n\n if (options.singleton) {\n var styleIndex = singletonCounter++;\n style = singleton || (singleton = insertStyleElement(options));\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n } else {\n style = insertStyleElement(options);\n update = applyToTag.bind(null, style, options);\n\n remove = function remove() {\n removeStyleElement(style);\n };\n }\n\n update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n\n update(obj = newObj);\n } else {\n remove();\n }\n };\n}\n\nmodule.exports = function (list, options) {\n options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n // tags it will allow on a page\n\n if (!options.singleton && typeof options.singleton !== 'boolean') {\n options.singleton = isOldIE();\n }\n\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n if (Object.prototype.toString.call(newList) !== '[object Array]') {\n return;\n }\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDom[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDom[_index].references === 0) {\n stylesInDom[_index].updater();\n\n stylesInDom.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","import { getGettextBuilder } from '@nextcloud/l10n/dist/gettext'\n\nconst gtBuilder = getGettextBuilder()\n\t.detectLocale()\n\n// Decompress Translations to gettext format and add to gtBuilder\nTRANSLATIONS.forEach((lang) => {\n\tconst translations = {}\n\n\tfor (const key in lang.translations) {\n\t\t// Plural\n\t\tif (lang.translations[key].pluralId) {\n\t\t\ttranslations[key] = {\n\t\t\t\tmsgid: key,\n\t\t\t\tmsgid_plural: lang.translations[key].pluralId,\n\t\t\t\tmsgstr: lang.translations[key].msgstr,\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\t// Singular\n\t\ttranslations[key] = {\n\t\t\tmsgid: key,\n\t\t\tmsgstr: [\n\t\t\t\tlang.translations[key],\n\t\t\t],\n\t\t}\n\t}\n\n\tgtBuilder.addTranslation(lang.locale, {\n\t\ttranslations: {\n\t\t\t'': translations,\n\t\t},\n\t})\n})\n\nconst gt = gtBuilder.build()\n\nconst n = gt.ngettext.bind(gt)\nconst t = gt.gettext.bind(gt)\n\nexport { t, n }\n","module.exports = require(\"v-tooltip\");","module.exports = require(\"vue\");","module.exports = require(\"@nextcloud/router\");","\"use strict\";\n\nmodule.exports = function (url, options) {\n if (!options) {\n // eslint-disable-next-line no-param-reassign\n options = {};\n } // eslint-disable-next-line no-underscore-dangle, no-param-reassign\n\n\n url = url && url.__esModule ? url.default : url;\n\n if (typeof url !== \"string\") {\n return url;\n } // If url is already wrapped in quotes, remove them\n\n\n if (/^['\"].*['\"]$/.test(url)) {\n // eslint-disable-next-line no-param-reassign\n url = url.slice(1, -1);\n }\n\n if (options.hash) {\n // eslint-disable-next-line no-param-reassign\n url += options.hash;\n } // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n\n\n if (/[\"'() \\t\\n]/.test(url) || options.needQuotes) {\n return \"\\\"\".concat(url.replace(/\"/g, '\\\\\"').replace(/\\n/g, \"\\\\n\"), \"\\\"\");\n }\n\n return url;\n};","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.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, \".material-design-icon{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.popover{z-index:100000;display:block !important;filter:drop-shadow(0 1px 10px var(--color-box-shadow))}.popover__inner{padding:0;color:var(--color-main-text);border-radius:var(--border-radius);background:var(--color-main-background)}.popover__arrow{position:absolute;z-index:1;width:0;height:0;margin:10px;border-style:solid;border-color:var(--color-main-background)}.popover[x-placement^='top']{margin-bottom:10px}.popover[x-placement^='top'] .popover__arrow{bottom:-10px;left:calc(50% - $arrow-width);margin-top:0;margin-bottom:0;border-width:10px 10px 0 10px;border-right-color:transparent !important;border-bottom-color:transparent !important;border-left-color:transparent !important}.popover[x-placement^='bottom']{margin-top:10px}.popover[x-placement^='bottom'] .popover__arrow{top:-10px;left:calc(50% - $arrow-width);margin-top:0;margin-bottom:0;border-width:0 10px 10px 10px;border-top-color:transparent !important;border-right-color:transparent !important;border-left-color:transparent !important}.popover[x-placement^='right']{margin-left:10px}.popover[x-placement^='right'] .popover__arrow{top:calc(50% - $arrow-width);left:-10px;margin-right:0;margin-left:0;border-width:10px 10px 10px 0;border-top-color:transparent !important;border-bottom-color:transparent !important;border-left-color:transparent !important}.popover[x-placement^='left']{margin-right:10px}.popover[x-placement^='left'] .popover__arrow{top:calc(50% - $arrow-width);right:-10px;margin-right:0;margin-left:0;border-width:10px 0 10px 10px;border-top-color:transparent !important;border-right-color:transparent !important;border-bottom-color:transparent !important}.popover[aria-hidden='true']{visibility:hidden;transition:opacity var(--animation-quick),visibility var(--animation-quick);opacity:0}.popover[aria-hidden='false']{visibility:visible;transition:opacity var(--animation-quick);opacity:1}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../assets/material-icons.css\",\"webpack://./Popover.vue\"],\"names\":[],\"mappings\":\"AAGA,sBACC,YAAa,CACb,iBAAkB,CAClB,mBAAoB,CACpB,kBAAmB,CACnB,sBAAuB,CC0GxB,SACC,cAAe,CACf,wBAAyB,CAEzB,sDAAuD,CAEvD,gBACC,SAAU,CACV,4BAA6B,CAC7B,kCAAmC,CACnC,uCAAwC,CACxC,gBAGA,iBAAkB,CAClB,SAAU,CACV,OAAQ,CACR,QAAS,CACT,WApBgB,CAqBhB,kBAAmB,CACnB,yCAA0C,CApB5C,6BAwBE,kBA1BgB,CAElB,6CA2BG,YA7Be,CA8Bf,6BAA8B,CAC9B,YAAa,CACb,eAAgB,CAChB,6BAjCe,CAkCf,yCAA0C,CAC1C,0CAA2C,CAC3C,wCAAyC,CAlC5C,gCAuCE,eAzCgB,CAElB,gDA0CG,SA5Ce,CA6Cf,6BAA8B,CAC9B,YAAa,CACb,eAAgB,CAChB,6BAhDe,CAiDf,uCAAwC,CACxC,yCAA0C,CAC1C,wCAAyC,CAjD5C,+BAsDE,gBAxDgB,CAElB,+CAyDG,4BAA6B,CAC7B,UA5De,CA6Df,cAAe,CACf,aAAc,CACd,6BAAsD,CACtD,uCAAwC,CACxC,0CAA2C,CAC3C,wCAAyC,CAhE5C,8BAqEE,iBAvEgB,CAElB,8CAwEG,4BAA6B,CAC7B,WA3Ee,CA4Ef,cAAe,CACf,aAAc,CACd,6BA9Ee,CA+Ef,uCAAwC,CACxC,yCAA0C,CAC1C,0CAA2C,CA/E9C,6BAoFE,iBAAkB,CAClB,2EAA6E,CAC7E,SAAU,CAtFZ,8BA0FE,kBAAmB,CACnB,yCAA0C,CAC1C,SAAU\",\"sourcesContent\":[\"/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon {\\n\\tdisplay: flex;\\n\\talign-self: center;\\n\\tjustify-self: center;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\",\"$scope_version:\\\"0a7f1bc\\\"; @import 'variables'; @import 'material-icons';\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n$arrow-width: 10px;\\n\\n.popover {\\n\\tz-index: 100000;\\n\\tdisplay: block !important;\\n\\n\\tfilter: drop-shadow(0 1px 10px var(--color-box-shadow));\\n\\n\\t&__inner {\\n\\t\\tpadding: 0;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground: var(--color-main-background);\\n\\t}\\n\\n\\t&__arrow {\\n\\t\\tposition: absolute;\\n\\t\\tz-index: 1;\\n\\t\\twidth: 0;\\n\\t\\theight: 0;\\n\\t\\tmargin: $arrow-width;\\n\\t\\tborder-style: solid;\\n\\t\\tborder-color: var(--color-main-background);\\n\\t}\\n\\n\\t&[x-placement^='top'] {\\n\\t\\tmargin-bottom: $arrow-width;\\n\\n\\t\\t.popover__arrow {\\n\\t\\t\\tbottom: -$arrow-width;\\n\\t\\t\\tleft: calc(50% - $arrow-width);\\n\\t\\t\\tmargin-top: 0;\\n\\t\\t\\tmargin-bottom: 0;\\n\\t\\t\\tborder-width: $arrow-width $arrow-width 0 $arrow-width;\\n\\t\\t\\tborder-right-color: transparent !important;\\n\\t\\t\\tborder-bottom-color: transparent !important;\\n\\t\\t\\tborder-left-color: transparent !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&[x-placement^='bottom'] {\\n\\t\\tmargin-top: $arrow-width;\\n\\n\\t\\t.popover__arrow {\\n\\t\\t\\ttop: -$arrow-width;\\n\\t\\t\\tleft: calc(50% - $arrow-width);\\n\\t\\t\\tmargin-top: 0;\\n\\t\\t\\tmargin-bottom: 0;\\n\\t\\t\\tborder-width: 0 $arrow-width $arrow-width $arrow-width;\\n\\t\\t\\tborder-top-color: transparent !important;\\n\\t\\t\\tborder-right-color: transparent !important;\\n\\t\\t\\tborder-left-color: transparent !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&[x-placement^='right'] {\\n\\t\\tmargin-left: $arrow-width;\\n\\n\\t\\t.popover__arrow {\\n\\t\\t\\ttop: calc(50% - $arrow-width);\\n\\t\\t\\tleft: -$arrow-width;\\n\\t\\t\\tmargin-right: 0;\\n\\t\\t\\tmargin-left: 0;\\n\\t\\t\\tborder-width: $arrow-width $arrow-width $arrow-width 0;\\n\\t\\t\\tborder-top-color: transparent !important;\\n\\t\\t\\tborder-bottom-color: transparent !important;\\n\\t\\t\\tborder-left-color: transparent !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&[x-placement^='left'] {\\n\\t\\tmargin-right: $arrow-width;\\n\\n\\t\\t.popover__arrow {\\n\\t\\t\\ttop: calc(50% - $arrow-width);\\n\\t\\t\\tright: -$arrow-width;\\n\\t\\t\\tmargin-right: 0;\\n\\t\\t\\tmargin-left: 0;\\n\\t\\t\\tborder-width: $arrow-width 0 $arrow-width $arrow-width;\\n\\t\\t\\tborder-top-color: transparent !important;\\n\\t\\t\\tborder-right-color: transparent !important;\\n\\t\\t\\tborder-bottom-color: transparent !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&[aria-hidden='true'] {\\n\\t\\tvisibility: hidden;\\n\\t\\ttransition: opacity var(--animation-quick), visibility var(--animation-quick);\\n\\t\\topacity: 0;\\n\\t}\\n\\n\\t&[aria-hidden='false'] {\\n\\t\\tvisibility: visible;\\n\\t\\ttransition: opacity var(--animation-quick);\\n\\t\\topacity: 1;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!./index.scss\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { VTooltip } from 'v-tooltip'\nimport './index.scss'\n\n// force scope the tooltip and use .vue-tooltip\n// instead of .tooltip to avoid server compatibility\n// issues and the use of !important\nVTooltip.options.defaultTemplate = `<div class=\"vue-tooltip\" role=\"tooltip\" data-v-${SCOPE_VERSION}><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>`\nVTooltip.options.defaultHtml = false\nVTooltip.options.defaultDelay = { show: 500, hide: 200 }\n\nexport default VTooltip\n","module.exports = require(\"@nextcloud/l10n/dist/gettext\");","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.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, \".material-design-icon{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.vue-tooltip[data-v-0a7f1bc]{position:absolute;z-index:100000;right:auto;left:auto;display:block;margin:0;margin-top:-3px;padding:10px 0;text-align:left;text-align:start;opacity:0;line-height:1.6;line-break:auto;filter:drop-shadow(0 1px 10px var(--color-box-shadow))}.vue-tooltip[data-v-0a7f1bc][x-placement^='top'] .tooltip-arrow{bottom:0;margin-top:0;margin-bottom:0;border-width:10px 10px 0 10px;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent}.vue-tooltip[data-v-0a7f1bc][x-placement^='bottom'] .tooltip-arrow{top:0;margin-top:0;margin-bottom:0;border-width:0 10px 10px 10px;border-top-color:transparent;border-right-color:transparent;border-left-color:transparent}.vue-tooltip[data-v-0a7f1bc][x-placement^='right'] .tooltip-arrow{right:100%;margin-right:0;margin-left:0;border-width:10px 10px 10px 0;border-top-color:transparent;border-bottom-color:transparent;border-left-color:transparent}.vue-tooltip[data-v-0a7f1bc][x-placement^='left'] .tooltip-arrow{left:100%;margin-right:0;margin-left:0;border-width:10px 0 10px 10px;border-top-color:transparent;border-right-color:transparent;border-bottom-color:transparent}.vue-tooltip[data-v-0a7f1bc][aria-hidden='true']{visibility:hidden;transition:opacity .15s, visibility .15s;opacity:0}.vue-tooltip[data-v-0a7f1bc][aria-hidden='false']{visibility:visible;transition:opacity .15s;opacity:1}.vue-tooltip[data-v-0a7f1bc] .tooltip-inner{max-width:350px;padding:5px 8px;text-align:center;color:var(--color-main-text);border-radius:var(--border-radius);background-color:var(--color-main-background)}.vue-tooltip[data-v-0a7f1bc] .tooltip-arrow{position:absolute;z-index:1;width:0;height:0;margin:0;border-style:solid;border-color:var(--color-main-background)}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../assets/material-icons.css\",\"webpack://./index.scss\"],\"names\":[],\"mappings\":\"AAGA,sBACC,YAAa,CACb,iBAAkB,CAClB,mBAAoB,CACpB,kBAAmB,CACnB,sBAAuB,CCOxB,6BACC,iBAAkB,CAClB,cAAe,CACf,UAAW,CACX,SAAU,CACV,aAAc,CACd,QAAS,CAET,eAAgB,CAChB,cAAe,CACf,eAAgB,CAChB,gBAAiB,CACjB,SAAU,CACV,eAAgB,CAEhB,eAAgB,CAChB,sDAAuD,CAhBxD,gEAqBG,QAAS,CACT,YAAa,CACb,eAAgB,CAChB,6BA1Be,CA2Bf,8BAA+B,CAC/B,+BAAgC,CAChC,6BAA8B,CA3BjC,mEAkCG,KAAM,CACN,YAAa,CACb,eAAgB,CAChB,6BAvCe,CAwCf,4BAA6B,CAC7B,8BAA+B,CAC/B,6BAA8B,CAxCjC,kEA+CG,UAAW,CACX,cAAe,CACf,aAAc,CACd,6BAAsD,CACtD,4BAA6B,CAC7B,+BAAgC,CAChC,6BAA8B,CArDjC,iEA4DG,SAAU,CACV,cAAe,CACf,aAAc,CACd,6BAjEe,CAkEf,4BAA6B,CAC7B,8BAA+B,CAC/B,+BAAgC,CAlEnC,iDAwEE,iBAAkB,CAClB,wCAAyC,CACzC,SAAU,CA1EZ,kDA6EE,kBAAmB,CACnB,uBAAwB,CACxB,SAAU,CA/EZ,4CAoFE,eAAgB,CAChB,eAAgB,CAChB,iBAAkB,CAClB,4BAA6B,CAC7B,kCAAmC,CACnC,6CAA8C,CAzFhD,4CA8FE,iBAAkB,CAClB,SAAU,CACV,OAAQ,CACR,QAAS,CACT,QAAS,CACT,kBAAmB,CACnB,yCAA0C\",\"sourcesContent\":[\"/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon {\\n\\tdisplay: flex;\\n\\talign-self: center;\\n\\tjustify-self: center;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\",\"$scope_version:\\\"0a7f1bc\\\"; @import 'variables'; @import 'material-icons';\\n/**\\n* @copyright Copyright (c) 2016, John Molakvoæ <skjnldsv@protonmail.com>\\n* @copyright Copyright (c) 2016, Robin Appelman <robin@icewind.nl>\\n* @copyright Copyright (c) 2016, Jan-Christoph Borchardt <hey@jancborchardt.net>\\n* @copyright Copyright (c) 2016, Erik Pellikka <erik@pellikka.org>\\n* @copyright Copyright (c) 2015, Vincent Petry <pvince81@owncloud.com>\\n*\\n* Bootstrap v3.3.5 (http://getbootstrap.com)\\n* Copyright 2011-2015 Twitter, Inc.\\n* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\\n*/\\n\\n$arrow-width: 10px;\\n\\n.vue-tooltip[data-v-#{$scope_version}] {\\n\\tposition: absolute;\\n\\tz-index: 100000;\\n\\tright: auto;\\n\\tleft: auto;\\n\\tdisplay: block;\\n\\tmargin: 0;\\n\\t/* default to top */\\n\\tmargin-top: -3px;\\n\\tpadding: 10px 0;\\n\\ttext-align: left;\\n\\ttext-align: start;\\n\\topacity: 0;\\n\\tline-height: 1.6;\\n\\n\\tline-break: auto;\\n\\tfilter: drop-shadow(0 1px 10px var(--color-box-shadow));\\n\\n\\t// TOP\\n\\t&[x-placement^='top'] {\\n\\t\\t.tooltip-arrow {\\n\\t\\t\\tbottom: 0;\\n\\t\\t\\tmargin-top: 0;\\n\\t\\t\\tmargin-bottom: 0;\\n\\t\\t\\tborder-width: $arrow-width $arrow-width 0 $arrow-width;\\n\\t\\t\\tborder-right-color: transparent;\\n\\t\\t\\tborder-bottom-color: transparent;\\n\\t\\t\\tborder-left-color: transparent;\\n\\t\\t}\\n\\t}\\n\\n\\t// BOTTOM\\n\\t&[x-placement^='bottom'] {\\n\\t\\t.tooltip-arrow {\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tmargin-top: 0;\\n\\t\\t\\tmargin-bottom: 0;\\n\\t\\t\\tborder-width: 0 $arrow-width $arrow-width $arrow-width;\\n\\t\\t\\tborder-top-color: transparent;\\n\\t\\t\\tborder-right-color: transparent;\\n\\t\\t\\tborder-left-color: transparent;\\n\\t\\t}\\n\\t}\\n\\n\\t// RIGHT\\n\\t&[x-placement^='right'] {\\n\\t\\t.tooltip-arrow {\\n\\t\\t\\tright: 100%;\\n\\t\\t\\tmargin-right: 0;\\n\\t\\t\\tmargin-left: 0;\\n\\t\\t\\tborder-width: $arrow-width $arrow-width $arrow-width 0;\\n\\t\\t\\tborder-top-color: transparent;\\n\\t\\t\\tborder-bottom-color: transparent;\\n\\t\\t\\tborder-left-color: transparent;\\n\\t\\t}\\n\\t}\\n\\n\\t// LEFT\\n\\t&[x-placement^='left'] {\\n\\t\\t.tooltip-arrow {\\n\\t\\t\\tleft: 100%;\\n\\t\\t\\tmargin-right: 0;\\n\\t\\t\\tmargin-left: 0;\\n\\t\\t\\tborder-width: $arrow-width 0 $arrow-width $arrow-width;\\n\\t\\t\\tborder-top-color: transparent;\\n\\t\\t\\tborder-right-color: transparent;\\n\\t\\t\\tborder-bottom-color: transparent;\\n\\t\\t}\\n\\t}\\n\\n\\t// HIDDEN / SHOWN\\n\\t&[aria-hidden='true'] {\\n\\t\\tvisibility: hidden;\\n\\t\\ttransition: opacity .15s, visibility .15s;\\n\\t\\topacity: 0;\\n\\t}\\n\\t&[aria-hidden='false'] {\\n\\t\\tvisibility: visible;\\n\\t\\ttransition: opacity .15s;\\n\\t\\topacity: 1;\\n\\t}\\n\\n\\t// CONTENT\\n\\t.tooltip-inner {\\n\\t\\tmax-width: 350px;\\n\\t\\tpadding: 5px 8px;\\n\\t\\ttext-align: center;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t}\\n\\n\\t// ARROW\\n\\t.tooltip-arrow {\\n\\t\\tposition: absolute;\\n\\t\\tz-index: 1;\\n\\t\\twidth: 0;\\n\\t\\theight: 0;\\n\\t\\tmargin: 0;\\n\\t\\tborder-style: solid;\\n\\t\\tborder-color: var(--color-main-background);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('VPopover',_vm._g(_vm._b({ref:\"popover\",attrs:{\"popover-base-class\":\"popover\",\"popover-wrapper-class\":\"popover__wrapper\",\"popover-arrow-class\":\"popover__arrow\",\"popover-inner-class\":\"popover__inner\"},scopedSlots:_vm._u([{key:\"popover\",fn:function(){return [_vm._t(\"default\")]},proxy:true}],null,true)},'VPopover',_vm.$attrs,false),_vm.$listeners),[_vm._t(\"trigger\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Popover.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!./Popover.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 Marco Ambrosini <marcoambrosini@pm.me>\n -\n - @author Marco Ambrosini <marcoambrosini@pm.me>\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<docs>\n\n### General description\n\nThis component is just a wrapper for the v-component plugin by Akryum,\nplease refer to this documentation for customization:\nhttps://github.com/Akryum/v-tooltip\n\nThis components has two slots:\n* 'trigger' which can be any html element and it will trigger the popover\nthis slot is optional since you can toggle the popover also by updating the\nopen prop on this component;\n\n* a default slot that is for the content of the popover.\n\n### Examples\n\nWith a `<button>` as a trigger:\n```vue\n<template>\n\t<Popover>\n\t\t<template #trigger>\n\t\t\t<button> I am the trigger </button>\n\t\t</template>\n\t\t<template>\n\t\t<h2>this is some content</h2>\n\t\t</template>\n\t</Popover>\n</template>\n```\n</docs>\n\n<template>\n\t<VPopover\n\t\tref=\"popover\"\n\t\tv-bind=\"$attrs\"\n\t\tpopover-base-class=\"popover\"\n\t\tpopover-wrapper-class=\"popover__wrapper\"\n\t\tpopover-arrow-class=\"popover__arrow\"\n\t\tpopover-inner-class=\"popover__inner\"\n\t\tv-on=\"$listeners\">\n\t\t<!-- This will be the popover target (for the events and position) -->\n\t\t<slot name=\"trigger\" />\n\t\t<!-- This will be the content of the popover -->\n\t\t<template #popover>\n\t\t\t<slot />\n\t\t</template>\n\t</VPopover>\n</template>\n\n<script>\nimport { VPopover } from 'v-tooltip'\n\nexport default {\n\tname: 'Popover',\n\tcomponents: {\n\t\tVPopover,\n\t},\n\n\tmounted() {\n\t\tthis.$watch(\n\t\t\t() => {\n\t\t\t\t// required because v-tooltip doesn't provide events\n\t\t\t\t// and @show is too early\n\t\t\t\t// see https://github.com/Akryum/v-tooltip/issues/661\n\t\t\t\treturn this.$refs.popover.isOpen\n\t\t\t},\n\t\t\t(val) => {\n\t\t\t\tif (val) {\n\t\t\t\t\t/**\n\t\t\t\t\t * Triggered after the tooltip was visually displayed.\n\t\t\t\t\t *\n\t\t\t\t\t * This is different from the 'show' and 'apply-show' which\n\t\t\t\t\t * run earlier than this where there is no guarantee that the\n\t\t\t\t\t * tooltip is already visible and in the DOM.\n\t\t\t\t\t */\n\t\t\t\t\tthis.$emit('after-show')\n\t\t\t\t} else {\n\t\t\t\t\t/**\n\t\t\t\t\t * Triggered after the tooltip was visually hidden.\n\t\t\t\t\t */\n\t\t\t\t\tthis.$emit('after-hide')\n\t\t\t\t}\n\t\t\t}\n\t\t)\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n$arrow-width: 10px;\n\n.popover {\n\tz-index: 100000;\n\tdisplay: block !important;\n\n\tfilter: drop-shadow(0 1px 10px var(--color-box-shadow));\n\n\t&__inner {\n\t\tpadding: 0;\n\t\tcolor: var(--color-main-text);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground: var(--color-main-background);\n\t}\n\n\t&__arrow {\n\t\tposition: absolute;\n\t\tz-index: 1;\n\t\twidth: 0;\n\t\theight: 0;\n\t\tmargin: $arrow-width;\n\t\tborder-style: solid;\n\t\tborder-color: var(--color-main-background);\n\t}\n\n\t&[x-placement^='top'] {\n\t\tmargin-bottom: $arrow-width;\n\n\t\t.popover__arrow {\n\t\t\tbottom: -$arrow-width;\n\t\t\tleft: calc(50% - $arrow-width);\n\t\t\tmargin-top: 0;\n\t\t\tmargin-bottom: 0;\n\t\t\tborder-width: $arrow-width $arrow-width 0 $arrow-width;\n\t\t\tborder-right-color: transparent !important;\n\t\t\tborder-bottom-color: transparent !important;\n\t\t\tborder-left-color: transparent !important;\n\t\t}\n\t}\n\n\t&[x-placement^='bottom'] {\n\t\tmargin-top: $arrow-width;\n\n\t\t.popover__arrow {\n\t\t\ttop: -$arrow-width;\n\t\t\tleft: calc(50% - $arrow-width);\n\t\t\tmargin-top: 0;\n\t\t\tmargin-bottom: 0;\n\t\t\tborder-width: 0 $arrow-width $arrow-width $arrow-width;\n\t\t\tborder-top-color: transparent !important;\n\t\t\tborder-right-color: transparent !important;\n\t\t\tborder-left-color: transparent !important;\n\t\t}\n\t}\n\n\t&[x-placement^='right'] {\n\t\tmargin-left: $arrow-width;\n\n\t\t.popover__arrow {\n\t\t\ttop: calc(50% - $arrow-width);\n\t\t\tleft: -$arrow-width;\n\t\t\tmargin-right: 0;\n\t\t\tmargin-left: 0;\n\t\t\tborder-width: $arrow-width $arrow-width $arrow-width 0;\n\t\t\tborder-top-color: transparent !important;\n\t\t\tborder-bottom-color: transparent !important;\n\t\t\tborder-left-color: transparent !important;\n\t\t}\n\t}\n\n\t&[x-placement^='left'] {\n\t\tmargin-right: $arrow-width;\n\n\t\t.popover__arrow {\n\t\t\ttop: calc(50% - $arrow-width);\n\t\t\tright: -$arrow-width;\n\t\t\tmargin-right: 0;\n\t\t\tmargin-left: 0;\n\t\t\tborder-width: $arrow-width 0 $arrow-width $arrow-width;\n\t\t\tborder-top-color: transparent !important;\n\t\t\tborder-right-color: transparent !important;\n\t\t\tborder-bottom-color: transparent !important;\n\t\t}\n\t}\n\n\t&[aria-hidden='true'] {\n\t\tvisibility: hidden;\n\t\ttransition: opacity var(--animation-quick), visibility var(--animation-quick);\n\t\topacity: 0;\n\t}\n\n\t&[aria-hidden='false'] {\n\t\tvisibility: visible;\n\t\ttransition: opacity var(--animation-quick);\n\t\topacity: 1;\n\t}\n}\n\n</style>\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Popover.vue?vue&type=style&index=0&lang=scss&\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import { render, staticRenderFns } from \"./Popover.vue?vue&type=template&id=140d98c2&\"\nimport script from \"./Popover.vue?vue&type=script&lang=js&\"\nexport * from \"./Popover.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Popover.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./Popover.vue?vue&type=custom&index=0&blockType=docs\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","module.exports = require(\"vue-material-design-icons/DotsHorizontal\");","module.exports = require(\"@nextcloud/event-bus\");","module.exports = require(\"@nextcloud/auth\");","/**\n * @copyright Copyright (c) 2019 Kristof Hamann, Paul Schwörer\n *\n * @author Kristof Hamann\n * @author Paul Schwörer\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\nimport Vue from 'vue'\n\nexport const IsMobileState = new Vue({\n\tdata() {\n\t\treturn {\n\t\t\tisMobile: false,\n\t\t}\n\t},\n\twatch: {\n\t\tisMobile(val) {\n\t\t\tthis.$emit('changed', val)\n\t\t},\n\t},\n\tcreated() {\n\t\twindow.addEventListener('resize', this.handleWindowResize)\n\t\tthis.handleWindowResize()\n\t},\n\tbeforeDestroy() {\n\t\twindow.removeEventListener('resize', this.handleWindowResize)\n\t},\n\tmethods: {\n\t\thandleWindowResize() {\n\t\t\tthis.isMobile = document.documentElement.clientWidth < 1024\n\t\t},\n\t},\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\nimport { IsMobileState } from '../../utils/IsMobileState'\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tisMobile: false,\n\t\t}\n\t},\n\tmounted() {\n\t\tIsMobileState.$on('changed', this.onIsMobileChanged)\n\t\tthis.isMobile = IsMobileState.isMobile\n\t},\n\tbeforeDestroy() {\n\t\tIsMobileState.$off('changed', this.onIsMobileChanged)\n\t},\n\tmethods: {\n\t\tonIsMobileChanged(val) {\n\t\t\tthis.isMobile = val\n\t\t},\n\t},\n}\n","module.exports = require(\"@nextcloud/axios\");","/**\n * @copyright Copyright (c) 2020 Georg Ehrke <georg-nextcloud@ehrke.email>\n *\n * @author Georg Ehrke <georg-nextcloud@ehrke.email>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { getCapabilities } from '@nextcloud/capabilities'\nimport { getCurrentUser } from '@nextcloud/auth'\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\thasStatus: false,\n\t\t\tuserStatus: {\n\t\t\t\tstatus: null,\n\t\t\t\tmessage: null,\n\t\t\t\ticon: null,\n\t\t\t},\n\t\t}\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Fetches the user-status from the server\n\t\t * @param {String} userId UserId of the user to fetch the status for\n\t\t *\n\t\t * @returns {Promise<void>}\n\t\t */\n\t\tasync fetchUserStatus(userId) {\n\t\t\tif (!userId) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst capabilities = getCapabilities()\n\t\t\tif (!Object.prototype.hasOwnProperty.call(capabilities, 'user_status') || !capabilities.user_status.enabled) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// User status endpoint is not available for guests.\n\t\t\tif (!getCurrentUser()) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst { data } = await axios.get(generateOcsUrl('apps/user_status/api/v1/statuses/{userId}', { userId }))\n\t\t\t\tconst {\n\t\t\t\t\tstatus,\n\t\t\t\t\tmessage,\n\t\t\t\t\ticon,\n\t\t\t\t} = data.ocs.data\n\t\t\t\tthis.userStatus.status = status\n\t\t\t\tthis.userStatus.message = message || ''\n\t\t\t\tthis.userStatus.icon = icon || ''\n\t\t\t\tthis.hasStatus = true\n\t\t\t} catch (e) {\n\t\t\t\tif (e.response.status === 404 && e.response.data.ocs?.data?.length === 0) {\n\t\t\t\t\t// User just has no status set, so don't log it\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tconsole.error(e)\n\t\t\t}\n\t\t},\n\t},\n}\n","module.exports = require(\"striptags\");","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.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, \".material-design-icon[data-v-724f9d58]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.mention-bubble--primary .mention-bubble__content[data-v-724f9d58]{color:var(--color-primary-text);background-color:var(--color-primary-element)}.mention-bubble__wrapper[data-v-724f9d58]{max-width:150px;height:18px;vertical-align:text-bottom;display:inline-flex;align-items:center}.mention-bubble__content[data-v-724f9d58]{display:inline-flex;overflow:hidden;align-items:center;max-width:100%;height:20px;-webkit-user-select:none;user-select:none;padding-right:6px;padding-left:2px;border-radius:10px;background-color:var(--color-background-dark)}.mention-bubble__icon[data-v-724f9d58]{position:relative;width:16px;height:16px;border-radius:8px;background-color:var(--color-background-darker);background-repeat:no-repeat;background-position:center;background-size:12px}.mention-bubble__icon--with-avatar[data-v-724f9d58]{color:inherit;background-size:cover}.mention-bubble__title[data-v-724f9d58]{overflow:hidden;margin-left:2px;white-space:nowrap;text-overflow:ellipsis}.mention-bubble__title[data-v-724f9d58]::before{content:attr(title)}.mention-bubble__select[data-v-724f9d58]{position:absolute;z-index:-1;left:-1000px}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../assets/material-icons.css\",\"webpack://./MentionBubble.vue\"],\"names\":[],\"mappings\":\"AAGA,uCACC,YAAa,CACb,iBAAkB,CAClB,mBAAoB,CACpB,kBAAmB,CACnB,sBAAuB,CC8FvB,mEACC,+BAAgC,CAChC,6CAA8C,CAC9C,0CAGA,eAXsB,CAatB,WAAwC,CACxC,0BAA2B,CAC3B,mBAAoB,CACpB,kBAAmB,CACnB,0CAGA,mBAAoB,CACpB,eAAgB,CAChB,kBAAmB,CACnB,cAAe,CACf,WAzBkB,CA0BlB,wBAAyB,CACzB,gBAAiB,CACjB,iBAAkC,CAClC,gBA3BkB,CA4BlB,kBAAiC,CACjC,6CAA8C,CAC9C,uCAGA,iBAAkB,CAClB,UAjCuD,CAkCvD,WAlCuD,CAmCvD,iBAAsC,CACtC,+CAAgD,CAChD,2BAA4B,CAC5B,0BAA2B,CAC3B,oBAA0D,CAE1D,oDACC,aAAc,CACd,qBAAsB,CACtB,wCAID,eAAgB,CAChB,eAlDkB,CAmDlB,kBAAmB,CACnB,sBAAuB,CAJvB,gDAOC,mBAAoB,CACpB,yCAKD,iBAAkB,CAClB,UAAW,CACX,YAAa\",\"sourcesContent\":[\"/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon {\\n\\tdisplay: flex;\\n\\talign-self: center;\\n\\tjustify-self: center;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\",\"$scope_version:\\\"0a7f1bc\\\"; @import 'variables'; @import 'material-icons';\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n$bubble-height: 20px;\\n$bubble-max-width: 150px;\\n$bubble-padding: 2px;\\n$bubble-avatar-size: $bubble-height - 2 * $bubble-padding;\\n\\n.mention-bubble {\\n\\t&--primary &__content {\\n\\t\\tcolor: var(--color-primary-text);\\n\\t\\tbackground-color: var(--color-primary-element);\\n\\t}\\n\\n\\t&__wrapper {\\n\\t\\tmax-width: $bubble-max-width;\\n\\t\\t// Align with text\\n\\t\\theight: $bubble-height - $bubble-padding;\\n\\t\\tvertical-align: text-bottom;\\n\\t\\tdisplay: inline-flex;\\n\\t\\talign-items: center;\\n\\t}\\n\\n\\t&__content {\\n\\t\\tdisplay: inline-flex;\\n\\t\\toverflow: hidden;\\n\\t\\talign-items: center;\\n\\t\\tmax-width: 100%;\\n\\t\\theight: $bubble-height ;\\n\\t\\t-webkit-user-select: none;\\n\\t\\tuser-select: none;\\n\\t\\tpadding-right: $bubble-padding * 3;\\n\\t\\tpadding-left: $bubble-padding;\\n\\t\\tborder-radius: $bubble-height / 2;\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t}\\n\\n\\t&__icon {\\n\\t\\tposition: relative;\\n\\t\\twidth: $bubble-avatar-size;\\n\\t\\theight: $bubble-avatar-size;\\n\\t\\tborder-radius: $bubble-avatar-size / 2;\\n\\t\\tbackground-color: var(--color-background-darker);\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\tbackground-position: center;\\n\\t\\tbackground-size: $bubble-avatar-size - 2 * $bubble-padding;\\n\\n\\t\\t&--with-avatar {\\n\\t\\t\\tcolor: inherit;\\n\\t\\t\\tbackground-size: cover;\\n\\t\\t}\\n\\t}\\n\\n\\t&__title {\\n\\t\\toverflow: hidden;\\n\\t\\tmargin-left: $bubble-padding;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\t// Put label in ::before so it is not selectable\\n\\t\\t&::before {\\n\\t\\t\\tcontent: attr(title);\\n\\t\\t}\\n\\t}\\n\\n\\t// Hide the mention id so it is selectable\\n\\t&__select {\\n\\t\\tposition: absolute;\\n\\t\\tz-index: -1;\\n\\t\\tleft: -1000px;\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = require(\"v-click-outside\");","/**\n * @copyright Copyright (c) 2021 Raimund Schlüßler <raimund.schluessler@mailbox.org>\n *\n * @author Raimund Schlüßler <raimund.schluessler@mailbox.org>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport linkifyStr from 'linkify-string'\n\n/**\n * Linkify text\n *\n * @param {string} text The text to linkify\n * @returns {string} The linkified string\n */\nconst Linkify = (text) => {\n\treturn linkifyStr(text, {\n\t\tdefaultProtocol: 'https',\n\t\ttarget: '_blank',\n\t\tclassName: 'external linkified',\n\t\tattributes: {\n\t\t\trel: 'nofollow noopener noreferrer',\n\t\t},\n\t})\n}\n\nexport default Linkify\n","module.exports = require(\"linkify-string\");","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.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, \"\\nbutton.menuitem[data-v-2d3b91c8] {\\n\\ttext-align: left;\\n}\\nbutton.menuitem *[data-v-2d3b91c8] {\\n\\tcursor: pointer;\\n}\\nbutton.menuitem[data-v-2d3b91c8]:disabled {\\n\\topacity: 0.5 !important;\\n\\tcursor: default;\\n}\\nbutton.menuitem:disabled *[data-v-2d3b91c8] {\\n\\tcursor: default;\\n}\\n.menuitem.active[data-v-2d3b91c8] {\\n\\tbox-shadow: inset 2px 0 var(--color-primary);\\n\\tborder-radius: 0;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/PopoverMenu/PopoverMenuItem.vue\"],\"names\":[],\"mappings\":\";AAoLA;CACA,gBAAA;AACA;AAEA;CACA,eAAA;AACA;AAEA;CACA,uBAAA;CACA,eAAA;AACA;AAEA;CACA,eAAA;AACA;AAEA;CACA,4CAAA;CACA,gBAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\\n -\\n - @author John Molakvoæ <skjnldsv@protonmail.com>\\n -\\n - @license GNU AGPL version 3 or any later version\\n -\\n - This program is free software: you can redistribute it and/or modify\\n - it under the terms of the GNU Affero General Public License as\\n - published by the Free Software Foundation, either version 3 of the\\n - License, or (at your option) any later version.\\n -\\n - This program is distributed in the hope that it will be useful,\\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n - GNU Affero General Public License for more details.\\n -\\n - You should have received a copy of the GNU Affero General Public License\\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\\n -\\n -->\\n\\n<template>\\n\\t<li class=\\\"popover__menuitem\\\">\\n\\t\\t<!-- If item.href is set, a link will be directly used -->\\n\\t\\t<a v-if=\\\"item.href\\\"\\n\\t\\t\\t:href=\\\"(item.href) ? item.href : '#' \\\"\\n\\t\\t\\t:target=\\\"(item.target) ? item.target : '' \\\"\\n\\t\\t\\t:download=\\\"item.download\\\"\\n\\t\\t\\tclass=\\\"focusable\\\"\\n\\t\\t\\trel=\\\"noreferrer noopener\\\"\\n\\t\\t\\t@click=\\\"action\\\">\\n\\t\\t\\t<span v-if=\\\"!iconIsUrl\\\" :class=\\\"item.icon\\\" />\\n\\t\\t\\t<img v-else :src=\\\"item.icon\\\">\\n\\t\\t\\t<p v-if=\\\"item.text && item.longtext\\\">\\n\\t\\t\\t\\t<strong class=\\\"menuitem-text\\\">\\n\\t\\t\\t\\t\\t{{ item.text }}\\n\\t\\t\\t\\t</strong><br>\\n\\t\\t\\t\\t<span class=\\\"menuitem-text-detail\\\">\\n\\t\\t\\t\\t\\t{{ item.longtext }}\\n\\t\\t\\t\\t</span>\\n\\t\\t\\t</p>\\n\\t\\t\\t<span v-else-if=\\\"item.text\\\">\\n\\t\\t\\t\\t{{ item.text }}\\n\\t\\t\\t</span>\\n\\t\\t\\t<p v-else-if=\\\"item.longtext\\\">\\n\\t\\t\\t\\t{{ item.longtext }}\\n\\t\\t\\t</p>\\n\\t\\t</a>\\n\\n\\t\\t<!-- If item.input is set instead, an put will be used -->\\n\\t\\t<span v-else-if=\\\"item.input\\\" class=\\\"menuitem\\\" :class=\\\"{active: item.active}\\\">\\n\\t\\t\\t<!-- does not show if input is checkbox -->\\n\\t\\t\\t<span v-if=\\\"item.input !== 'checkbox'\\\" :class=\\\"item.icon\\\" />\\n\\n\\t\\t\\t<!-- only shows if input is text -->\\n\\t\\t\\t<form v-if=\\\"item.input === 'text'\\\"\\n\\t\\t\\t\\t:class=\\\"item.input\\\"\\n\\t\\t\\t\\t@submit.prevent=\\\"item.action\\\">\\n\\t\\t\\t\\t<input :type=\\\"item.input\\\"\\n\\t\\t\\t\\t\\t:value=\\\"item.value\\\"\\n\\t\\t\\t\\t\\t:placeholder=\\\"item.text\\\"\\n\\t\\t\\t\\t\\trequired>\\n\\t\\t\\t\\t<input type=\\\"submit\\\" value=\\\"\\\" class=\\\"icon-confirm\\\">\\n\\t\\t\\t</form>\\n\\n\\t\\t\\t<!-- checkbox -->\\n\\t\\t\\t<template v-else>\\n\\t\\t\\t\\t<!-- eslint-disable-next-line -->\\n\\t\\t\\t\\t<input :id=\\\"key\\\" v-model=\\\"item.model\\\"\\n\\t\\t\\t\\t\\t:type=\\\"item.input\\\"\\n\\t\\t\\t\\t\\t:class=\\\"item.input\\\"\\n\\t\\t\\t\\t\\t@change=\\\"item.action\\\">\\n\\t\\t\\t\\t<label :for=\\\"key\\\" @click.stop.prevent=\\\"item.action\\\">\\n\\t\\t\\t\\t\\t{{ item.text }}\\n\\t\\t\\t\\t</label>\\n\\t\\t\\t</template>\\n\\t\\t</span>\\n\\n\\t\\t<!-- If item.action is set instead, a button will be used -->\\n\\t\\t<button v-else-if=\\\"item.action\\\"\\n\\t\\t\\tclass=\\\"menuitem focusable\\\"\\n\\t\\t\\t:class=\\\"{active: item.active}\\\"\\n\\t\\t\\t:disabled=\\\"item.disabled\\\"\\n\\t\\t\\ttype=\\\"button\\\"\\n\\t\\t\\t@click.stop.prevent=\\\"item.action\\\">\\n\\t\\t\\t<span :class=\\\"item.icon\\\" />\\n\\t\\t\\t<p v-if=\\\"item.text && item.longtext\\\">\\n\\t\\t\\t\\t<strong class=\\\"menuitem-text\\\">\\n\\t\\t\\t\\t\\t{{ item.text }}\\n\\t\\t\\t\\t</strong><br>\\n\\t\\t\\t\\t<span class=\\\"menuitem-text-detail\\\">\\n\\t\\t\\t\\t\\t{{ item.longtext }}\\n\\t\\t\\t\\t</span>\\n\\t\\t\\t</p>\\n\\t\\t\\t<span v-else-if=\\\"item.text\\\">\\n\\t\\t\\t\\t{{ item.text }}\\n\\t\\t\\t</span>\\n\\t\\t\\t<p v-else-if=\\\"item.longtext\\\">\\n\\t\\t\\t\\t{{ item.longtext }}\\n\\t\\t\\t</p>\\n\\t\\t</button>\\n\\n\\t\\t<!-- If item.longtext is set AND the item does not have an action -->\\n\\t\\t<span v-else class=\\\"menuitem\\\" :class=\\\"{active: item.active}\\\">\\n\\t\\t\\t<span :class=\\\"item.icon\\\" />\\n\\t\\t\\t<p v-if=\\\"item.text && item.longtext\\\">\\n\\t\\t\\t\\t<strong class=\\\"menuitem-text\\\">\\n\\t\\t\\t\\t\\t{{ item.text }}\\n\\t\\t\\t\\t</strong><br>\\n\\t\\t\\t\\t<span class=\\\"menuitem-text-detail\\\">\\n\\t\\t\\t\\t\\t{{ item.longtext }}\\n\\t\\t\\t\\t</span>\\n\\t\\t\\t</p>\\n\\t\\t\\t<span v-else-if=\\\"item.text\\\">\\n\\t\\t\\t\\t{{ item.text }}\\n\\t\\t\\t</span>\\n\\t\\t\\t<p v-else-if=\\\"item.longtext\\\">\\n\\t\\t\\t\\t{{ item.longtext }}\\n\\t\\t\\t</p>\\n\\t\\t</span>\\n\\t</li>\\n</template>\\n\\n<script>\\nexport default {\\n\\tname: 'PopoverMenuItem',\\n\\tprops: {\\n\\t\\titem: {\\n\\t\\t\\ttype: Object,\\n\\t\\t\\trequired: true,\\n\\t\\t\\tdefault: () => {\\n\\t\\t\\t\\treturn {\\n\\t\\t\\t\\t\\tkey: 'nextcloud-link',\\n\\t\\t\\t\\t\\thref: 'https://nextcloud.com',\\n\\t\\t\\t\\t\\ticon: 'icon-links',\\n\\t\\t\\t\\t\\ttext: 'Nextcloud',\\n\\t\\t\\t\\t}\\n\\t\\t\\t},\\n\\t\\t\\t// check the input types\\n\\t\\t\\t// TODO: add more validation of types\\n\\t\\t\\tvalidator: item => {\\n\\t\\t\\t\\t// TODO: support radio\\n\\t\\t\\t\\tif (item.input) {\\n\\t\\t\\t\\t\\treturn ['text', 'checkbox'].indexOf(item.input) !== -1\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn true\\n\\t\\t\\t},\\n\\t\\t},\\n\\t},\\n\\tcomputed: {\\n\\t\\t// random key for inputs binding if not provided\\n\\t\\tkey() {\\n\\t\\t\\treturn this.item.key\\n\\t\\t\\t\\t? this.item.key\\n\\t\\t\\t\\t: Math.round(Math.random() * 16 * 1000000).toString(16)\\n\\t\\t},\\n\\t\\ticonIsUrl() {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\t// eslint-disable-next-line no-new\\n\\t\\t\\t\\tnew URL(this.item.icon)\\n\\t\\t\\t\\treturn true\\n\\t\\t\\t} catch (_) {\\n\\t\\t\\t\\treturn false\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n\\tmethods: {\\n\\t\\t// allow us to use both link and an action on `a`\\n\\t\\t// we still need to make sure item.action exists\\n\\t\\taction(event) {\\n\\t\\t\\tif (this.item.action) {\\n\\t\\t\\t\\tthis.item.action(event)\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n\\n<style scoped>\\n\\tbutton.menuitem {\\n\\t\\ttext-align: left;\\n\\t}\\n\\n\\tbutton.menuitem * {\\n\\t\\tcursor: pointer;\\n\\t}\\n\\n\\tbutton.menuitem:disabled {\\n\\t\\topacity: 0.5 !important;\\n\\t\\tcursor: default;\\n\\t}\\n\\n\\tbutton.menuitem:disabled * {\\n\\t\\tcursor: default;\\n\\t}\\n\\n\\t.menuitem.active {\\n\\t\\tbox-shadow: inset 2px 0 var(--color-primary);\\n\\t\\tborder-radius: 0;\\n\\t}\\n</style>\\n\\n<style lang=\\\"scss\\\" scoped>\\nli {\\n\\tdisplay: flex;\\n\\tflex: 0 0 auto;\\n\\n\\t&.hidden {\\n\\t\\tdisplay: none;\\n\\t}\\n\\n\\t> button,\\n\\t> a,\\n\\t> .menuitem {\\n\\t\\tcursor: pointer;\\n\\t\\tline-height: $clickable-area;\\n\\t\\tborder: 0;\\n\\t\\tborder-radius: 0; // otherwise Safari will cut the border-radius area\\n\\t\\tbackground-color: transparent;\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: flex-start;\\n\\t\\theight: auto;\\n\\t\\tmargin: 0;\\n\\t\\tpadding: 0;\\n\\t\\tfont-weight: normal;\\n\\t\\tbox-shadow: none;\\n\\t\\twidth: 100%;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\twhite-space: nowrap;\\n\\t\\topacity: $opacity_normal;\\n\\n\\t\\t// TODO split into individual components for readability\\n\\t\\tspan[class^='icon-'],\\n\\t\\tspan[class*=' icon-'],\\n\\t\\t&[class^='icon-'],\\n\\t\\t&[class*=' icon-'] {\\n\\t\\t\\tmin-width: 0; /* Overwrite icons*/\\n\\t\\t\\tmin-height: 0;\\n\\t\\t\\tbackground-position: #{$icon-margin} center;\\n\\t\\t\\tbackground-size: $icon-size;\\n\\t\\t}\\n\\n\\t\\tspan[class^='icon-'],\\n\\t\\tspan[class*=' icon-'] {\\n\\t\\t\\t/* Keep padding to define the width to\\n\\t\\t\\t\\tassure correct position of a possible text */\\n\\t\\t\\tpadding: #{$clickable-area / 2} 0 #{$clickable-area / 2} $clickable-area;\\n\\t\\t}\\n\\n\\t\\t// If no icons set, force left margin to align\\n\\t\\t&:not([class^='icon-']):not([class*='icon-']) {\\n\\t\\t\\t> span,\\n\\t\\t\\t> input,\\n\\t\\t\\t> form {\\n\\t\\t\\t\\t&:not([class^='icon-']):not([class*='icon-']):first-child {\\n\\t\\t\\t\\t\\tmargin-left: $clickable-area;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&[class^='icon-'],\\n\\t\\t&[class*=' icon-'] {\\n\\t\\t\\tpadding: 0 $icon-margin 0 $clickable-area;\\n\\t\\t}\\n\\n\\t\\t&:not(:disabled):hover,\\n\\t\\t&:not(:disabled):focus,\\n\\t\\t&:not(:disabled).active {\\n\\t\\t\\topacity: $opacity_full !important;\\n\\t\\t}\\n\\n\\t\\t/* prevent .action class to break the design */\\n\\t\\t&.action {\\n\\t\\t\\tpadding: inherit !important;\\n\\t\\t}\\n\\n\\t\\t> span {\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t}\\n\\n\\t\\t// long text area\\n\\t\\t> p {\\n\\t\\t\\twidth: 150px;\\n\\t\\t\\tline-height: 1.6em;\\n\\t\\t\\tpadding: 8px 0;\\n\\t\\t\\twhite-space: normal;\\n\\n\\t\\t\\t// in case there are no spaces like long email addresses\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t}\\n\\n\\t\\t// TODO: do we really supports it?\\n\\t\\t> select {\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tmargin-left: 6px;\\n\\t\\t}\\n\\n\\t\\t/* Add padding if contains icon+text */\\n\\t\\t&:not(:empty) {\\n\\t\\t\\tpadding-right: $icon-margin !important;\\n\\t\\t}\\n\\n\\t\\t/* DEPRECATED! old img in popover fallback\\n\\t\\t\\t* TODO: to remove */\\n\\t\\t> img {\\n\\t\\t\\twidth: $icon-size;\\n\\t\\t\\tmargin: $icon-margin;\\n\\t\\t}\\n\\n\\t\\t/* checkbox/radio fixes */\\n\\t\\t> input.radio + label,\\n\\t\\t> input.checkbox + label {\\n\\t\\t\\tpadding: 0 !important;\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\t\\t> input.checkbox + label::before {\\n\\t\\t\\tmargin: -2px 13px 0;\\n\\t\\t}\\n\\t\\t> input.radio + label::before {\\n\\t\\t\\tmargin: -2px 12px 0;\\n\\t\\t}\\n\\t\\t> input:not([type=radio]):not([type=checkbox]):not([type=image]) {\\n\\t\\t\\twidth: 150px;\\n\\t\\t}\\n\\n\\t\\t// Forms & text inputs\\n\\t\\tform {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex: 1 1 auto;\\n\\t\\t\\t/* put a small space between text and form\\n\\t\\t\\t\\tif there is an element before */\\n\\t\\t\\t&:not(:first-child) {\\n\\t\\t\\t\\tmargin-left: 5px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t/* no margin if hidden span before */\\n\\t\\t> span.hidden + form,\\n\\t\\t> span[style*='display:none'] + form {\\n\\t\\t\\tmargin-left: 0;\\n\\t\\t}\\n\\t\\t/* Inputs inside popover supports text, submit & reset */\\n\\t\\tinput {\\n\\t\\t\\tmin-width: $clickable-area;\\n\\t\\t\\tmax-height: #{$clickable-area - 4px}; /* twice the element margin-y */\\n\\t\\t\\tmargin: 2px 0;\\n\\t\\t\\tflex: 1 1 auto;\\n\\t\\t\\t// space between inline inputs\\n\\t\\t\\t&:not(:first-child) {\\n\\t\\t\\t\\tmargin-left: 5px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t// TODO: do that in js, should be cleaner\\n\\t/* css hack, only first not hidden */\\n\\t&:not(.hidden):not([style*='display:none']) {\\n\\t\\t&:first-of-type {\\n\\t\\t\\t> button, > a, > .menuitem {\\n\\t\\t\\t\\t> form, > input {\\n\\t\\t\\t\\t\\tmargin-top: $icon-margin - 2px; // minus the input margin\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t&:last-of-type {\\n\\t\\t\\t> button, > a, > .menuitem {\\n\\t\\t\\t\\t> form, > input {\\n\\t\\t\\t\\t\\tmargin-bottom: $icon-margin - 2px; // minus the input margin\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\t> button {\\n\\t\\tpadding: 0;\\n\\t\\tspan {\\n\\t\\t\\topacity: $opacity_full;\\n\\t\\t}\\n\\t}\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.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, \".material-design-icon[data-v-2d3b91c8]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}li[data-v-2d3b91c8]{display:flex;flex:0 0 auto}li.hidden[data-v-2d3b91c8]{display:none}li>button[data-v-2d3b91c8],li>a[data-v-2d3b91c8],li>.menuitem[data-v-2d3b91c8]{cursor:pointer;line-height:44px;border:0;border-radius:0;background-color:transparent;display:flex;align-items:flex-start;height:auto;margin:0;padding:0;font-weight:normal;box-shadow:none;width:100%;color:var(--color-main-text);white-space:nowrap;opacity:.7}li>button span[class^='icon-'][data-v-2d3b91c8],li>button span[class*=' icon-'][data-v-2d3b91c8],li>button[class^='icon-'][data-v-2d3b91c8],li>button[class*=' icon-'][data-v-2d3b91c8],li>a span[class^='icon-'][data-v-2d3b91c8],li>a span[class*=' icon-'][data-v-2d3b91c8],li>a[class^='icon-'][data-v-2d3b91c8],li>a[class*=' icon-'][data-v-2d3b91c8],li>.menuitem span[class^='icon-'][data-v-2d3b91c8],li>.menuitem span[class*=' icon-'][data-v-2d3b91c8],li>.menuitem[class^='icon-'][data-v-2d3b91c8],li>.menuitem[class*=' icon-'][data-v-2d3b91c8]{min-width:0;min-height:0;background-position:14px center;background-size:16px}li>button span[class^='icon-'][data-v-2d3b91c8],li>button span[class*=' icon-'][data-v-2d3b91c8],li>a span[class^='icon-'][data-v-2d3b91c8],li>a span[class*=' icon-'][data-v-2d3b91c8],li>.menuitem span[class^='icon-'][data-v-2d3b91c8],li>.menuitem span[class*=' icon-'][data-v-2d3b91c8]{padding:22px 0 22px 44px}li>button:not([class^='icon-']):not([class*='icon-'])>span[data-v-2d3b91c8]:not([class^='icon-']):not([class*='icon-']):first-child,li>button:not([class^='icon-']):not([class*='icon-'])>input[data-v-2d3b91c8]:not([class^='icon-']):not([class*='icon-']):first-child,li>button:not([class^='icon-']):not([class*='icon-'])>form[data-v-2d3b91c8]:not([class^='icon-']):not([class*='icon-']):first-child,li>a:not([class^='icon-']):not([class*='icon-'])>span[data-v-2d3b91c8]:not([class^='icon-']):not([class*='icon-']):first-child,li>a:not([class^='icon-']):not([class*='icon-'])>input[data-v-2d3b91c8]:not([class^='icon-']):not([class*='icon-']):first-child,li>a:not([class^='icon-']):not([class*='icon-'])>form[data-v-2d3b91c8]:not([class^='icon-']):not([class*='icon-']):first-child,li>.menuitem:not([class^='icon-']):not([class*='icon-'])>span[data-v-2d3b91c8]:not([class^='icon-']):not([class*='icon-']):first-child,li>.menuitem:not([class^='icon-']):not([class*='icon-'])>input[data-v-2d3b91c8]:not([class^='icon-']):not([class*='icon-']):first-child,li>.menuitem:not([class^='icon-']):not([class*='icon-'])>form[data-v-2d3b91c8]:not([class^='icon-']):not([class*='icon-']):first-child{margin-left:44px}li>button[class^='icon-'][data-v-2d3b91c8],li>button[class*=' icon-'][data-v-2d3b91c8],li>a[class^='icon-'][data-v-2d3b91c8],li>a[class*=' icon-'][data-v-2d3b91c8],li>.menuitem[class^='icon-'][data-v-2d3b91c8],li>.menuitem[class*=' icon-'][data-v-2d3b91c8]{padding:0 14px 0 44px}li>button[data-v-2d3b91c8]:not(:disabled):hover,li>button[data-v-2d3b91c8]:not(:disabled):focus,li>button:not(:disabled).active[data-v-2d3b91c8],li>a[data-v-2d3b91c8]:not(:disabled):hover,li>a[data-v-2d3b91c8]:not(:disabled):focus,li>a:not(:disabled).active[data-v-2d3b91c8],li>.menuitem[data-v-2d3b91c8]:not(:disabled):hover,li>.menuitem[data-v-2d3b91c8]:not(:disabled):focus,li>.menuitem:not(:disabled).active[data-v-2d3b91c8]{opacity:1 !important}li>button.action[data-v-2d3b91c8],li>a.action[data-v-2d3b91c8],li>.menuitem.action[data-v-2d3b91c8]{padding:inherit !important}li>button>span[data-v-2d3b91c8],li>a>span[data-v-2d3b91c8],li>.menuitem>span[data-v-2d3b91c8]{cursor:pointer;white-space:nowrap}li>button>p[data-v-2d3b91c8],li>a>p[data-v-2d3b91c8],li>.menuitem>p[data-v-2d3b91c8]{width:150px;line-height:1.6em;padding:8px 0;white-space:normal;overflow:hidden;text-overflow:ellipsis}li>button>select[data-v-2d3b91c8],li>a>select[data-v-2d3b91c8],li>.menuitem>select[data-v-2d3b91c8]{margin:0;margin-left:6px}li>button[data-v-2d3b91c8]:not(:empty),li>a[data-v-2d3b91c8]:not(:empty),li>.menuitem[data-v-2d3b91c8]:not(:empty){padding-right:14px !important}li>button>img[data-v-2d3b91c8],li>a>img[data-v-2d3b91c8],li>.menuitem>img[data-v-2d3b91c8]{width:16px;margin:14px}li>button>input.radio+label[data-v-2d3b91c8],li>button>input.checkbox+label[data-v-2d3b91c8],li>a>input.radio+label[data-v-2d3b91c8],li>a>input.checkbox+label[data-v-2d3b91c8],li>.menuitem>input.radio+label[data-v-2d3b91c8],li>.menuitem>input.checkbox+label[data-v-2d3b91c8]{padding:0 !important;width:100%}li>button>input.checkbox+label[data-v-2d3b91c8]::before,li>a>input.checkbox+label[data-v-2d3b91c8]::before,li>.menuitem>input.checkbox+label[data-v-2d3b91c8]::before{margin:-2px 13px 0}li>button>input.radio+label[data-v-2d3b91c8]::before,li>a>input.radio+label[data-v-2d3b91c8]::before,li>.menuitem>input.radio+label[data-v-2d3b91c8]::before{margin:-2px 12px 0}li>button>input[data-v-2d3b91c8]:not([type=radio]):not([type=checkbox]):not([type=image]),li>a>input[data-v-2d3b91c8]:not([type=radio]):not([type=checkbox]):not([type=image]),li>.menuitem>input[data-v-2d3b91c8]:not([type=radio]):not([type=checkbox]):not([type=image]){width:150px}li>button form[data-v-2d3b91c8],li>a form[data-v-2d3b91c8],li>.menuitem form[data-v-2d3b91c8]{display:flex;flex:1 1 auto}li>button form[data-v-2d3b91c8]:not(:first-child),li>a form[data-v-2d3b91c8]:not(:first-child),li>.menuitem form[data-v-2d3b91c8]:not(:first-child){margin-left:5px}li>button>span.hidden+form[data-v-2d3b91c8],li>button>span[style*='display:none']+form[data-v-2d3b91c8],li>a>span.hidden+form[data-v-2d3b91c8],li>a>span[style*='display:none']+form[data-v-2d3b91c8],li>.menuitem>span.hidden+form[data-v-2d3b91c8],li>.menuitem>span[style*='display:none']+form[data-v-2d3b91c8]{margin-left:0}li>button input[data-v-2d3b91c8],li>a input[data-v-2d3b91c8],li>.menuitem input[data-v-2d3b91c8]{min-width:44px;max-height:40px;margin:2px 0;flex:1 1 auto}li>button input[data-v-2d3b91c8]:not(:first-child),li>a input[data-v-2d3b91c8]:not(:first-child),li>.menuitem input[data-v-2d3b91c8]:not(:first-child){margin-left:5px}li:not(.hidden):not([style*='display:none']):first-of-type>button>form[data-v-2d3b91c8],li:not(.hidden):not([style*='display:none']):first-of-type>button>input[data-v-2d3b91c8],li:not(.hidden):not([style*='display:none']):first-of-type>a>form[data-v-2d3b91c8],li:not(.hidden):not([style*='display:none']):first-of-type>a>input[data-v-2d3b91c8],li:not(.hidden):not([style*='display:none']):first-of-type>.menuitem>form[data-v-2d3b91c8],li:not(.hidden):not([style*='display:none']):first-of-type>.menuitem>input[data-v-2d3b91c8]{margin-top:12px}li:not(.hidden):not([style*='display:none']):last-of-type>button>form[data-v-2d3b91c8],li:not(.hidden):not([style*='display:none']):last-of-type>button>input[data-v-2d3b91c8],li:not(.hidden):not([style*='display:none']):last-of-type>a>form[data-v-2d3b91c8],li:not(.hidden):not([style*='display:none']):last-of-type>a>input[data-v-2d3b91c8],li:not(.hidden):not([style*='display:none']):last-of-type>.menuitem>form[data-v-2d3b91c8],li:not(.hidden):not([style*='display:none']):last-of-type>.menuitem>input[data-v-2d3b91c8]{margin-bottom:12px}li>button[data-v-2d3b91c8]{padding:0}li>button span[data-v-2d3b91c8]{opacity:1}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../assets/material-icons.css\",\"webpack://./PopoverMenuItem.vue\",\"webpack://./../../assets/variables.scss\"],\"names\":[],\"mappings\":\"AAGA,uCACC,YAAa,CACb,iBAAkB,CAClB,mBAAoB,CACpB,kBAAmB,CACnB,sBAAuB,CCqMxB,oBACC,YAAa,CACb,aAAc,CAFf,2BAKE,YAAa,CALf,+EAWE,cAAe,CACf,gBChMmB,CDiMnB,QAAS,CACT,eAAgB,CAChB,4BAA6B,CAC7B,YAAa,CACb,sBAAuB,CACvB,WAAY,CACZ,QAAS,CACT,SAAU,CACV,kBAAmB,CACnB,eAAgB,CAChB,UAAW,CACX,4BAA6B,CAC7B,kBAAmB,CACnB,UC5LiB,CDkKnB,giBAiCG,WAAY,CACZ,YAAa,CACb,+BAA2C,CAC3C,oBCpNa,CDgLhB,+RA2CG,wBC/NkB,CDoLrB,iqCAoDK,gBCxOgB,CDoLrB,iQA2DG,qBC/OkB,CDoLrB,6aAiEG,oBAAiC,CAjEpC,oGAsEG,0BAA2B,CAtE9B,8FA0EG,cAAe,CACf,kBAAmB,CA3EtB,qFAgFG,WAAY,CACZ,iBAAkB,CAClB,aAAc,CACd,kBAAmB,CAGnB,eAAgB,CAChB,sBAAuB,CAvF1B,oGA4FG,QAAS,CACT,eAAgB,CA7FnB,mHAkGG,6BAAsC,CAlGzC,2FAwGG,UCxRa,CDyRb,WCrR6C,CD4KhD,mRA+GG,oBAAqB,CACrB,UAAW,CAhHd,sKAmHG,kBAAmB,CAnHtB,6JAsHG,kBAAmB,CAtHtB,4QAyHG,WAAY,CAzHf,8FA8HG,YAAa,CACb,aAAc,CA/HjB,oJAmII,eAAgB,CAnIpB,oTAyIG,aAAc,CAzIjB,iGA6IG,cCjUkB,CDkUlB,eAAY,CACZ,YAAa,CACb,aAAc,CAhJjB,uJAmJI,eAAgB,CAnJpB,+gBA8JK,eAA8B,CA9JnC,ygBAqKK,kBAAiC,CArKtC,2BA2KE,SAAU,CA3KZ,gCA6KG,SC9Ua\",\"sourcesContent\":[\"/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon {\\n\\tdisplay: flex;\\n\\talign-self: center;\\n\\tjustify-self: center;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\",\"$scope_version:\\\"0a7f1bc\\\"; @import 'variables'; @import 'material-icons';\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nli {\\n\\tdisplay: flex;\\n\\tflex: 0 0 auto;\\n\\n\\t&.hidden {\\n\\t\\tdisplay: none;\\n\\t}\\n\\n\\t> button,\\n\\t> a,\\n\\t> .menuitem {\\n\\t\\tcursor: pointer;\\n\\t\\tline-height: $clickable-area;\\n\\t\\tborder: 0;\\n\\t\\tborder-radius: 0; // otherwise Safari will cut the border-radius area\\n\\t\\tbackground-color: transparent;\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: flex-start;\\n\\t\\theight: auto;\\n\\t\\tmargin: 0;\\n\\t\\tpadding: 0;\\n\\t\\tfont-weight: normal;\\n\\t\\tbox-shadow: none;\\n\\t\\twidth: 100%;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\twhite-space: nowrap;\\n\\t\\topacity: $opacity_normal;\\n\\n\\t\\t// TODO split into individual components for readability\\n\\t\\tspan[class^='icon-'],\\n\\t\\tspan[class*=' icon-'],\\n\\t\\t&[class^='icon-'],\\n\\t\\t&[class*=' icon-'] {\\n\\t\\t\\tmin-width: 0; /* Overwrite icons*/\\n\\t\\t\\tmin-height: 0;\\n\\t\\t\\tbackground-position: #{$icon-margin} center;\\n\\t\\t\\tbackground-size: $icon-size;\\n\\t\\t}\\n\\n\\t\\tspan[class^='icon-'],\\n\\t\\tspan[class*=' icon-'] {\\n\\t\\t\\t/* Keep padding to define the width to\\n\\t\\t\\t\\tassure correct position of a possible text */\\n\\t\\t\\tpadding: #{$clickable-area / 2} 0 #{$clickable-area / 2} $clickable-area;\\n\\t\\t}\\n\\n\\t\\t// If no icons set, force left margin to align\\n\\t\\t&:not([class^='icon-']):not([class*='icon-']) {\\n\\t\\t\\t> span,\\n\\t\\t\\t> input,\\n\\t\\t\\t> form {\\n\\t\\t\\t\\t&:not([class^='icon-']):not([class*='icon-']):first-child {\\n\\t\\t\\t\\t\\tmargin-left: $clickable-area;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&[class^='icon-'],\\n\\t\\t&[class*=' icon-'] {\\n\\t\\t\\tpadding: 0 $icon-margin 0 $clickable-area;\\n\\t\\t}\\n\\n\\t\\t&:not(:disabled):hover,\\n\\t\\t&:not(:disabled):focus,\\n\\t\\t&:not(:disabled).active {\\n\\t\\t\\topacity: $opacity_full !important;\\n\\t\\t}\\n\\n\\t\\t/* prevent .action class to break the design */\\n\\t\\t&.action {\\n\\t\\t\\tpadding: inherit !important;\\n\\t\\t}\\n\\n\\t\\t> span {\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t}\\n\\n\\t\\t// long text area\\n\\t\\t> p {\\n\\t\\t\\twidth: 150px;\\n\\t\\t\\tline-height: 1.6em;\\n\\t\\t\\tpadding: 8px 0;\\n\\t\\t\\twhite-space: normal;\\n\\n\\t\\t\\t// in case there are no spaces like long email addresses\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t}\\n\\n\\t\\t// TODO: do we really supports it?\\n\\t\\t> select {\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tmargin-left: 6px;\\n\\t\\t}\\n\\n\\t\\t/* Add padding if contains icon+text */\\n\\t\\t&:not(:empty) {\\n\\t\\t\\tpadding-right: $icon-margin !important;\\n\\t\\t}\\n\\n\\t\\t/* DEPRECATED! old img in popover fallback\\n\\t\\t\\t* TODO: to remove */\\n\\t\\t> img {\\n\\t\\t\\twidth: $icon-size;\\n\\t\\t\\tmargin: $icon-margin;\\n\\t\\t}\\n\\n\\t\\t/* checkbox/radio fixes */\\n\\t\\t> input.radio + label,\\n\\t\\t> input.checkbox + label {\\n\\t\\t\\tpadding: 0 !important;\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\t\\t> input.checkbox + label::before {\\n\\t\\t\\tmargin: -2px 13px 0;\\n\\t\\t}\\n\\t\\t> input.radio + label::before {\\n\\t\\t\\tmargin: -2px 12px 0;\\n\\t\\t}\\n\\t\\t> input:not([type=radio]):not([type=checkbox]):not([type=image]) {\\n\\t\\t\\twidth: 150px;\\n\\t\\t}\\n\\n\\t\\t// Forms & text inputs\\n\\t\\tform {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex: 1 1 auto;\\n\\t\\t\\t/* put a small space between text and form\\n\\t\\t\\t\\tif there is an element before */\\n\\t\\t\\t&:not(:first-child) {\\n\\t\\t\\t\\tmargin-left: 5px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t/* no margin if hidden span before */\\n\\t\\t> span.hidden + form,\\n\\t\\t> span[style*='display:none'] + form {\\n\\t\\t\\tmargin-left: 0;\\n\\t\\t}\\n\\t\\t/* Inputs inside popover supports text, submit & reset */\\n\\t\\tinput {\\n\\t\\t\\tmin-width: $clickable-area;\\n\\t\\t\\tmax-height: #{$clickable-area - 4px}; /* twice the element margin-y */\\n\\t\\t\\tmargin: 2px 0;\\n\\t\\t\\tflex: 1 1 auto;\\n\\t\\t\\t// space between inline inputs\\n\\t\\t\\t&:not(:first-child) {\\n\\t\\t\\t\\tmargin-left: 5px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t// TODO: do that in js, should be cleaner\\n\\t/* css hack, only first not hidden */\\n\\t&:not(.hidden):not([style*='display:none']) {\\n\\t\\t&:first-of-type {\\n\\t\\t\\t> button, > a, > .menuitem {\\n\\t\\t\\t\\t> form, > input {\\n\\t\\t\\t\\t\\tmargin-top: $icon-margin - 2px; // minus the input margin\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t&:last-of-type {\\n\\t\\t\\t> button, > a, > .menuitem {\\n\\t\\t\\t\\t> form, > input {\\n\\t\\t\\t\\t\\tmargin-bottom: $icon-margin - 2px; // minus the input margin\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\t> button {\\n\\t\\tpadding: 0;\\n\\t\\tspan {\\n\\t\\t\\topacity: $opacity_full;\\n\\t\\t}\\n\\t}\\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\\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\\n// recommended is 48px\\n// 44px is what we choose and have very good visual-to-usability ratio\\n$clickable-area: 44px;\\n\\n// background icon size\\n// also used for the scss icon font\\n$icon-size: 16px;\\n\\n// icon padding for a $clickable-area width and a $icon-size icon\\n// ( 44px - 16px ) / 2\\n$icon-margin: ($clickable-area - $icon-size) / 2;\\n\\n// transparency background for icons\\n$icon-focus-bg: rgba(127, 127, 127, .25);\\n\\n// popovermenu arrow width from the triangle center\\n$arrow-width: 9px;\\n\\n// opacities\\n$opacity_disabled: .5;\\n$opacity_normal: .7;\\n$opacity_full: 1;\\n\\n// menu round background hover feedback\\n// good looking on dark AND white bg\\n$action-background-hover: rgba(127, 127, 127, .25);\\n\\n// various structure data used in the \\n// `AppNavigation` component\\n$header-height: 50px;\\n$navigation-width: 300px;\\n\\n// mobile breakpoint\\n$breakpoint-mobile: 1024px;\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.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, \".material-design-icon[data-v-4dae360a]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}ul[data-v-4dae360a]{display:flex;flex-direction:column}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../assets/material-icons.css\",\"webpack://./PopoverMenu.vue\"],\"names\":[],\"mappings\":\"AAGA,uCACC,YAAa,CACb,iBAAkB,CAClB,mBAAoB,CACpB,kBAAmB,CACnB,sBAAuB,CCkDxB,oBACC,YAAa,CACb,qBAAsB\",\"sourcesContent\":[\"/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon {\\n\\tdisplay: flex;\\n\\talign-self: center;\\n\\tjustify-self: center;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\",\"$scope_version:\\\"0a7f1bc\\\"; @import 'variables'; @import 'material-icons';\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nul {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/**\n * @copyright Copyright (c) 2020 Raimund Schlüßler <raimund.schluessler@mailbox.org>\n *\n * @author Raimund Schlüßler <raimund.schluessler@mailbox.org>\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\n/**\n * Find the ranges of a substr in a given string\n *\n * @param {String} text The text to search in\n * @param {String} search The text to search for\n * @returns {Array} The array of ranges to highlight\n */\nconst FindRanges = (text, search) => {\n\tconst ranges = []\n\tlet currentIndex = 0\n\tlet index = text.toLowerCase().indexOf(search.toLowerCase(), currentIndex)\n\t// Variable to track that we don't iterate more often than the length of the text.\n\t// Shouldn't happen anyway, but just to be sure to not hang the browser for some reason.\n\tlet i = 0\n\twhile (index > -1 && i < text.length) {\n\t\tcurrentIndex = index + search.length\n\t\tranges.push({ start: index, end: currentIndex })\n\n\t\tindex = text.toLowerCase().indexOf(search.toLowerCase(), currentIndex)\n\t\ti++\n\t}\n\treturn ranges\n}\n\nexport default FindRanges\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MentionBubble.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!./MentionBubble.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2020 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<template>\n\t<span :class=\"{'mention-bubble--primary': primary}\"\n\t\tclass=\"mention-bubble\"\n\t\tcontenteditable=\"false\">\n\t\t<span class=\"mention-bubble__wrapper\">\n\t\t\t<span class=\"mention-bubble__content\">\n\t\t\t\t<!-- Avatar or icon -->\n\t\t\t\t<span :class=\"[icon, `mention-bubble__icon--${avatarUrl ? 'with-avatar' : ''}`]\"\n\t\t\t\t\t:style=\"avatarUrl ? { backgroundImage: `url(${avatarUrl})` } : null\"\n\t\t\t\t\tclass=\"mention-bubble__icon\" />\n\n\t\t\t\t<!-- Title -->\n\t\t\t\t<span role=\"heading\" class=\"mention-bubble__title\" :title=\"label\" />\n\t\t\t</span>\n\n\t\t\t<!-- Selectable text for copy/paste -->\n\t\t\t<span role=\"none\" class=\"mention-bubble__select\">{{ mentionText }}</span>\n\t\t</span>\n\t</span>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\n\nexport default {\n\tname: 'MentionBubble',\n\n\tprops: {\n\t\tid: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tlabel: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsource: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tprimary: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tcomputed: {\n\t\tavatarUrl() {\n\t\t\treturn this.id && this.source === 'users'\n\t\t\t\t? this.getAvatarUrl(this.id, 44)\n\t\t\t\t: null\n\t\t},\n\t\tmentionText() {\n\t\t\treturn this.id.indexOf(' ') === -1\n\t\t\t\t? `@${this.id}`\n\t\t\t\t: `@\"${this.id}\"`\n\t\t},\n\t},\n\n\tmethods: {\n\t\tgetAvatarUrl(user, size) {\n\t\t\treturn generateUrl('/avatar/{user}/{size}', {\n\t\t\t\tuser,\n\t\t\t\tsize,\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n$bubble-height: 20px;\n$bubble-max-width: 150px;\n$bubble-padding: 2px;\n$bubble-avatar-size: $bubble-height - 2 * $bubble-padding;\n\n.mention-bubble {\n\t&--primary &__content {\n\t\tcolor: var(--color-primary-text);\n\t\tbackground-color: var(--color-primary-element);\n\t}\n\n\t&__wrapper {\n\t\tmax-width: $bubble-max-width;\n\t\t// Align with text\n\t\theight: $bubble-height - $bubble-padding;\n\t\tvertical-align: text-bottom;\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t}\n\n\t&__content {\n\t\tdisplay: inline-flex;\n\t\toverflow: hidden;\n\t\talign-items: center;\n\t\tmax-width: 100%;\n\t\theight: $bubble-height ;\n\t\t-webkit-user-select: none;\n\t\tuser-select: none;\n\t\tpadding-right: $bubble-padding * 3;\n\t\tpadding-left: $bubble-padding;\n\t\tborder-radius: $bubble-height / 2;\n\t\tbackground-color: var(--color-background-dark);\n\t}\n\n\t&__icon {\n\t\tposition: relative;\n\t\twidth: $bubble-avatar-size;\n\t\theight: $bubble-avatar-size;\n\t\tborder-radius: $bubble-avatar-size / 2;\n\t\tbackground-color: var(--color-background-darker);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: center;\n\t\tbackground-size: $bubble-avatar-size - 2 * $bubble-padding;\n\n\t\t&--with-avatar {\n\t\t\tcolor: inherit;\n\t\t\tbackground-size: cover;\n\t\t}\n\t}\n\n\t&__title {\n\t\toverflow: hidden;\n\t\tmargin-left: $bubble-padding;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\t// Put label in ::before so it is not selectable\n\t\t&::before {\n\t\t\tcontent: attr(title);\n\t\t}\n\t}\n\n\t// Hide the mention id so it is selectable\n\t&__select {\n\t\tposition: absolute;\n\t\tz-index: -1;\n\t\tleft: -1000px;\n\t}\n}\n\n</style>\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./MentionBubble.vue?vue&type=style&index=0&id=724f9d58&lang=scss&scoped=true&\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import { render, staticRenderFns } from \"./MentionBubble.vue?vue&type=template&id=724f9d58&scoped=true&\"\nimport script from \"./MentionBubble.vue?vue&type=script&lang=js&\"\nexport * from \"./MentionBubble.vue?vue&type=script&lang=js&\"\nimport style0 from \"./MentionBubble.vue?vue&type=style&index=0&id=724f9d58&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"724f9d58\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"mention-bubble\",class:{'mention-bubble--primary': _vm.primary},attrs:{\"contenteditable\":\"false\"}},[_c('span',{staticClass:\"mention-bubble__wrapper\"},[_c('span',{staticClass:\"mention-bubble__content\"},[_c('span',{staticClass:\"mention-bubble__icon\",class:[_vm.icon, (\"mention-bubble__icon--\" + (_vm.avatarUrl ? 'with-avatar' : ''))],style:(_vm.avatarUrl ? { backgroundImage: (\"url(\" + _vm.avatarUrl + \")\") } : null)}),_vm._v(\" \"),_c('span',{staticClass:\"mention-bubble__title\",attrs:{\"role\":\"heading\",\"title\":_vm.label}})]),_vm._v(\" \"),_c('span',{staticClass:\"mention-bubble__select\",attrs:{\"role\":\"none\"}},[_vm._v(_vm._s(_vm.mentionText))])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 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\nimport escapeHtml from 'escape-html'\nimport Linkify from '../../utils/Linkify'\nimport stripTags from 'striptags'\nimport Vue from 'vue'\n\nimport MentionBubble from '../../components/RichContenteditable/MentionBubble'\n\n// Beginning or whitespace. Non-capturing group\nconst MENTION_START = '(?:^|\\\\s)'\n// Anything that is not text or end-of-line. Non-capturing group\nconst MENTION_END = '(?:[^a-z]|$)'\nexport const USERID_REGEX = new RegExp(`${MENTION_START}(@[a-zA-Z0-9_.@\\\\-']+)(${MENTION_END})`, 'gi')\nexport const USERID_REGEX_WITH_SPACE = new RegExp(`${MENTION_START}(@"[a-zA-Z0-9 _.@\\\\-']+")(${MENTION_END})`, 'gi')\n\nexport default {\n\tprops: {\n\t\tuserData: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({}),\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Convert the value string to html for the inner content\n\t\t *\n\t\t * @param {string} value the content without html\n\t\t * @returns {string} rendered html\n\t\t */\n\t\trenderContent(value) {\n\t\t\t// Sanitize the value prop\n\t\t\tconst sanitizedValue = escapeHtml(value)\n\n\t\t\t// Extract all the userIds\n\t\t\tconst splitValue = sanitizedValue.split(USERID_REGEX)\n\t\t\t\t.map(part => part.split(USERID_REGEX_WITH_SPACE)).flat()\n\n\t\t\t// Replace userIds by html\n\t\t\treturn splitValue\n\t\t\t\t.map(part => {\n\t\t\t\t\t// When splitting, the string is always putting the userIds\n\t\t\t\t\t// on the the uneven indexes. We only want to generate the mentions html\n\t\t\t\t\tif (!part.startsWith('@')) {\n\t\t\t\t\t\t// This part doesn't contain a mention, let's make sure links are parsed\n\t\t\t\t\t\treturn Linkify(part)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Extracting the id, nuking the \" and @\n\t\t\t\t\tconst id = part.replace(/@|"/gi, '')\n\t\t\t\t\t// Compiling template and prepend with the space we removed during the split\n\t\t\t\t\treturn ' ' + this.genSelectTemplate(id)\n\t\t\t\t})\n\t\t\t\t.join('')\n\t\t\t\t.replace(/\\n/gmi, '<br>')\n\t\t\t\t.replace(/&/gmi, '&')\n\t\t},\n\n\t\t/**\n\t\t * Convert the innerHtml content to a string with mentions as text\n\t\t *\n\t\t * @param {string} content the content without html\n\t\t * @returns {string}\n\t\t */\n\t\tparseContent(content) {\n\t\t\tlet text = content.replace(/<br>/gmi, '\\n')\n\t\t\ttext = text.replace(/ /gmi, ' ')\n\t\t\ttext = text.replace(/&/gmi, '&')\n\n\t\t\t// Convert the mentions to text only\n\t\t\t// first we replace divs with new lines\n\t\t\ttext = text.replace(/<\\/div>/gmi, '\\n')\n\t\t\t// then we remove all leftover html\n\t\t\ttext = stripTags(text, '<div>')\n\t\t\ttext = stripTags(text)\n\n\t\t\treturn text\n\t\t},\n\n\t\t/**\n\t\t * Generate an autocompletion popup entry template\n\t\t *\n\t\t * @param {string} value the value to match against the userData\n\t\t * @returns {string}\n\t\t */\n\t\tgenSelectTemplate(value) {\n\t\t\tconst data = this.userData[value]\n\n\t\t\t// Fallback to @mention in case no data matches\n\t\t\tif (!data) {\n\t\t\t\t// return `@${value}`\n\t\t\t\treturn value.indexOf(' ') === -1\n\t\t\t\t\t? `@${value}`\n\t\t\t\t\t: `@\"${value}\"`\n\t\t\t}\n\n\t\t\t// Return template and make sure we strip of new lines and tabs\n\t\t\treturn this.renderComponentHtml(data, MentionBubble).replace(/[\\n\\t]/gmi, '')\n\t\t},\n\n\t\t/**\n\t\t * Render a component and return its html content\n\t\t *\n\t\t * @param {Object} propsData the props to pass to the component\n\t\t * @param {Object} component the component to render\n\t\t * @returns {string} the rendered html\n\t\t */\n\t\trenderComponentHtml(propsData, component) {\n\t\t\tconst View = Vue.extend(component)\n\t\t\tconst Item = new View({\n\t\t\t\tpropsData,\n\t\t\t})\n\n\t\t\t// Prepare mountpoint\n\t\t\tconst wrapper = document.createElement('div')\n\t\t\tconst mount = document.createElement('div')\n\t\t\twrapper.style.display = 'none'\n\t\t\twrapper.appendChild(mount)\n\t\t\tdocument.body.appendChild(wrapper)\n\n\t\t\t// Mount and get raw html\n\t\t\tItem.$mount(mount)\n\t\t\tconst renderedHtml = wrapper.innerHTML\n\n\t\t\t// Destroy\n\t\t\tItem.$destroy()\n\t\t\twrapper.remove()\n\n\t\t\treturn renderedHtml\n\t\t},\n\t},\n}\n","<!--\n - @copyright Copyright (c) 2021 Raimund Schlüßler <raimund.schluessler@mailbox.org>\n -\n - @author Raimund Schlüßler <raimund.schluessler@mailbox.org>\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\n<docs>\n\n### General description\n\nHighlight a string with html <strong>. Accepts a substring to highlight or an array with ranges.\n\n### Usage\n\n```vue\n<template>\n\t<div>\n\t\t<Highlight text=\"Highlight me please!\" search=\"me\" />\n\t\t<br />\n\t\t<Highlight text=\"Highlight me please!\" :highlight=\"[{ start: 4, end: 12 }]\" />\n\t</div>\n</template>\n```\n</docs>\n\n<script>\nimport FindRanges from '../../utils/FindRanges'\n\nexport default {\n\tname: 'Highlight',\n\tprops: {\n\t\t/**\n\t\t * The string to display\n\t\t */\n\t\ttext: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * The string to match and highlight\n\t\t */\n\t\tsearch: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * The ranges to highlight, takes precedence over the search prop.\n\t\t */\n\t\thighlight: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t},\n\tcomputed: {\n\t\t/**\n\t\t * The indice ranges which should be highlighted.\n\t\t * If an array with ranges is provided, we use it. Otherwise\n\t\t * we calculate it based on the provided substring to highlight.\n\t\t *\n\t\t * @returns {Array} The array of ranges to highlight\n\t\t */\n\t\tranges() {\n\t\t\tlet ranges = []\n\t\t\t// If the search term and the highlight array is empty, return early with empty array\n\t\t\tif (!this.search && this.highlight.length === 0) {\n\t\t\t\treturn ranges\n\t\t\t}\n\n\t\t\t// If there are ranges to highlight provided, we use this array.\n\t\t\tif (this.highlight.length > 0) {\n\t\t\t\tranges = this.highlight\n\t\t\t// Otherwise we check the text to highlight for matches of the search term.\n\t\t\t} else {\n\t\t\t\tranges = FindRanges(this.text, this.search)\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * Ensure that the start of each range is equal to or smaller than the end\n\t\t\t */\n\t\t\tranges.forEach((range, i) => {\n\t\t\t\tif (range.end < range.start) {\n\t\t\t\t\tranges[i] = {\n\t\t\t\t\t\tstart: range.end,\n\t\t\t\t\t\tend: range.start,\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\n\t\t\t/**\n\t\t\t * Validate the ranges array to be within the string length\n\t\t\t * and discard ranges which are completely out of bonds.\n\t\t\t */\n\t\t\tranges = ranges.reduce((validRanges, range) => {\n\t\t\t\tif (range.start < this.text.length && range.end > 0) {\n\t\t\t\t\tvalidRanges.push({\n\t\t\t\t\t\tstart: (range.start < 0) ? 0 : range.start,\n\t\t\t\t\t\tend: (range.end > this.text.length) ? this.text.length : range.end,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\treturn validRanges\n\t\t\t}, [])\n\n\t\t\t/**\n\t\t\t * Sort ranges ascendingly (necessary for next step)\n\t\t\t */\n\t\t\tranges.sort((a, b) => {\n\t\t\t\treturn a.start - b.start\n\t\t\t})\n\n\t\t\t/**\n\t\t\t * Merge overlapping or adjacent ranges\n\t\t\t */\n\t\t\tranges = ranges.reduce((mergedRanges, range) => {\n\t\t\t\t// If there are no ranges, just add the range\n\t\t\t\tif (!mergedRanges.length) {\n\t\t\t\t\tmergedRanges.push(range)\n\t\t\t\t} else {\n\t\t\t\t\t// If the range overlaps the last range, merge them\n\t\t\t\t\tconst idx = mergedRanges.length - 1\n\t\t\t\t\tif (mergedRanges[idx].end >= range.start) {\n\t\t\t\t\t\tmergedRanges[idx] = {\n\t\t\t\t\t\t\tstart: mergedRanges[idx].start,\n\t\t\t\t\t\t\tend: Math.max(mergedRanges[idx].end, range.end),\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmergedRanges.push(range)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn mergedRanges\n\t\t\t}, [])\n\n\t\t\treturn ranges\n\t\t},\n\t\t/**\n\t\t * Calculate the different chunks to show based on the ranges to highlight.\n\t\t *\n\t\t * @returns {Array} The chunks\n\t\t */\n\t\tchunks() {\n\t\t\t// If the ranges array is empty, show only one chunk with all text\n\t\t\tif (this.ranges.length === 0) {\n\t\t\t\treturn [{\n\t\t\t\t\tstart: 0,\n\t\t\t\t\tend: this.text.length,\n\t\t\t\t\thighlight: false,\n\t\t\t\t\ttext: this.text,\n\t\t\t\t}]\n\t\t\t}\n\t\t\t// Calculate the chunks\n\t\t\tconst chunks = []\n\t\t\tlet currentIndex = 0\n\t\t\tlet currentRange = 0\n\t\t\t// Iterate over all characters in the text\n\t\t\twhile (currentIndex < this.text.length) {\n\t\t\t\t// Get the first range to highlight\n\t\t\t\tconst range = this.ranges[currentRange]\n\t\t\t\t// If the range starts at the current index, construct a chunk to highlight,\n\t\t\t\t// set the next range and continue with the next iteration.\n\t\t\t\tif (range.start === currentIndex) {\n\t\t\t\t\tchunks.push({\n\t\t\t\t\t\t...range,\n\t\t\t\t\t\thighlight: true,\n\t\t\t\t\t\ttext: this.text.substr(range.start, range.end - range.start),\n\t\t\t\t\t})\n\t\t\t\t\tcurrentRange++\n\t\t\t\t\tcurrentIndex = range.end\n\t\t\t\t\t// If this was the last range to highlight and we haven't reached the end of the text,\n\t\t\t\t\t// add the rest of the text without highlighting.\n\t\t\t\t\tif (currentRange >= this.ranges.length && currentIndex < this.text.length) {\n\t\t\t\t\t\tchunks.push({\n\t\t\t\t\t\t\tstart: currentIndex,\n\t\t\t\t\t\t\tend: this.text.length,\n\t\t\t\t\t\t\thighlight: false,\n\t\t\t\t\t\t\ttext: this.text.substr(currentIndex, this.text.length - currentIndex),\n\t\t\t\t\t\t})\n\t\t\t\t\t\t// Set the current index so the while loop ends.\n\t\t\t\t\t\tcurrentIndex = this.text.length\n\t\t\t\t\t}\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\t// If the current range does start after the current index, construct a chunk without\n\t\t\t\t// highlighting and set the current index to the start of the current range.\n\t\t\t\tchunks.push({\n\t\t\t\t\tstart: currentIndex,\n\t\t\t\t\tend: range.start,\n\t\t\t\t\thighlight: false,\n\t\t\t\t\ttext: this.text.substr(currentIndex, range.start - currentIndex),\n\t\t\t\t})\n\t\t\t\tcurrentIndex = range.start\n\t\t\t}\n\t\t\treturn chunks\n\t\t},\n\t},\n\t/**\n\t * The render function to display the component\n\t *\n\t * @param {Function} createElement The function to create VNodes\n\t * @returns {VNodes} The created VNodes\n\t */\n\trender(createElement) {\n\t\tif (!this.ranges.length) {\n\t\t\treturn createElement('span', {}, this.text)\n\t\t}\n\n\t\treturn createElement('span', {}, this.chunks.map(chunk => {\n\t\t\treturn chunk.highlight ? createElement('strong', {}, chunk.text) : chunk.text\n\t\t}))\n\t},\n}\n</script>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Highlight.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!./Highlight.vue?vue&type=script&lang=js&\"","var render, staticRenderFns\nimport script from \"./Highlight.vue?vue&type=script&lang=js&\"\nexport * from \"./Highlight.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./Highlight.vue?vue&type=custom&index=0&blockType=docs\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","/**\n * @copyright Copyright (c) 2020 Raimund Schlüßler <raimund.schluessler@mailbox.org>\n *\n * @author Raimund Schlüßler <raimund.schluessler@mailbox.org>\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\nimport Highlight from './Highlight'\n\nexport default Highlight\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nimport ___CSS_LOADER_URL_IMPORT_0___ from \"../../assets/status-icons/user-status-online.svg\";\nimport ___CSS_LOADER_URL_IMPORT_1___ from \"../../assets/status-icons/user-status-dnd.svg\";\nimport ___CSS_LOADER_URL_IMPORT_2___ from \"../../assets/status-icons/user-status-away.svg\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\nvar ___CSS_LOADER_URL_REPLACEMENT_1___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_1___);\nvar ___CSS_LOADER_URL_REPLACEMENT_2___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_2___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".material-design-icon[data-v-340ddd8f]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.avatardiv[data-v-340ddd8f]{position:relative;display:inline-block;width:var(--size);height:var(--size)}.avatardiv--unknown[data-v-340ddd8f]{position:relative;background-color:var(--color-text-maxcontrast)}.avatardiv[data-v-340ddd8f]:not(.avatardiv--unknown){background-color:#fff !important;box-shadow:0 0 5px rgba(0,0,0,0.05) inset}body.theme--dark .avatardiv[data-v-340ddd8f]:not(.avatardiv--unknown){background-color:#000 !important}.avatardiv--with-menu[data-v-340ddd8f]{cursor:pointer}.avatardiv--with-menu[data-v-340ddd8f] .trigger{position:absolute;top:0;left:0}.avatardiv--with-menu .icon-more[data-v-340ddd8f],.avatardiv--with-menu .icon-loading[data-v-340ddd8f]{display:flex;align-items:center;justify-content:center;width:var(--size);height:var(--size);cursor:pointer;background:none}.avatardiv--with-menu .icon-more[data-v-340ddd8f]{opacity:0}.avatardiv--with-menu:focus .icon-more[data-v-340ddd8f],.avatardiv--with-menu:hover .icon-more[data-v-340ddd8f]{opacity:1}.avatardiv--with-menu:focus img[data-v-340ddd8f],.avatardiv--with-menu:hover img[data-v-340ddd8f]{opacity:0.3}.avatardiv--with-menu .icon-more[data-v-340ddd8f],.avatardiv--with-menu img[data-v-340ddd8f]{transition:opacity var(--animation-quick)}.avatardiv>.unknown[data-v-340ddd8f]{position:absolute;top:0;left:0;display:block;width:100%;text-align:center;font-weight:normal;color:var(--color-main-background)}.avatardiv img[data-v-340ddd8f]{width:100%;height:100%;object-fit:cover}.avatardiv .avatardiv__user-status[data-v-340ddd8f]{position:absolute;right:-4px;bottom:-4px;max-height:18px;max-width:18px;height:40%;width:40%;line-height:15px;font-size:var(--default-font-size);border:2px solid var(--color-main-background);background-color:var(--color-main-background);background-repeat:no-repeat;background-size:16px;background-position:center;border-radius:50%}.acli:hover .avatardiv .avatardiv__user-status[data-v-340ddd8f]{border-color:var(--color-background-hover);background-color:var(--color-background-hover)}.acli.active .avatardiv .avatardiv__user-status[data-v-340ddd8f]{border-color:var(--color-primary-light);background-color:var(--color-primary-light)}.avatardiv .avatardiv__user-status--online[data-v-340ddd8f]{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \")}.avatardiv .avatardiv__user-status--dnd[data-v-340ddd8f]{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \");background-color:#ffffff}.avatardiv .avatardiv__user-status--away[data-v-340ddd8f]{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \")}.avatardiv .avatardiv__user-status--icon[data-v-340ddd8f]{border:none;background-color:transparent}.avatardiv .popovermenu-wrapper[data-v-340ddd8f]{position:relative;display:inline-block}.avatar-class-icon[data-v-340ddd8f]{border-radius:50%;background-color:var(--color-background-darker);height:100%}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../assets/material-icons.css\",\"webpack://./Avatar.vue\"],\"names\":[],\"mappings\":\"AAGA,uCACC,YAAa,CACb,iBAAkB,CAClB,mBAAoB,CACpB,kBAAmB,CACnB,sBAAuB,CC0kBxB,4BACC,iBAAkB,CAClB,oBAAqB,CACrB,iBAAkB,CAClB,kBAAmB,CAEnB,qCACC,iBAAkB,CAClB,8CAA+C,CARjD,qDAaE,gCAAiC,CAKjC,yCAA6C,CAJ7C,sEAEC,gCAAiC,CACjC,uCAKD,cAAe,CADf,iDAGC,iBAAkB,CAClB,KAAM,CACN,MAAO,CALR,uGAQC,YAAa,CACb,kBAAmB,CACnB,sBAAuB,CACvB,iBAAkB,CAClB,kBAAmB,CACnB,cAAe,CACf,eAAgB,CAdjB,kDAiBC,SAAU,CAjBX,gHAsBE,SAAU,CAtBZ,kGAyBE,WAAY,CAzBd,6FA8BC,yCAA0C,CAnD7C,qCAwDE,iBAAkB,CAClB,KAAM,CACN,MAAO,CACP,aAAc,CACd,UAAW,CACX,iBAAkB,CAClB,kBAAmB,CACnB,kCAAmC,CA/DrC,gCAoEE,UAAW,CACX,WAAY,CAEZ,gBAAiB,CAvEnB,oDA2EE,iBAAkB,CAClB,UAAW,CACX,WAAY,CACZ,eAAgB,CAChB,cAAe,CACf,UAAW,CACX,SAAU,CACV,gBAAiB,CACjB,kCAAmC,CACnC,6CAA8C,CAC9C,6CAA8C,CAC9C,2BAA4B,CAC5B,oBAAqB,CACrB,0BAA2B,CAC3B,iBAAkB,CAElB,gEACC,0CAA2C,CAC3C,8CAA+C,CAC/C,iEAEA,uCAAwC,CACxC,2CAA4C,CAjG/C,4DAqGG,wDAAyE,CArG5E,yDAwGG,wDAAsE,CACtE,wBAAyB,CAzG5B,0DA4GG,wDAAuE,CA5G1E,0DA+GG,WAAY,CACZ,4BAA6B,CAhHhC,iDAqHE,iBAAkB,CAClB,oBAAqB,CACrB,oCAID,iBAAkB,CAClB,+CAAgD,CAChD,WAAY\",\"sourcesContent\":[\"/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon {\\n\\tdisplay: flex;\\n\\talign-self: center;\\n\\tjustify-self: center;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\",\"$scope_version:\\\"0a7f1bc\\\"; @import 'variables'; @import 'material-icons';\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.avatardiv {\\n\\tposition: relative;\\n\\tdisplay: inline-block;\\n\\twidth: var(--size);\\n\\theight: var(--size);\\n\\n\\t&--unknown {\\n\\t\\tposition: relative;\\n\\t\\tbackground-color: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t&:not(&--unknown) {\\n\\t\\t// White background for avatars with transparency\\n\\t\\tbackground-color: #fff !important;\\n\\t\\tbody.theme--dark & {\\n\\t\\t\\t// And black background in dark mode, as it shines through on hover of the menu\\n\\t\\t\\tbackground-color: #000 !important;\\n\\t\\t}\\n\\t\\tbox-shadow: 0 0 5px rgba(0, 0, 0, 0.05) inset;\\n\\t}\\n\\n\\t&--with-menu {\\n\\t\\tcursor: pointer;\\n\\t\\t::v-deep .trigger {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tleft: 0;\\n\\t\\t}\\n\\t\\t.icon-more, .icon-loading {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tjustify-content: center;\\n\\t\\t\\twidth: var(--size);\\n\\t\\t\\theight: var(--size);\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\tbackground: none;\\n\\t\\t}\\n\\t\\t.icon-more {\\n\\t\\t\\topacity: 0;\\n\\t\\t}\\n\\t\\t&:focus,\\n\\t\\t&:hover {\\n\\t\\t\\t.icon-more {\\n\\t\\t\\t\\topacity: 1;\\n\\t\\t\\t}\\n\\t\\t\\timg {\\n\\t\\t\\t\\topacity: 0.3;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t.icon-more,\\n\\t\\timg {\\n\\t\\t\\ttransition: opacity var(--animation-quick);\\n\\t\\t}\\n\\t}\\n\\n\\t> .unknown {\\n\\t\\tposition: absolute;\\n\\t\\ttop: 0;\\n\\t\\tleft: 0;\\n\\t\\tdisplay: block;\\n\\t\\twidth: 100%;\\n\\t\\ttext-align: center;\\n\\t\\tfont-weight: normal;\\n\\t\\tcolor: var(--color-main-background);\\n\\t}\\n\\n\\timg {\\n\\t\\t// Cover entire area\\n\\t\\twidth: 100%;\\n\\t\\theight: 100%;\\n\\t\\t// Keep ratio\\n\\t\\tobject-fit: cover;\\n\\t}\\n\\n\\t.avatardiv__user-status {\\n\\t\\tposition: absolute;\\n\\t\\tright: -4px;\\n\\t\\tbottom: -4px;\\n\\t\\tmax-height: 18px;\\n\\t\\tmax-width: 18px;\\n\\t\\theight: 40%;\\n\\t\\twidth: 40%;\\n\\t\\tline-height: 15px;\\n\\t\\tfont-size: var(--default-font-size);\\n\\t\\tborder: 2px solid var(--color-main-background);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\tbackground-size: 16px;\\n\\t\\tbackground-position: center;\\n\\t\\tborder-radius: 50%;\\n\\n\\t\\t.acli:hover & {\\n\\t\\t\\tborder-color: var(--color-background-hover);\\n\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t}\\n\\t\\t.acli.active & {\\n\\t\\t\\tborder-color: var(--color-primary-light);\\n\\t\\t\\tbackground-color: var(--color-primary-light);\\n\\t\\t}\\n\\n\\t\\t&--online{\\n\\t\\t\\tbackground-image: url('../../assets/status-icons/user-status-online.svg');\\n\\t\\t}\\n\\t\\t&--dnd{\\n\\t\\t\\tbackground-image: url('../../assets/status-icons/user-status-dnd.svg');\\n\\t\\t\\tbackground-color: #ffffff;\\n\\t\\t}\\n\\t\\t&--away{\\n\\t\\t\\tbackground-image: url('../../assets/status-icons/user-status-away.svg');\\n\\t\\t}\\n\\t\\t&--icon {\\n\\t\\t\\tborder: none;\\n\\t\\t\\tbackground-color: transparent;\\n\\t\\t}\\n\\t}\\n\\n\\t.popovermenu-wrapper {\\n\\t\\tposition: relative;\\n\\t\\tdisplay: inline-block;\\n\\t}\\n}\\n\\n.avatar-class-icon {\\n\\tborder-radius: 50%;\\n\\tbackground-color: var(--color-background-darker);\\n\\theight: 100%;\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","module.exports = require(\"escape-html\");","/**\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\n/**\n * Originally taken from https://github.com/nextcloud/server/blob/master/core/js/placeholder.js\n */\n\nfunction Color(r, g, b) {\n\tthis.r = r\n\tthis.g = g\n\tthis.b = b\n}\n\nfunction stepCalc(steps, ends) {\n\tconst step = new Array(3)\n\tstep[0] = (ends[1].r - ends[0].r) / steps\n\tstep[1] = (ends[1].g - ends[0].g) / steps\n\tstep[2] = (ends[1].b - ends[0].b) / steps\n\treturn step\n}\n\nfunction mixPalette(steps, color1, color2) {\n\tconst palette = []\n\tpalette.push(color1)\n\tconst step = stepCalc(steps, [color1, color2])\n\tfor (let i = 1; i < steps; i++) {\n\t\tconst r = parseInt(color1.r + step[0] * i, 10)\n\t\tconst g = parseInt(color1.g + step[1] * i, 10)\n\t\tconst b = parseInt(color1.b + step[2] * i, 10)\n\t\tpalette.push(new Color(r, g, b))\n\t}\n\treturn palette\n}\n\n/**\n * Generate colors from the official nextcloud color\n * You can provide how many colors you want (multiplied by 3)\n * if step = 6\n * 3 colors * 6 will result in 18 generated colors\n *\n * @param {number} [steps=6] Number of steps to go from a color to another\n * @returns {Object[]}\n */\nfunction GenColors(steps) {\n\tif (!steps) {\n\t\tsteps = 6\n\t}\n\n\tconst red = new Color(182, 70, 157)\n\tconst yellow = new Color(221, 203, 85)\n\tconst blue = new Color(0, 130, 201) // Nextcloud blue\n\n\tconst palette1 = mixPalette(steps, red, yellow)\n\tconst palette2 = mixPalette(steps, yellow, blue)\n\tconst palette3 = mixPalette(steps, blue, red)\n\n\treturn palette1.concat(palette2).concat(palette3)\n}\n\nexport default GenColors\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke <georg-nextcloud@ehrke.email>\n *\n * @author Georg Ehrke <georg-nextcloud@ehrke.email>\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\nexport default {\n\tprops: {\n\t\t/**\n\t\t * A class-name or an array of class-names\n\t\t * to be ignored when clicking outside\n\t\t * an element\n\t\t */\n\t\texcludeClickOutsideClasses: {\n\t\t\ttype: String | Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Middleware Handler for V-Click-Outside\n\t\t *\n\t\t * @param {Event} event The click event\n\t\t * @returns {Boolean}\n\t\t */\n\t\tclickOutsideMiddleware(event) {\n\t\t\tconst excludedClassList = Array.isArray(this.excludeClickOutsideClasses)\n\t\t\t\t? this.excludeClickOutsideClasses\n\t\t\t\t: [this.excludeClickOutsideClasses]\n\n\t\t\t// No need to iterate through all parents\n\t\t\t// if class-list is empty\n\t\t\tif (excludedClassList.length === 0) {\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\treturn !this.hasNodeOrAnyParentClass(event.target, excludedClassList)\n\t\t},\n\t\t/**\n\t\t * Checks if given node or any of it's parents have a class of classArray\n\t\t *\n\t\t * @param {Element} node Node to test\n\t\t * @param {Array} classArray List of classes to check for\n\t\t * @returns {Boolean}\n\t\t */\n\t\thasNodeOrAnyParentClass(node, classArray) {\n\t\t\tfor (const className of classArray) {\n\t\t\t\tif (node?.classList?.contains(className)) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn !!node.parentElement && this.hasNodeOrAnyParentClass(node.parentElement, classArray)\n\t\t},\n\t},\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\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tisFullscreen: this._isFullscreen(),\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 fullscreen mode\n\t\t\tthis.isFullscreen = this._isFullscreen()\n\t\t},\n\t\t_isFullscreen() {\n\t\t\t// if the window height is equal to the screen height,\n\t\t\t// we're in full screen mode\n\t\t\treturn window.outerHeight === screen.height\n\t\t},\n\t},\n}\n","module.exports = require(\"@nextcloud/browser-storage\");","export default \"data:image/svg+xml;base64,PCEtLSBUaGlzIGljb24gaXMgcGFydCBvZiBNYXRlcmlhbCBVSSBJY29ucy4gQ29weXJpZ2h0IDIwMjAgR29vZ2xlIEluYy4sIEFwYWNoZS0yLjAgTGljZW5zZSAtLT4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZD0iTTQuOCAxMS4yaDYuNFY0LjhINC44djYuNHpNOCAwQzMuNiAwIDAgMy42IDAgOHMzLjYgOCA4IDggOC0zLjYgOC04LTMuNi04LTgtOHoiIGZpbGw9IiM0OWIzODIiLz48L3N2Zz4K\"","export default \"data:image/svg+xml;base64,PCEtLSBUaGlzIGljb24gaXMgcGFydCBvZiBNYXRlcmlhbCBVSSBJY29ucy4gQ29weXJpZ2h0IDIwMjAgR29vZ2xlIEluYy4sIEFwYWNoZS0yLjAgTGljZW5zZSAtLT4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZD0iTS00LTRoMjR2MjRILTRWLTR6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTggMEMzLjYgMCAwIDMuNiAwIDhzMy42IDggOCA4IDgtMy42IDgtOC0zLjYtOC04LTh6IiBmaWxsPSIjZWQ0ODRjIi8+PHBhdGggZD0iTTUgNi41aDZjLjggMCAxLjUuNyAxLjUgMS41cy0uNyAxLjUtMS41IDEuNUg1Yy0uOCAwLTEuNS0uNy0xLjUtMS41UzQuMiA2LjUgNSA2LjV6IiBmaWxsPSIjZmRmZmZmIi8+PC9zdmc+Cg==\"","export default \"data:image/svg+xml;base64,PCEtLSBUaGlzIGljb24gaXMgcGFydCBvZiBNYXRlcmlhbCBVSSBJY29ucy4gQ29weXJpZ2h0IDIwMjAgR29vZ2xlIEluYy4sIEFwYWNoZS0yLjAgTGljZW5zZSAtLT4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTS00LTRoMjR2MjRILTR6Ii8+PHBhdGggZD0iTTYuOS4xQzMgLjYtLjEgNC0uMSA4YzAgNC40IDMuNiA4IDggOCA0IDAgNy40LTMgOC02LjktMS4yIDEuMy0yLjkgMi4xLTQuNyAyLjEtMy41IDAtNi40LTIuOS02LjQtNi40IDAtMS45LjgtMy42IDIuMS00Ljd6IiBmaWxsPSIjZjRhMzMxIi8+PC9zdmc+Cg==\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',{staticClass:\"popover__menu\"},_vm._l((_vm.menu),function(item,key){return _c('PopoverMenuItem',{key:key,attrs:{\"item\":item}})}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PopoverMenuItem.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!./PopoverMenuItem.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<li class=\"popover__menuitem\">\n\t\t<!-- If item.href is set, a link will be directly used -->\n\t\t<a v-if=\"item.href\"\n\t\t\t:href=\"(item.href) ? item.href : '#' \"\n\t\t\t:target=\"(item.target) ? item.target : '' \"\n\t\t\t:download=\"item.download\"\n\t\t\tclass=\"focusable\"\n\t\t\trel=\"noreferrer noopener\"\n\t\t\t@click=\"action\">\n\t\t\t<span v-if=\"!iconIsUrl\" :class=\"item.icon\" />\n\t\t\t<img v-else :src=\"item.icon\">\n\t\t\t<p v-if=\"item.text && item.longtext\">\n\t\t\t\t<strong class=\"menuitem-text\">\n\t\t\t\t\t{{ item.text }}\n\t\t\t\t</strong><br>\n\t\t\t\t<span class=\"menuitem-text-detail\">\n\t\t\t\t\t{{ item.longtext }}\n\t\t\t\t</span>\n\t\t\t</p>\n\t\t\t<span v-else-if=\"item.text\">\n\t\t\t\t{{ item.text }}\n\t\t\t</span>\n\t\t\t<p v-else-if=\"item.longtext\">\n\t\t\t\t{{ item.longtext }}\n\t\t\t</p>\n\t\t</a>\n\n\t\t<!-- If item.input is set instead, an put will be used -->\n\t\t<span v-else-if=\"item.input\" class=\"menuitem\" :class=\"{active: item.active}\">\n\t\t\t<!-- does not show if input is checkbox -->\n\t\t\t<span v-if=\"item.input !== 'checkbox'\" :class=\"item.icon\" />\n\n\t\t\t<!-- only shows if input is text -->\n\t\t\t<form v-if=\"item.input === 'text'\"\n\t\t\t\t:class=\"item.input\"\n\t\t\t\t@submit.prevent=\"item.action\">\n\t\t\t\t<input :type=\"item.input\"\n\t\t\t\t\t:value=\"item.value\"\n\t\t\t\t\t:placeholder=\"item.text\"\n\t\t\t\t\trequired>\n\t\t\t\t<input type=\"submit\" value=\"\" class=\"icon-confirm\">\n\t\t\t</form>\n\n\t\t\t<!-- checkbox -->\n\t\t\t<template v-else>\n\t\t\t\t<!-- eslint-disable-next-line -->\n\t\t\t\t<input :id=\"key\" v-model=\"item.model\"\n\t\t\t\t\t:type=\"item.input\"\n\t\t\t\t\t:class=\"item.input\"\n\t\t\t\t\t@change=\"item.action\">\n\t\t\t\t<label :for=\"key\" @click.stop.prevent=\"item.action\">\n\t\t\t\t\t{{ item.text }}\n\t\t\t\t</label>\n\t\t\t</template>\n\t\t</span>\n\n\t\t<!-- If item.action is set instead, a button will be used -->\n\t\t<button v-else-if=\"item.action\"\n\t\t\tclass=\"menuitem focusable\"\n\t\t\t:class=\"{active: item.active}\"\n\t\t\t:disabled=\"item.disabled\"\n\t\t\ttype=\"button\"\n\t\t\t@click.stop.prevent=\"item.action\">\n\t\t\t<span :class=\"item.icon\" />\n\t\t\t<p v-if=\"item.text && item.longtext\">\n\t\t\t\t<strong class=\"menuitem-text\">\n\t\t\t\t\t{{ item.text }}\n\t\t\t\t</strong><br>\n\t\t\t\t<span class=\"menuitem-text-detail\">\n\t\t\t\t\t{{ item.longtext }}\n\t\t\t\t</span>\n\t\t\t</p>\n\t\t\t<span v-else-if=\"item.text\">\n\t\t\t\t{{ item.text }}\n\t\t\t</span>\n\t\t\t<p v-else-if=\"item.longtext\">\n\t\t\t\t{{ item.longtext }}\n\t\t\t</p>\n\t\t</button>\n\n\t\t<!-- If item.longtext is set AND the item does not have an action -->\n\t\t<span v-else class=\"menuitem\" :class=\"{active: item.active}\">\n\t\t\t<span :class=\"item.icon\" />\n\t\t\t<p v-if=\"item.text && item.longtext\">\n\t\t\t\t<strong class=\"menuitem-text\">\n\t\t\t\t\t{{ item.text }}\n\t\t\t\t</strong><br>\n\t\t\t\t<span class=\"menuitem-text-detail\">\n\t\t\t\t\t{{ item.longtext }}\n\t\t\t\t</span>\n\t\t\t</p>\n\t\t\t<span v-else-if=\"item.text\">\n\t\t\t\t{{ item.text }}\n\t\t\t</span>\n\t\t\t<p v-else-if=\"item.longtext\">\n\t\t\t\t{{ item.longtext }}\n\t\t\t</p>\n\t\t</span>\n\t</li>\n</template>\n\n<script>\nexport default {\n\tname: 'PopoverMenuItem',\n\tprops: {\n\t\titem: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t\tdefault: () => {\n\t\t\t\treturn {\n\t\t\t\t\tkey: 'nextcloud-link',\n\t\t\t\t\thref: 'https://nextcloud.com',\n\t\t\t\t\ticon: 'icon-links',\n\t\t\t\t\ttext: 'Nextcloud',\n\t\t\t\t}\n\t\t\t},\n\t\t\t// check the input types\n\t\t\t// TODO: add more validation of types\n\t\t\tvalidator: item => {\n\t\t\t\t// TODO: support radio\n\t\t\t\tif (item.input) {\n\t\t\t\t\treturn ['text', 'checkbox'].indexOf(item.input) !== -1\n\t\t\t\t}\n\t\t\t\treturn true\n\t\t\t},\n\t\t},\n\t},\n\tcomputed: {\n\t\t// random key for inputs binding if not provided\n\t\tkey() {\n\t\t\treturn this.item.key\n\t\t\t\t? this.item.key\n\t\t\t\t: Math.round(Math.random() * 16 * 1000000).toString(16)\n\t\t},\n\t\ticonIsUrl() {\n\t\t\ttry {\n\t\t\t\t// eslint-disable-next-line no-new\n\t\t\t\tnew URL(this.item.icon)\n\t\t\t\treturn true\n\t\t\t} catch (_) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\t// allow us to use both link and an action on `a`\n\t\t// we still need to make sure item.action exists\n\t\taction(event) {\n\t\t\tif (this.item.action) {\n\t\t\t\tthis.item.action(event)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\tbutton.menuitem {\n\t\ttext-align: left;\n\t}\n\n\tbutton.menuitem * {\n\t\tcursor: pointer;\n\t}\n\n\tbutton.menuitem:disabled {\n\t\topacity: 0.5 !important;\n\t\tcursor: default;\n\t}\n\n\tbutton.menuitem:disabled * {\n\t\tcursor: default;\n\t}\n\n\t.menuitem.active {\n\t\tbox-shadow: inset 2px 0 var(--color-primary);\n\t\tborder-radius: 0;\n\t}\n</style>\n\n<style lang=\"scss\" scoped>\nli {\n\tdisplay: flex;\n\tflex: 0 0 auto;\n\n\t&.hidden {\n\t\tdisplay: none;\n\t}\n\n\t> button,\n\t> a,\n\t> .menuitem {\n\t\tcursor: pointer;\n\t\tline-height: $clickable-area;\n\t\tborder: 0;\n\t\tborder-radius: 0; // otherwise Safari will cut the border-radius area\n\t\tbackground-color: transparent;\n\t\tdisplay: flex;\n\t\talign-items: flex-start;\n\t\theight: auto;\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\tfont-weight: normal;\n\t\tbox-shadow: none;\n\t\twidth: 100%;\n\t\tcolor: var(--color-main-text);\n\t\twhite-space: nowrap;\n\t\topacity: $opacity_normal;\n\n\t\t// TODO split into individual components for readability\n\t\tspan[class^='icon-'],\n\t\tspan[class*=' icon-'],\n\t\t&[class^='icon-'],\n\t\t&[class*=' icon-'] {\n\t\t\tmin-width: 0; /* Overwrite icons*/\n\t\t\tmin-height: 0;\n\t\t\tbackground-position: #{$icon-margin} center;\n\t\t\tbackground-size: $icon-size;\n\t\t}\n\n\t\tspan[class^='icon-'],\n\t\tspan[class*=' icon-'] {\n\t\t\t/* Keep padding to define the width to\n\t\t\t\tassure correct position of a possible text */\n\t\t\tpadding: #{$clickable-area / 2} 0 #{$clickable-area / 2} $clickable-area;\n\t\t}\n\n\t\t// If no icons set, force left margin to align\n\t\t&:not([class^='icon-']):not([class*='icon-']) {\n\t\t\t> span,\n\t\t\t> input,\n\t\t\t> form {\n\t\t\t\t&:not([class^='icon-']):not([class*='icon-']):first-child {\n\t\t\t\t\tmargin-left: $clickable-area;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&[class^='icon-'],\n\t\t&[class*=' icon-'] {\n\t\t\tpadding: 0 $icon-margin 0 $clickable-area;\n\t\t}\n\n\t\t&:not(:disabled):hover,\n\t\t&:not(:disabled):focus,\n\t\t&:not(:disabled).active {\n\t\t\topacity: $opacity_full !important;\n\t\t}\n\n\t\t/* prevent .action class to break the design */\n\t\t&.action {\n\t\t\tpadding: inherit !important;\n\t\t}\n\n\t\t> span {\n\t\t\tcursor: pointer;\n\t\t\twhite-space: nowrap;\n\t\t}\n\n\t\t// long text area\n\t\t> p {\n\t\t\twidth: 150px;\n\t\t\tline-height: 1.6em;\n\t\t\tpadding: 8px 0;\n\t\t\twhite-space: normal;\n\n\t\t\t// in case there are no spaces like long email addresses\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t}\n\n\t\t// TODO: do we really supports it?\n\t\t> select {\n\t\t\tmargin: 0;\n\t\t\tmargin-left: 6px;\n\t\t}\n\n\t\t/* Add padding if contains icon+text */\n\t\t&:not(:empty) {\n\t\t\tpadding-right: $icon-margin !important;\n\t\t}\n\n\t\t/* DEPRECATED! old img in popover fallback\n\t\t\t* TODO: to remove */\n\t\t> img {\n\t\t\twidth: $icon-size;\n\t\t\tmargin: $icon-margin;\n\t\t}\n\n\t\t/* checkbox/radio fixes */\n\t\t> input.radio + label,\n\t\t> input.checkbox + label {\n\t\t\tpadding: 0 !important;\n\t\t\twidth: 100%;\n\t\t}\n\t\t> input.checkbox + label::before {\n\t\t\tmargin: -2px 13px 0;\n\t\t}\n\t\t> input.radio + label::before {\n\t\t\tmargin: -2px 12px 0;\n\t\t}\n\t\t> input:not([type=radio]):not([type=checkbox]):not([type=image]) {\n\t\t\twidth: 150px;\n\t\t}\n\n\t\t// Forms & text inputs\n\t\tform {\n\t\t\tdisplay: flex;\n\t\t\tflex: 1 1 auto;\n\t\t\t/* put a small space between text and form\n\t\t\t\tif there is an element before */\n\t\t\t&:not(:first-child) {\n\t\t\t\tmargin-left: 5px;\n\t\t\t}\n\t\t}\n\t\t/* no margin if hidden span before */\n\t\t> span.hidden + form,\n\t\t> span[style*='display:none'] + form {\n\t\t\tmargin-left: 0;\n\t\t}\n\t\t/* Inputs inside popover supports text, submit & reset */\n\t\tinput {\n\t\t\tmin-width: $clickable-area;\n\t\t\tmax-height: #{$clickable-area - 4px}; /* twice the element margin-y */\n\t\t\tmargin: 2px 0;\n\t\t\tflex: 1 1 auto;\n\t\t\t// space between inline inputs\n\t\t\t&:not(:first-child) {\n\t\t\t\tmargin-left: 5px;\n\t\t\t}\n\t\t}\n\t}\n\n\t// TODO: do that in js, should be cleaner\n\t/* css hack, only first not hidden */\n\t&:not(.hidden):not([style*='display:none']) {\n\t\t&:first-of-type {\n\t\t\t> button, > a, > .menuitem {\n\t\t\t\t> form, > input {\n\t\t\t\t\tmargin-top: $icon-margin - 2px; // minus the input margin\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t&:last-of-type {\n\t\t\t> button, > a, > .menuitem {\n\t\t\t\t> form, > input {\n\t\t\t\t\tmargin-bottom: $icon-margin - 2px; // minus the input margin\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t> button {\n\t\tpadding: 0;\n\t\tspan {\n\t\t\topacity: $opacity_full;\n\t\t}\n\t}\n}\n</style>\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PopoverMenuItem.vue?vue&type=style&index=0&id=2d3b91c8&scoped=true&lang=css&\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PopoverMenuItem.vue?vue&type=style&index=1&id=2d3b91c8&lang=scss&scoped=true&\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PopoverMenu.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!./PopoverMenu.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<docs>\n\tThis component is deprecated. Please use the [Actions](#/Components?id=actions-1) component instead.\n</docs>\n\n<template>\n\t<ul class=\"popover__menu\">\n\t\t<PopoverMenuItem v-for=\"(item, key) in menu\" :key=\"key\" :item=\"item\" />\n\t</ul>\n</template>\n\n<script>\nimport PopoverMenuItem from './PopoverMenuItem'\n\nexport default {\n\tname: 'PopoverMenu',\n\tcomponents: {\n\t\tPopoverMenuItem,\n\t},\n\tprops: {\n\t\tmenu: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => {\n\t\t\t\treturn [{\n\t\t\t\t\thref: 'https://nextcloud.com',\n\t\t\t\t\ticon: 'icon-links',\n\t\t\t\t\ttext: 'Nextcloud',\n\t\t\t\t}]\n\t\t\t},\n\t\t\trequired: true,\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nul {\n\tdisplay: flex;\n\tflex-direction: column;\n}\n</style>\n","import { render, staticRenderFns } from \"./PopoverMenuItem.vue?vue&type=template&id=2d3b91c8&scoped=true&\"\nimport script from \"./PopoverMenuItem.vue?vue&type=script&lang=js&\"\nexport * from \"./PopoverMenuItem.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PopoverMenuItem.vue?vue&type=style&index=0&id=2d3b91c8&scoped=true&lang=css&\"\nimport style1 from \"./PopoverMenuItem.vue?vue&type=style&index=1&id=2d3b91c8&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2d3b91c8\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{staticClass:\"popover__menuitem\"},[(_vm.item.href)?_c('a',{staticClass:\"focusable\",attrs:{\"href\":(_vm.item.href) ? _vm.item.href : '#',\"target\":(_vm.item.target) ? _vm.item.target : '',\"download\":_vm.item.download,\"rel\":\"noreferrer noopener\"},on:{\"click\":_vm.action}},[(!_vm.iconIsUrl)?_c('span',{class:_vm.item.icon}):_c('img',{attrs:{\"src\":_vm.item.icon}}),_vm._v(\" \"),(_vm.item.text && _vm.item.longtext)?_c('p',[_c('strong',{staticClass:\"menuitem-text\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.item.text)+\"\\n\\t\\t\\t\")]),_c('br'),_vm._v(\" \"),_c('span',{staticClass:\"menuitem-text-detail\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.item.longtext)+\"\\n\\t\\t\\t\")])]):(_vm.item.text)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.item.text)+\"\\n\\t\\t\")]):(_vm.item.longtext)?_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.item.longtext)+\"\\n\\t\\t\")]):_vm._e()]):(_vm.item.input)?_c('span',{staticClass:\"menuitem\",class:{active: _vm.item.active}},[(_vm.item.input !== 'checkbox')?_c('span',{class:_vm.item.icon}):_vm._e(),_vm._v(\" \"),(_vm.item.input === 'text')?_c('form',{class:_vm.item.input,on:{\"submit\":function($event){$event.preventDefault();return _vm.item.action($event)}}},[_c('input',{attrs:{\"type\":_vm.item.input,\"placeholder\":_vm.item.text,\"required\":\"\"},domProps:{\"value\":_vm.item.value}}),_vm._v(\" \"),_c('input',{staticClass:\"icon-confirm\",attrs:{\"type\":\"submit\",\"value\":\"\"}})]):[((_vm.item.input)==='checkbox')?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.item.model),expression:\"item.model\"}],class:_vm.item.input,attrs:{\"id\":_vm.key,\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.item.model)?_vm._i(_vm.item.model,null)>-1:(_vm.item.model)},on:{\"change\":[function($event){var $$a=_vm.item.model,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.item, \"model\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.item, \"model\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.item, \"model\", $$c)}},_vm.item.action]}}):((_vm.item.input)==='radio')?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.item.model),expression:\"item.model\"}],class:_vm.item.input,attrs:{\"id\":_vm.key,\"type\":\"radio\"},domProps:{\"checked\":_vm._q(_vm.item.model,null)},on:{\"change\":[function($event){return _vm.$set(_vm.item, \"model\", null)},_vm.item.action]}}):_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.item.model),expression:\"item.model\"}],class:_vm.item.input,attrs:{\"id\":_vm.key,\"type\":_vm.item.input},domProps:{\"value\":(_vm.item.model)},on:{\"change\":_vm.item.action,\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.item, \"model\", $event.target.value)}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":_vm.key},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.item.action($event)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.item.text)+\"\\n\\t\\t\\t\")])]],2):(_vm.item.action)?_c('button',{staticClass:\"menuitem focusable\",class:{active: _vm.item.active},attrs:{\"disabled\":_vm.item.disabled,\"type\":\"button\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.item.action($event)}}},[_c('span',{class:_vm.item.icon}),_vm._v(\" \"),(_vm.item.text && _vm.item.longtext)?_c('p',[_c('strong',{staticClass:\"menuitem-text\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.item.text)+\"\\n\\t\\t\\t\")]),_c('br'),_vm._v(\" \"),_c('span',{staticClass:\"menuitem-text-detail\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.item.longtext)+\"\\n\\t\\t\\t\")])]):(_vm.item.text)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.item.text)+\"\\n\\t\\t\")]):(_vm.item.longtext)?_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.item.longtext)+\"\\n\\t\\t\")]):_vm._e()]):_c('span',{staticClass:\"menuitem\",class:{active: _vm.item.active}},[_c('span',{class:_vm.item.icon}),_vm._v(\" \"),(_vm.item.text && _vm.item.longtext)?_c('p',[_c('strong',{staticClass:\"menuitem-text\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.item.text)+\"\\n\\t\\t\\t\")]),_c('br'),_vm._v(\" \"),_c('span',{staticClass:\"menuitem-text-detail\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.item.longtext)+\"\\n\\t\\t\\t\")])]):(_vm.item.text)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.item.text)+\"\\n\\t\\t\")]):(_vm.item.longtext)?_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.item.longtext)+\"\\n\\t\\t\")]):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PopoverMenu.vue?vue&type=style&index=0&id=4dae360a&lang=scss&scoped=true&\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import { render, staticRenderFns } from \"./PopoverMenu.vue?vue&type=template&id=4dae360a&scoped=true&\"\nimport script from \"./PopoverMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./PopoverMenu.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PopoverMenu.vue?vue&type=style&index=0&id=4dae360a&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4dae360a\",\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./PopoverMenu.vue?vue&type=custom&index=0&blockType=docs\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport PopoverMenu from './PopoverMenu'\n\nexport default PopoverMenu\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',_vm._g({directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(_vm.tooltip),expression:\"tooltip\"},{name:\"click-outside\",rawName:\"v-click-outside\",value:(_vm.closeMenu),expression:\"closeMenu\"}],ref:\"main\",staticClass:\"avatardiv popovermenu-wrapper\",class:{\n\t\t'avatardiv--unknown': _vm.userDoesNotExist,\n\t\t'avatardiv--with-menu': _vm.hasMenu\n\t},style:(_vm.avatarStyle),attrs:{\"tabindex\":_vm.disableMenu ? '-1' : '0',\"aria-label\":_vm.avatarAriaLabel,\"role\":_vm.disableMenu ? '' : 'button'},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.toggleMenu($event)}}},!_vm.disableMenu ? { click: _vm.toggleMenu } : {}),[(_vm.iconClass)?_c('div',{staticClass:\"avatar-class-icon\",class:_vm.iconClass}):(_vm.isAvatarLoaded && !_vm.userDoesNotExist)?_c('img',{attrs:{\"src\":_vm.avatarUrlLoaded,\"srcset\":_vm.avatarSrcSetLoaded,\"alt\":\"\"}}):_vm._e(),_vm._v(\" \"),(_vm.hasMenu)?_c('Popover',{attrs:{\"placement\":\"auto\",\"container\":_vm.menuContainer,\"open\":_vm.contactsMenuOpenState},on:{\"after-show\":_vm.handlePopoverAfterShow,\"after-hide\":_vm.handlePopoverAfterHide},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [(_vm.contactsMenuLoading)?_c('div',{staticClass:\"icon-loading\"}):_c('DotsHorizontal',{staticClass:\"icon-more\",attrs:{\"size\":20,\"title\":\"\",\"decorative\":\"\"}})]},proxy:true}],null,false,2015540072)},[_c('PopoverMenu',{ref:\"popoverMenu\",attrs:{\"menu\":_vm.menu}})],1):_vm._e(),_vm._v(\" \"),(_vm.showUserStatusIconOnAvatar)?_c('div',{staticClass:\"avatardiv__user-status avatardiv__user-status--icon\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.userStatus.icon)+\"\\n\\t\")]):(_vm.canDisplayUserStatus)?_c('div',{staticClass:\"avatardiv__user-status\",class:'avatardiv__user-status--' + _vm.userStatus.status}):_vm._e(),_vm._v(\" \"),(_vm.userDoesNotExist && !_vm.iconClass)?_c('div',{staticClass:\"unknown\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.initials)+\"\\n\\t\")]):_vm._e()],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<docs>\n\n### Basic user avatar\n\n```vue\n\t<avatar user=\"janedoe\" display-name=\"Jane Doe\" />\n```\n\n### Avatar with image\n\n```vue\n\t<avatar url=\"https://nextcloud.com/wp-content/themes/next/assets/img/common/nextcloud-square-logo.png\" />\n```\n\n</docs>\n<template>\n\t<div\n\t\tref=\"main\"\n\t\tv-tooltip=\"tooltip\"\n\t\tv-click-outside=\"closeMenu\"\n\t\t:class=\"{\n\t\t\t'avatardiv--unknown': userDoesNotExist,\n\t\t\t'avatardiv--with-menu': hasMenu\n\t\t}\"\n\t\t:style=\"avatarStyle\"\n\t\tclass=\"avatardiv popovermenu-wrapper\"\n\t\t:tabindex=\"disableMenu ? '-1' : '0'\"\n\t\t:aria-label=\"avatarAriaLabel\"\n\t\t:role=\"disableMenu ? '' : 'button'\"\n\t\tv-on=\"!disableMenu ? { click: toggleMenu } : {}\"\n\t\t@keydown.enter=\"toggleMenu\">\n\t\t<!-- Avatar icon or image -->\n\t\t<div v-if=\"iconClass\" :class=\"iconClass\" class=\"avatar-class-icon\" />\n\t\t<img v-else-if=\"isAvatarLoaded && !userDoesNotExist\"\n\t\t\t:src=\"avatarUrlLoaded\"\n\t\t\t:srcset=\"avatarSrcSetLoaded\"\n\t\t\talt=\"\">\n\n\t\t<!-- Contact menu -->\n\t\t<Popover\n\t\t\tv-if=\"hasMenu\"\n\t\t\tplacement=\"auto\"\n\t\t\t:container=\"menuContainer\"\n\t\t\t:open=\"contactsMenuOpenState\"\n\t\t\t@after-show=\"handlePopoverAfterShow\"\n\t\t\t@after-hide=\"handlePopoverAfterHide\">\n\t\t\t<PopoverMenu ref=\"popoverMenu\" :menu=\"menu\" />\n\t\t\t<template #trigger>\n\t\t\t\t<div v-if=\"contactsMenuLoading\" class=\"icon-loading\" />\n\t\t\t\t<DotsHorizontal v-else\n\t\t\t\t\t:size=\"20\"\n\t\t\t\t\tclass=\"icon-more\"\n\t\t\t\t\ttitle=\"\"\n\t\t\t\t\tdecorative />\n\t\t\t</template>\n\t\t</Popover>\n\n\t\t<!-- Avatar status -->\n\t\t<div v-if=\"showUserStatusIconOnAvatar\" class=\"avatardiv__user-status avatardiv__user-status--icon\">\n\t\t\t{{ userStatus.icon }}\n\t\t</div>\n\t\t<div v-else-if=\"canDisplayUserStatus\"\n\t\t\tclass=\"avatardiv__user-status\"\n\t\t\t:class=\"'avatardiv__user-status--' + userStatus.status\" />\n\n\t\t<!-- Show the letter if no avatar nor icon class -->\n\t\t<div v-if=\"userDoesNotExist && !iconClass\" class=\"unknown\">\n\t\t\t{{ initials }}\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport DotsHorizontal from 'vue-material-design-icons/DotsHorizontal'\n\nimport { directive as ClickOutside } from 'v-click-outside'\nimport { generateUrl } from '@nextcloud/router'\nimport { getBuilder } from '@nextcloud/browser-storage'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport axios from '@nextcloud/axios'\n\nimport PopoverMenu from '../PopoverMenu'\nimport Tooltip from '../../directives/Tooltip'\nimport usernameToColor from '../../functions/usernameToColor'\nimport { userStatus } from '../../mixins'\nimport { t } from '../../l10n'\nimport Popover from '../Popover/Popover'\n\nconst browserStorage = getBuilder('nextcloud').persist().build()\n\nfunction getUserHasAvatar(userId) {\n\tconst flag = browserStorage.getItem('user-has-avatar.' + userId)\n\tif (typeof flag === 'string') {\n\t\treturn Boolean(flag)\n\t}\n\treturn null\n}\n\nfunction setUserHasAvatar(userId, flag) {\n\tif (userId) {\n\t\tbrowserStorage.setItem('user-has-avatar.' + userId, flag)\n\t}\n}\n\nexport default {\n\tname: 'Avatar',\n\n\tdirectives: {\n\t\ttooltip: Tooltip,\n\t\tClickOutside,\n\t},\n\tcomponents: {\n\t\tDotsHorizontal,\n\t\tPopover,\n\t\tPopoverMenu,\n\t},\n\tmixins: [userStatus],\n\tprops: {\n\t\t/**\n\t\t * Set a custom url to the avatar image\n\t\t * either the url, user or displayName property must be defined\n\t\t */\n\t\turl: {\n\t\t\ttype: String,\n\t\t\tdefault: undefined,\n\t\t},\n\t\t/**\n\t\t * Set a css icon-class for an icon to be used instead of the avatar.\n\t\t */\n\t\ticonClass: {\n\t\t\ttype: String,\n\t\t\tdefault: undefined,\n\t\t},\n\t\t/**\n\t\t * Set the user id to fetch the avatar\n\t\t * either the url, user or displayName property must be defined\n\t\t */\n\t\tuser: {\n\t\t\ttype: String,\n\t\t\tdefault: undefined,\n\t\t},\n\t\t/**\n\t\t * Whether or not to display the user-status\n\t\t */\n\t\tshowUserStatus: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\t/**\n\t\t * Whether or not to the status-icon should be used instead of online/away\n\t\t */\n\t\tshowUserStatusCompact: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\t/**\n\t\t * When the user status was preloaded via another source it can be handed in with this property to save the request.\n\t\t * If this property is not set the status will be fetched automatically.\n\t\t * If a preloaded no-status is available provide this object with properties \"status\", \"icon\" and \"message\" set to null.\n\t\t */\n\t\tpreloadedUserStatus: {\n\t\t\ttype: Object,\n\t\t\tdefault: undefined,\n\t\t},\n\t\t/**\n\t\t * Is the user a guest user (then we have to user a different endpoint)\n\t\t */\n\t\tisGuest: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t/**\n\t\t * Set a display name that will be rendered as a tooltip\n\t\t * either the url, user or displayName property must be defined\n\t\t * specify just the displayname to generate a placeholder avatar without\n\t\t * trying to fetch the avatar based on the user id\n\t\t */\n\t\tdisplayName: {\n\t\t\ttype: String,\n\t\t\tdefault: undefined,\n\t\t},\n\t\t/**\n\t\t * Set a size in px for the rendered avatar\n\t\t */\n\t\tsize: {\n\t\t\ttype: Number,\n\t\t\tdefault: 32,\n\t\t},\n\t\t/**\n\t\t * Placeholder avatars will be automatically generated when this is set to true\n\t\t */\n\t\tallowPlaceholder: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\t/**\n\t\t * Disable the tooltip\n\t\t */\n\t\tdisableTooltip: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t/**\n\t\t * Disable the menu\n\t\t */\n\t\tdisableMenu: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t/**\n\t\t * Declares a custom tooltip when not null\n\t\t * Fallback will be the displayName\n\t\t *\n\t\t * requires disableTooltip not to be set to true\n\t\t */\n\t\ttooltipMessage: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * Declares username is not a user's name, when true.\n\t\t * Prevents loading user's avatar from server and forces generating colored initials,\n\t\t * i.e. if the user is a group\n\t\t */\n\t\tisNoUser: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Choose the avatar menu alignment.\n\t\t * Possible values are `left`, `center`, `right`.\n\t\t */\n\t\tmenuPosition: {\n\t\t\ttype: String,\n\t\t\tdefault: 'center',\n\t\t},\n\n\t\t/**\n\t\t * Selector for the popover menu container\n\t\t */\n\t\tmenuContainer: {\n\t\t\ttype: String,\n\t\t\tdefault: 'body',\n\t\t},\n\n\t\tariaLabel: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tavatarUrlLoaded: null,\n\t\t\tavatarSrcSetLoaded: null,\n\t\t\tuserDoesNotExist: false,\n\t\t\tisAvatarLoaded: false,\n\t\t\tisMenuLoaded: false,\n\t\t\tcontactsMenuLoading: false,\n\t\t\tcontactsMenuActions: [],\n\t\t\tcontactsMenuOpenState: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tavatarAriaLabel() {\n\t\t\tif (this.ariaLabel !== null) {\n\t\t\t\treturn this.ariaLabel\n\t\t\t}\n\n\t\t\treturn t('Avatar of {displayName}', { displayName: this.displayName || this.userId })\n\t\t},\n\n\t\tcanDisplayUserStatus() {\n\t\t\treturn this.showUserStatus\n\t\t\t\t&& this.hasStatus\n\t\t\t\t&& ['online', 'away', 'dnd'].includes(this.userStatus.status)\n\t\t},\n\t\tshowUserStatusIconOnAvatar() {\n\t\t\treturn this.showUserStatus\n\t\t\t\t&& this.showUserStatusCompact\n\t\t\t\t&& this.hasStatus\n\t\t\t\t&& this.userStatus.status !== 'dnd'\n\t\t\t\t&& this.userStatus.icon\n\t\t},\n\t\tgetUserIdentifier() {\n\t\t\tif (this.isDisplayNameDefined) {\n\t\t\t\treturn this.displayName\n\t\t\t}\n\t\t\tif (this.isUserDefined) {\n\t\t\t\treturn this.user\n\t\t\t}\n\t\t\treturn ''\n\t\t},\n\t\tisUserDefined() {\n\t\t\treturn typeof this.user !== 'undefined'\n\t\t},\n\t\tisDisplayNameDefined() {\n\t\t\treturn typeof this.displayName !== 'undefined'\n\t\t},\n\t\tisUrlDefined() {\n\t\t\treturn typeof this.url !== 'undefined'\n\t\t},\n\t\thasMenu() {\n\t\t\tif (this.disableMenu) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif (this.isMenuLoaded) {\n\t\t\t\treturn this.menu.length > 0\n\t\t\t}\n\t\t\treturn !(this.user === getCurrentUser()?.uid || this.userDoesNotExist || this.url)\n\t\t},\n\t\tshouldShowPlaceholder() {\n\t\t\treturn this.allowPlaceholder && (\n\t\t\t\tthis.userDoesNotExist)\n\t\t},\n\t\tavatarStyle() {\n\t\t\tconst style = {\n\t\t\t\t'--size': this.size + 'px',\n\t\t\t\tlineHeight: this.size + 'px',\n\t\t\t\tfontSize: Math.round(this.size * 0.55) + 'px',\n\t\t\t}\n\n\t\t\tif (!this.iconClass && !this.avatarSrcSetLoaded) {\n\t\t\t\tconst rgb = usernameToColor(this.getUserIdentifier)\n\t\t\t\tstyle.backgroundColor = 'rgb(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ')'\n\t\t\t}\n\t\t\treturn style\n\t\t},\n\t\ttooltip() {\n\t\t\tif (this.disableTooltip) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif (this.tooltipMessage) {\n\t\t\t\treturn this.tooltipMessage\n\t\t\t}\n\n\t\t\treturn this.displayName\n\t\t},\n\t\tinitials() {\n\t\t\tlet initials\n\t\t\tif (this.shouldShowPlaceholder) {\n\t\t\t\tconst user = this.getUserIdentifier\n\t\t\t\tconst idx = user.indexOf(' ')\n\t\t\t\tif (user === '') {\n\t\t\t\t\tinitials = '?'\n\t\t\t\t} else {\n\t\t\t\t\tinitials = String.fromCodePoint(user.codePointAt(0))\n\t\t\t\t\tif (idx !== -1) {\n\t\t\t\t\t\tinitials = initials.concat(String.fromCodePoint(user.codePointAt(idx + 1)))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn initials.toUpperCase()\n\t\t},\n\t\tmenu() {\n\t\t\tconst actions = this.contactsMenuActions.map((item) => {\n\t\t\t\treturn {\n\t\t\t\t\thref: item.hyperlink,\n\t\t\t\t\ticon: item.icon,\n\t\t\t\t\tlongtext: item.title,\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tfunction escape(html) {\n\t\t\t\tconst text = document.createTextNode(html)\n\t\t\t\tconst p = document.createElement('p')\n\t\t\t\tp.appendChild(text)\n\t\t\t\treturn p.innerHTML\n\t\t\t}\n\n\t\t\tif (this.showUserStatus && (this.userStatus.icon || this.userStatus.message)) {\n\t\t\t\treturn [{\n\t\t\t\t\thref: '#',\n\t\t\t\t\ticon: `data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg'><text x='0' y='14' font-size='14'>${escape(this.userStatus.icon)}</text></svg>`,\n\t\t\t\t\ttext: `${this.userStatus.message}`,\n\t\t\t\t}].concat(actions)\n\t\t\t}\n\n\t\t\treturn actions\n\t\t},\n\t},\n\n\twatch: {\n\t\turl() {\n\t\t\tthis.userDoesNotExist = false\n\t\t\tthis.loadAvatarUrl()\n\t\t},\n\t\tuser() {\n\t\t\tthis.userDoesNotExist = false\n\t\t\tthis.isMenuLoaded = false\n\t\t\tthis.loadAvatarUrl()\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.loadAvatarUrl()\n\t\tif (this.showUserStatus && this.user && !this.isNoUser) {\n\t\t\tif (!this.preloadedUserStatus) {\n\t\t\t\tthis.fetchUserStatus(this.user)\n\t\t\t} else {\n\t\t\t\tthis.userStatus.status = this.preloadedUserStatus.status || ''\n\t\t\t\tthis.userStatus.message = this.preloadedUserStatus.message || ''\n\t\t\t\tthis.userStatus.icon = this.preloadedUserStatus.icon || ''\n\t\t\t\tthis.hasStatus = this.preloadedUserStatus.status !== null\n\t\t\t}\n\t\t\tsubscribe('user_status:status.updated', this.handleUserStatusUpdated)\n\t\t}\n\t},\n\n\tbeforeDestroyed() {\n\t\tif (this.showUserStatus && this.user && !this.isNoUser) {\n\t\t\tunsubscribe('user_status:status.updated', this.handleUserStatusUpdated)\n\t\t}\n\t},\n\n\tmethods: {\n\t\thandlePopoverAfterShow() {\n\t\t\tconst links = this.$refs.popoverMenu.$el.getElementsByTagName('a')\n\t\t\tif (links.length) {\n\t\t\t\tlinks[0].focus()\n\t\t\t}\n\t\t},\n\t\thandlePopoverAfterHide() {\n\t\t\t// bring focus back to the trigger\n\t\t\tthis.$refs.main.focus()\n\t\t},\n\t\thandleUserStatusUpdated(state) {\n\t\t\tif (this.user === state.userId) {\n\t\t\t\tthis.userStatus = {\n\t\t\t\t\tstatus: state.status,\n\t\t\t\t\ticon: state.icon,\n\t\t\t\t\tmessage: state.message,\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tasync toggleMenu() {\n\t\t\tif (!this.hasMenu) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (!this.contactsMenuOpenState) {\n\t\t\t\tawait this.fetchContactsMenu()\n\t\t\t}\n\t\t\tthis.contactsMenuOpenState = !this.contactsMenuOpenState\n\t\t},\n\t\tcloseMenu() {\n\t\t\tthis.contactsMenuOpenState = false\n\t\t},\n\t\tasync fetchContactsMenu() {\n\t\t\tthis.contactsMenuLoading = true\n\t\t\ttry {\n\t\t\t\tconst user = encodeURIComponent(this.user)\n\t\t\t\tconst { data } = await axios.post(generateUrl('contactsmenu/findOne'), `shareType=0&shareWith=${user}`)\n\t\t\t\tthis.contactsMenuActions = data.topAction ? [data.topAction].concat(data.actions) : data.actions\n\t\t\t} catch (e) {\n\t\t\t\tthis.contactsMenuOpenState = false\n\t\t\t}\n\t\t\tthis.contactsMenuLoading = false\n\t\t\tthis.isMenuLoaded = true\n\t\t},\n\n\t\t/**\n\t\t * Handle avatar loading if user or url defined\n\t\t */\n\t\tloadAvatarUrl() {\n\t\t\tthis.isAvatarLoaded = false\n\n\t\t\t/** Only run avatar image loading if either user or url property is defined */\n\t\t\tif (!this.isUrlDefined && (!this.isUserDefined || this.isNoUser)) {\n\t\t\t\tthis.isAvatarLoaded = true\n\t\t\t\tthis.userDoesNotExist = true\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Directly use the url if defined\n\t\t\tif (this.isUrlDefined) {\n\t\t\t\tthis.updateImageIfValid(this.url)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst avatarUrl = this.avatarUrlGenerator(this.user, this.size)\n\t\t\tconst srcset = [\n\t\t\t\tavatarUrl + ' 1x',\n\t\t\t\tthis.avatarUrlGenerator(this.user, this.size * 2) + ' 2x',\n\t\t\t\tthis.avatarUrlGenerator(this.user, this.size * 4) + ' 4x',\n\t\t\t].join(', ')\n\n\t\t\tthis.updateImageIfValid(avatarUrl, srcset)\n\t\t},\n\n\t\t/**\n\t\t * Generate an avatar url from the server's avatar endpoint\n\t\t *\n\t\t * @param {string} user the user id\n\t\t * @param {number} size the desired size\n\t\t * @returns {string}\n\t\t */\n\t\tavatarUrlGenerator(user, size) {\n\t\t\tlet url = '/avatar/{user}/{size}'\n\t\t\tif (this.isGuest) {\n\t\t\t\turl = '/avatar/guest/{user}/{size}'\n\t\t\t}\n\n\t\t\tlet avatarUrl = generateUrl(\n\t\t\t\turl,\n\t\t\t\t{\n\t\t\t\t\tuser,\n\t\t\t\t\tsize,\n\t\t\t\t})\n\n\t\t\t// eslint-disable-next-line camelcase\n\t\t\tif (user === getCurrentUser()?.uid && typeof oc_userconfig !== 'undefined') {\n\t\t\t\tavatarUrl += '?v=' + oc_userconfig.avatar.version\n\t\t\t}\n\n\t\t\treturn avatarUrl\n\t\t},\n\n\t\t/**\n\t\t * Check if the provided url is valid and update Avatar if so\n\t\t *\n\t\t * @param {string} url the avatar url\n\t\t * @param {array} srcset the avatar srcset\n\t\t */\n\t\tupdateImageIfValid(url, srcset = null) {\n\t\t\t// skip loading\n\t\t\tconst userHasAvatar = getUserHasAvatar(this.user)\n\t\t\tif (this.isUserDefined && typeof userHasAvatar === 'boolean') {\n\t\t\t\tthis.isAvatarLoaded = true\n\t\t\t\tthis.avatarUrlLoaded = url\n\t\t\t\tif (srcset) {\n\t\t\t\t\tthis.avatarSrcSetLoaded = srcset\n\t\t\t\t}\n\t\t\t\tif (userHasAvatar === false) {\n\t\t\t\t\tthis.userDoesNotExist = true\n\t\t\t\t}\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst img = new Image()\n\t\t\timg.onload = () => {\n\t\t\t\tthis.avatarUrlLoaded = url\n\t\t\t\tif (srcset) {\n\t\t\t\t\tthis.avatarSrcSetLoaded = srcset\n\t\t\t\t}\n\t\t\t\tthis.isAvatarLoaded = true\n\t\t\t\t// re-get to avoid concurrent access\n\t\t\t\tsetUserHasAvatar(this.user, true)\n\t\t\t}\n\t\t\timg.onerror = () => {\n\t\t\t\tconsole.debug('Invalid avatar url', url)\n\t\t\t\t// Avatar is invalid, reset\n\t\t\t\tthis.avatarUrlLoaded = null\n\t\t\t\tthis.avatarSrcSetLoaded = null\n\n\t\t\t\tthis.userDoesNotExist = true\n\t\t\t\tthis.isAvatarLoaded = false\n\t\t\t\tsetUserHasAvatar(this.user, false)\n\t\t\t}\n\n\t\t\tif (srcset) {\n\t\t\t\timg.srcset = srcset\n\t\t\t}\n\t\t\timg.src = url\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.avatardiv {\n\tposition: relative;\n\tdisplay: inline-block;\n\twidth: var(--size);\n\theight: var(--size);\n\n\t&--unknown {\n\t\tposition: relative;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t}\n\n\t&:not(&--unknown) {\n\t\t// White background for avatars with transparency\n\t\tbackground-color: #fff !important;\n\t\tbody.theme--dark & {\n\t\t\t// And black background in dark mode, as it shines through on hover of the menu\n\t\t\tbackground-color: #000 !important;\n\t\t}\n\t\tbox-shadow: 0 0 5px rgba(0, 0, 0, 0.05) inset;\n\t}\n\n\t&--with-menu {\n\t\tcursor: pointer;\n\t\t::v-deep .trigger {\n\t\t\tposition: absolute;\n\t\t\ttop: 0;\n\t\t\tleft: 0;\n\t\t}\n\t\t.icon-more, .icon-loading {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\tjustify-content: center;\n\t\t\twidth: var(--size);\n\t\t\theight: var(--size);\n\t\t\tcursor: pointer;\n\t\t\tbackground: none;\n\t\t}\n\t\t.icon-more {\n\t\t\topacity: 0;\n\t\t}\n\t\t&:focus,\n\t\t&:hover {\n\t\t\t.icon-more {\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t\timg {\n\t\t\t\topacity: 0.3;\n\t\t\t}\n\t\t}\n\t\t.icon-more,\n\t\timg {\n\t\t\ttransition: opacity var(--animation-quick);\n\t\t}\n\t}\n\n\t> .unknown {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\ttext-align: center;\n\t\tfont-weight: normal;\n\t\tcolor: var(--color-main-background);\n\t}\n\n\timg {\n\t\t// Cover entire area\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\t// Keep ratio\n\t\tobject-fit: cover;\n\t}\n\n\t.avatardiv__user-status {\n\t\tposition: absolute;\n\t\tright: -4px;\n\t\tbottom: -4px;\n\t\tmax-height: 18px;\n\t\tmax-width: 18px;\n\t\theight: 40%;\n\t\twidth: 40%;\n\t\tline-height: 15px;\n\t\tfont-size: var(--default-font-size);\n\t\tborder: 2px solid var(--color-main-background);\n\t\tbackground-color: var(--color-main-background);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-size: 16px;\n\t\tbackground-position: center;\n\t\tborder-radius: 50%;\n\n\t\t.acli:hover & {\n\t\t\tborder-color: var(--color-background-hover);\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t}\n\t\t.acli.active & {\n\t\t\tborder-color: var(--color-primary-light);\n\t\t\tbackground-color: var(--color-primary-light);\n\t\t}\n\n\t\t&--online{\n\t\t\tbackground-image: url('../../assets/status-icons/user-status-online.svg');\n\t\t}\n\t\t&--dnd{\n\t\t\tbackground-image: url('../../assets/status-icons/user-status-dnd.svg');\n\t\t\tbackground-color: #ffffff;\n\t\t}\n\t\t&--away{\n\t\t\tbackground-image: url('../../assets/status-icons/user-status-away.svg');\n\t\t}\n\t\t&--icon {\n\t\t\tborder: none;\n\t\t\tbackground-color: transparent;\n\t\t}\n\t}\n\n\t.popovermenu-wrapper {\n\t\tposition: relative;\n\t\tdisplay: inline-block;\n\t}\n}\n\n.avatar-class-icon {\n\tborder-radius: 50%;\n\tbackground-color: var(--color-background-darker);\n\theight: 100%;\n}\n\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Avatar.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!./Avatar.vue?vue&type=script&lang=js&\"","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Avatar.vue?vue&type=style&index=0&id=340ddd8f&scoped=true&lang=scss&\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import { render, staticRenderFns } from \"./Avatar.vue?vue&type=template&id=340ddd8f&scoped=true&\"\nimport script from \"./Avatar.vue?vue&type=script&lang=js&\"\nexport * from \"./Avatar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Avatar.vue?vue&type=style&index=0&id=340ddd8f&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"340ddd8f\",\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./Avatar.vue?vue&type=custom&index=0&blockType=docs\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","/**\n * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Avatar from './Avatar'\n\nexport default Avatar\n","module.exports = require(\"md5\");","module.exports = require(\"@nextcloud/capabilities\");","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport md5 from 'md5'\nimport GenColors from '../../utils/GenColors'\n\n/**\n * Originally taken from https://github.com/nextcloud/server/blob/master/core/js/placeholder.js\n * @param {string} username Display name or user id to generate from\n * @returns {Object} the rgb colors as {r:255, g:255, b:255}\n */\nconst usernameToColor = function(username) {\n\t// Normalize hash\n\tlet hash = username.toLowerCase()\n\n\t// Already a md5 hash?\n\tif (hash.match(/^([0-9a-f]{4}-?){8}$/) === null) {\n\t\thash = md5(hash)\n\t}\n\n\thash = hash.replace(/[^0-9a-f]/g, '')\n\n\tconst steps = 6\n\tconst finalPalette = GenColors(steps)\n\n\t// Convert a string to an integer evenly\n\tfunction hashToInt(hash, maximum) {\n\t\tlet finalInt = 0\n\t\tconst result = []\n\n\t\t// Splitting evenly the string\n\t\tfor (let i = 0; i < hash.length; i++) {\n\t\t\t// chars in md5 goes up to f, hex:16\n\t\t\tresult.push(parseInt(hash.charAt(i), 16) % 16)\n\t\t}\n\n\t\t// Adds up all results\n\t\tfor (const j in result) {\n\t\t\tfinalInt += result[j]\n\t\t}\n\n\t\t// chars in md5 goes up to f, hex:16\n\t\t// make sure we're always using int in our operation\n\t\treturn parseInt(parseInt(finalInt, 10) % maximum, 10)\n\t}\n\treturn finalPalette[hashToInt(hash, steps * 3)]\n}\n\nexport default usernameToColor\n","/**\n * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport usernameToColor from './usernameToColor'\n\nexport default usernameToColor\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.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, \".material-design-icon[data-v-28d338d4]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.option[data-v-28d338d4]{display:flex;align-items:center;width:100%;height:var(--height)}.option__avatar[data-v-28d338d4]{margin-right:var(--margin)}.option__details[data-v-28d338d4]{display:flex;flex:1 1;flex-direction:column;justify-content:center;min-width:0}.option__lineone[data-v-28d338d4]{color:var(--color-text-light)}.option__linetwo[data-v-28d338d4]{opacity:.7}.option__lineone[data-v-28d338d4],.option__linetwo[data-v-28d338d4]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;line-height:1.1em}.option__lineone strong[data-v-28d338d4],.option__linetwo strong[data-v-28d338d4]{font-weight:bold}.option__icon[data-v-28d338d4]{flex:0 0 44px;width:44px;height:44px;opacity:.5;background-position:center;background-size:16px}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../assets/material-icons.css\",\"webpack://./ListItemIcon.vue\",\"webpack://./../../assets/variables.scss\"],\"names\":[],\"mappings\":\"AAGA,uCACC,YAAa,CACb,iBAAkB,CAClB,mBAAoB,CACpB,kBAAmB,CACnB,sBAAuB,CCgOxB,yBACC,YAAa,CACb,kBAAmB,CACnB,UAAW,CACX,oBAAqB,CAErB,iCACC,0BAA2B,CAC3B,kCAGA,YAAa,CACb,QAAS,CACT,qBAAsB,CACtB,sBAAuB,CACvB,WAAY,CACZ,kCAGA,6BAA8B,CAC9B,kCAEA,UCnNiB,CDoNjB,oEAGA,eAAgB,CAChB,kBAAmB,CACnB,sBAAuB,CACvB,iBAAkB,CALlB,kFAOC,gBAAiB,CACjB,+BAID,aCnPmB,CDoPnB,UCpPmB,CDqPnB,WCrPmB,CDsPnB,UCrOmB,CDsOnB,0BAA2B,CAC3B,oBAAqB\",\"sourcesContent\":[\"/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon {\\n\\tdisplay: flex;\\n\\talign-self: center;\\n\\tjustify-self: center;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n}\\n\",\"$scope_version:\\\"0a7f1bc\\\"; @import 'variables'; @import 'material-icons';\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.option {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\twidth: 100%;\\n\\theight: var(--height);\\n\\n\\t&__avatar {\\n\\t\\tmargin-right: var(--margin);\\n\\t}\\n\\n\\t&__details {\\n\\t\\tdisplay: flex;\\n\\t\\tflex: 1 1;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: center;\\n\\t\\tmin-width: 0;\\n\\t}\\n\\n\\t&__lineone {\\n\\t\\tcolor: var(--color-text-light);\\n\\t}\\n\\t&__linetwo {\\n\\t\\topacity: $opacity_normal;\\n\\t}\\n\\t&__lineone,\\n\\t&__linetwo {\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\tline-height: 1.1em;\\n\\t\\tstrong {\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t}\\n\\t}\\n\\n\\t&__icon {\\n\\t\\tflex: 0 0 $clickable-area;\\n\\t\\twidth: $clickable-area;\\n\\t\\theight: $clickable-area;\\n\\t\\topacity: $opacity_disabled;\\n\\t\\tbackground-position: center;\\n\\t\\tbackground-size: 16px;\\n\\t}\\n}\\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\\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\\n// recommended is 48px\\n// 44px is what we choose and have very good visual-to-usability ratio\\n$clickable-area: 44px;\\n\\n// background icon size\\n// also used for the scss icon font\\n$icon-size: 16px;\\n\\n// icon padding for a $clickable-area width and a $icon-size icon\\n// ( 44px - 16px ) / 2\\n$icon-margin: ($clickable-area - $icon-size) / 2;\\n\\n// transparency background for icons\\n$icon-focus-bg: rgba(127, 127, 127, .25);\\n\\n// popovermenu arrow width from the triangle center\\n$arrow-width: 9px;\\n\\n// opacities\\n$opacity_disabled: .5;\\n$opacity_normal: .7;\\n$opacity_full: 1;\\n\\n// menu round background hover feedback\\n// good looking on dark AND white bg\\n$action-background-hover: rgba(127, 127, 127, .25);\\n\\n// various structure data used in the \\n// `AppNavigation` component\\n$header-height: 50px;\\n$navigation-width: 300px;\\n\\n// mobile breakpoint\\n$breakpoint-mobile: 1024px;\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',_vm._g({staticClass:\"option\",style:(_vm.cssVars),attrs:{\"id\":_vm.id}},_vm.$listeners),[_c('Avatar',_vm._b({staticClass:\"option__avatar\",attrs:{\"disable-menu\":true,\"disable-tooltip\":true,\"display-name\":_vm.displayName || _vm.title,\"is-no-user\":_vm.isNoUser,\"size\":_vm.avatarSize}},'Avatar',_vm.$attrs,false)),_vm._v(\" \"),_c('div',{staticClass:\"option__details\"},[_c('Highlight',{staticClass:\"option__lineone\",attrs:{\"text\":_vm.title,\"search\":_vm.search}}),_vm._v(\" \"),(_vm.isValidSubtitle && _vm.isSizeBigEnough)?_c('Highlight',{staticClass:\"option__linetwo\",attrs:{\"text\":_vm.subtitle,\"search\":_vm.search}}):(_vm.hasStatus)?_c('span',[_c('span',[_vm._v(_vm._s(_vm.userStatus.icon))]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_vm.userStatus.message))])]):_vm._e()],1),_vm._v(\" \"),_vm._t(\"default\"),_vm._v(\" \"),(_vm.hasIcon && !_vm.hasSlot)?_c('span',{staticClass:\"icon option__icon\",class:_vm.icon}):_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListItemIcon.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!./ListItemIcon.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n<docs>\n## This is used to display a avatar-title/subtitle + icon layout\nIt might be used for list rendering or within the multiselect for example\n\n> **Note:** Any binding will be forwarded on the Avatar component root\n\n```vue\n<ListItemIcon title=\"User 1\" />\n<ListItemIcon title=\"User 1\" subtitle=\"Hidden subtitle because size is too small\" :avatar-size=\"24\" />\n```\n```vue\n<ListItemIcon title=\"User 1\" :avatar-size=\"44\" icon=\"icon-user\" />\n```\n\n### With icon\n```vue\n<ListItemIcon title=\"Group 1\" subtitle=\"13 members\" icon=\"icon-group\" :is-no-user=\"true\" />\n```\n\n### Searching\n```vue\n<ListItemIcon title=\"Test user 1\" subtitle=\"callmetest@domain.com\" search=\"test\" />\n<ListItemIcon title=\"Testing admin\" subtitle=\"testme@example.com\" search=\"test\" />\n<ListItemIcon title=\"Test group 2\" subtitle=\"loremipsum@domain.com\" icon=\"icon-group\" :is-no-user=\"true\" search=\"test\" />\n```\n\n### With actions\n```vue\n<ListItemIcon title=\"Test user 1\" subtitle=\"callmetest@domain.com\">\n\t<Actions>\n\t\t<ActionButton icon=\"icon-edit\" @click=\"alert('Edit')\">Edit</ActionButton>\n\t\t<ActionButton icon=\"icon-delete\" @click=\"alert('Delete')\">Delete</ActionButton>\n\t</Actions>\n</ListItemIcon>\n```\n</docs>\n\n<template>\n\t<span :id=\"id\"\n\t\tclass=\"option\"\n\t\t:style=\"cssVars\"\n\t\tv-on=\"$listeners\">\n\t\t<Avatar\n\t\t\tv-bind=\"$attrs\"\n\t\t\t:disable-menu=\"true\"\n\t\t\t:disable-tooltip=\"true\"\n\t\t\t:display-name=\"displayName || title\"\n\t\t\t:is-no-user=\"isNoUser\"\n\t\t\t:size=\"avatarSize\"\n\t\t\tclass=\"option__avatar\" />\n\t\t<div class=\"option__details\">\n\t\t\t<Highlight\n\t\t\t\tclass=\"option__lineone\"\n\t\t\t\t:text=\"title\"\n\t\t\t\t:search=\"search\" />\n\t\t\t<Highlight\n\t\t\t\tv-if=\"isValidSubtitle && isSizeBigEnough\"\n\t\t\t\tclass=\"option__linetwo\"\n\t\t\t\t:text=\"subtitle\"\n\t\t\t\t:search=\"search\" />\n\t\t\t<span v-else-if=\"hasStatus\">\n\t\t\t\t<span>{{ userStatus.icon }}</span>\n\t\t\t\t<span>{{ userStatus.message }}</span>\n\t\t\t</span>\n\t\t</div>\n\n\t\t<!-- @slot use this slot to add a custom icon or actions -->\n\t\t<slot />\n\t\t<span v-if=\"hasIcon && !hasSlot\" class=\"icon option__icon\" :class=\"icon\" />\n\t</span>\n</template>\n\n<script>\nimport Avatar from '../Avatar'\nimport Highlight from '../Highlight'\nimport { userStatus } from '../../mixins'\n\n// global margin, ^2 ratio\nconst margin = 8\nconst defaultSize = 32\n\nexport default {\n\tname: 'ListItemIcon',\n\n\tcomponents: {\n\t\tAvatar,\n\t\tHighlight,\n\t},\n\tmixins: [userStatus],\n\n\tprops: {\n\t\t/**\n\t\t * Default first line text\n\t\t */\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\n\t\t/**\n\t\t * Secondary optional line\n\t\t * Only visible on size of 32 and above\n\t\t */\n\t\tsubtitle: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/**\n\t\t * Icon class to be displayed at the end of the component\n\t\t */\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/**\n\t\t * Search within the highlight of title/subtitle\n\t\t */\n\t\tsearch: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/**\n\t\t * Set a size in px that will define the avatar height/width\n\t\t * and therefore, the height of the component\n\t\t */\n\t\tavatarSize: {\n\t\t\ttype: Number,\n\t\t\tdefault: defaultSize,\n\t\t},\n\n\t\t/**\n\t\t * Disable the margins of this component.\n\t\t * Useful for integration in Multiselect for example\n\t\t */\n\t\tnoMargin: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * See the [Avatar](#Avatar) displayName prop\n\t\t * Fallback to title\n\t\t */\n\t\tdisplayName: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * See the [Avatar](#Avatar) isNoUser prop\n\t\t * Enable/disable the UserStatus fetching\n\t\t */\n\t\tisNoUser: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Unique list item ID\n\t\t */\n\t\tid: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tmargin,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\thasIcon() {\n\t\t\treturn this.icon !== ''\n\t\t},\n\t\thasSlot() {\n\t\t\treturn !!this.$slots.default\n\t\t},\n\n\t\tisValidSubtitle() {\n\t\t\treturn this.subtitle?.trim?.() !== ''\n\t\t},\n\t\tisSizeBigEnough() {\n\t\t\treturn this.avatarSize >= defaultSize\n\t\t},\n\n\t\tcssVars() {\n\t\t\t// Don't use margin to calculate the height if noMargin\n\t\t\tconst margin = this.noMargin ? 0 : this.margin\n\n\t\t\treturn {\n\t\t\t\t'--height': this.avatarSize + 2 * margin + 'px',\n\t\t\t\t'--margin': this.margin + 'px',\n\t\t\t}\n\t\t},\n\t},\n\n\tbeforeMount() {\n\t\t// If we don't have a subtitle and if this is a user\n\t\tif (!this.isNoUser && !this.subtitle) {\n\t\t\tthis.fetchUserStatus(this.user)\n\t\t}\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.option {\n\tdisplay: flex;\n\talign-items: center;\n\twidth: 100%;\n\theight: var(--height);\n\n\t&__avatar {\n\t\tmargin-right: var(--margin);\n\t}\n\n\t&__details {\n\t\tdisplay: flex;\n\t\tflex: 1 1;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\tmin-width: 0;\n\t}\n\n\t&__lineone {\n\t\tcolor: var(--color-text-light);\n\t}\n\t&__linetwo {\n\t\topacity: $opacity_normal;\n\t}\n\t&__lineone,\n\t&__linetwo {\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\tline-height: 1.1em;\n\t\tstrong {\n\t\t\tfont-weight: bold;\n\t\t}\n\t}\n\n\t&__icon {\n\t\tflex: 0 0 $clickable-area;\n\t\twidth: $clickable-area;\n\t\theight: $clickable-area;\n\t\topacity: $opacity_disabled;\n\t\tbackground-position: center;\n\t\tbackground-size: 16px;\n\t}\n}\n\n</style>\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--1-3!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ListItemIcon.vue?vue&type=style&index=0&id=28d338d4&lang=scss&scoped=true&\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import { render, staticRenderFns } from \"./ListItemIcon.vue?vue&type=template&id=28d338d4&scoped=true&\"\nimport script from \"./ListItemIcon.vue?vue&type=script&lang=js&\"\nexport * from \"./ListItemIcon.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ListItemIcon.vue?vue&type=style&index=0&id=28d338d4&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"28d338d4\",\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./ListItemIcon.vue?vue&type=custom&index=0&blockType=docs\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","/**\n * @copyright Copyright (c) 2020 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\nimport ListItemIcon from './ListItemIcon'\n\nexport default ListItemIcon\n"],"sourceRoot":""}
|