@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.
Files changed (100) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/Components/ActionCaption.js +1 -1
  3. package/dist/Components/ActionCaption.js.map +1 -1
  4. package/dist/Components/ActionCheckbox.js +1 -1
  5. package/dist/Components/ActionCheckbox.js.map +1 -1
  6. package/dist/Components/ActionInput.js +10 -10
  7. package/dist/Components/ActionInput.js.map +1 -1
  8. package/dist/Components/ActionRadio.js +1 -1
  9. package/dist/Components/ActionRadio.js.map +1 -1
  10. package/dist/Components/ActionSeparator.js +1 -1
  11. package/dist/Components/ActionSeparator.js.map +1 -1
  12. package/dist/Components/ActionText.js +1 -1
  13. package/dist/Components/ActionText.js.map +1 -1
  14. package/dist/Components/ActionTextEditable.js +1 -1
  15. package/dist/Components/ActionTextEditable.js.map +1 -1
  16. package/dist/Components/Actions.js +3 -3
  17. package/dist/Components/Actions.js.map +1 -1
  18. package/dist/Components/AppContent.js +1 -1
  19. package/dist/Components/AppContent.js.map +1 -1
  20. package/dist/Components/AppNavigation.js +3 -3
  21. package/dist/Components/AppNavigation.js.map +1 -1
  22. package/dist/Components/AppNavigationCaption.js +2 -2
  23. package/dist/Components/AppNavigationCaption.js.map +1 -1
  24. package/dist/Components/AppNavigationCounter.js +1 -1
  25. package/dist/Components/AppNavigationCounter.js.map +1 -1
  26. package/dist/Components/AppNavigationIconBullet.js +1 -1
  27. package/dist/Components/AppNavigationIconBullet.js.map +1 -1
  28. package/dist/Components/AppNavigationItem.js +3 -3
  29. package/dist/Components/AppNavigationItem.js.map +1 -1
  30. package/dist/Components/AppNavigationNew.js +1 -1
  31. package/dist/Components/AppNavigationNew.js.map +1 -1
  32. package/dist/Components/AppNavigationNewItem.js +2 -2
  33. package/dist/Components/AppNavigationNewItem.js.map +1 -1
  34. package/dist/Components/AppNavigationSettings.js +2 -2
  35. package/dist/Components/AppNavigationSettings.js.map +1 -1
  36. package/dist/Components/AppNavigationToggle.js +3 -3
  37. package/dist/Components/AppNavigationToggle.js.map +1 -1
  38. package/dist/Components/AppSettingsDialog.js +4 -4
  39. package/dist/Components/AppSettingsDialog.js.map +1 -1
  40. package/dist/Components/AppSettingsSection.js +1 -1
  41. package/dist/Components/AppSettingsSection.js.map +1 -1
  42. package/dist/Components/AppSidebar.js +4 -4
  43. package/dist/Components/AppSidebar.js.map +1 -1
  44. package/dist/Components/AppSidebarTab.js +1 -1
  45. package/dist/Components/AppSidebarTab.js.map +1 -1
  46. package/dist/Components/Avatar.js +4 -4
  47. package/dist/Components/Avatar.js.map +1 -1
  48. package/dist/Components/Breadcrumb.js +3 -3
  49. package/dist/Components/Breadcrumb.js.map +1 -1
  50. package/dist/Components/Breadcrumbs.js +5 -5
  51. package/dist/Components/Breadcrumbs.js.map +1 -1
  52. package/dist/Components/CheckboxRadioSwitch.js +2 -2
  53. package/dist/Components/CheckboxRadioSwitch.js.map +1 -1
  54. package/dist/Components/ColorPicker.js +2 -2
  55. package/dist/Components/ColorPicker.js.map +1 -1
  56. package/dist/Components/Content.js +1 -1
  57. package/dist/Components/Content.js.map +1 -1
  58. package/dist/Components/CounterBubble.js +1 -1
  59. package/dist/Components/CounterBubble.js.map +1 -1
  60. package/dist/Components/DatetimePicker.js +8 -8
  61. package/dist/Components/DatetimePicker.js.map +1 -1
  62. package/dist/Components/EmojiPicker.js +2 -2
  63. package/dist/Components/EmojiPicker.js.map +1 -1
  64. package/dist/Components/EmptyContent.js +2 -2
  65. package/dist/Components/EmptyContent.js.map +1 -1
  66. package/dist/Components/ListItem.js +4 -4
  67. package/dist/Components/ListItem.js.map +1 -1
  68. package/dist/Components/ListItemIcon.js +11 -11
  69. package/dist/Components/ListItemIcon.js.map +1 -1
  70. package/dist/Components/Modal.js +5 -5
  71. package/dist/Components/Modal.js.map +1 -1
  72. package/dist/Components/Multiselect.js +10 -10
  73. package/dist/Components/Multiselect.js.map +1 -1
  74. package/dist/Components/MultiselectTags.js +11 -11
  75. package/dist/Components/MultiselectTags.js.map +1 -1
  76. package/dist/Components/Popover.js +1 -1
  77. package/dist/Components/Popover.js.map +1 -1
  78. package/dist/Components/PopoverMenu.js +1 -1
  79. package/dist/Components/PopoverMenu.js.map +1 -1
  80. package/dist/Components/ProgressBar.js +1 -1
  81. package/dist/Components/ProgressBar.js.map +1 -1
  82. package/dist/Components/RichContenteditable.js +2 -2
  83. package/dist/Components/RichContenteditable.js.map +1 -1
  84. package/dist/Components/SettingsInputText.js +1 -1
  85. package/dist/Components/SettingsInputText.js.map +1 -1
  86. package/dist/Components/SettingsSection.js +1 -1
  87. package/dist/Components/SettingsSection.js.map +1 -1
  88. package/dist/Components/SettingsSelectGroup.js +10 -10
  89. package/dist/Components/SettingsSelectGroup.js.map +1 -1
  90. package/dist/Components/TimezonePicker.js +9 -9
  91. package/dist/Components/TimezonePicker.js.map +1 -1
  92. package/dist/Components/UserBubble.js +5 -5
  93. package/dist/Components/UserBubble.js.map +1 -1
  94. package/dist/Directives/Tooltip.js +2 -2
  95. package/dist/Directives/Tooltip.js.map +1 -1
  96. package/dist/Mixins/richEditor.js +1 -1
  97. package/dist/Mixins/richEditor.js.map +1 -1
  98. package/dist/ncvuecomponents.js +28 -28
  99. package/dist/ncvuecomponents.js.map +1 -1
  100. 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]/external \"@nextcloud/l10n/dist/gettext\"","webpack://NextcloudVue.[name]/./src/components/RichContenteditable/AutoCompleteResult.vue?a20f","webpack://NextcloudVue.[name]/./src/components/RichContenteditable/RichContenteditable.vue?b2c0","webpack://NextcloudVue.[name]/./src/components/RichContenteditable/RichContenteditable.vue?b6ee","webpack://NextcloudVue.[name]/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://NextcloudVue.[name]/external \"tributejs/dist/tribute.esm\"","webpack://NextcloudVue.[name]/external \"string-length\"","webpack://NextcloudVue.[name]/./src/components/RichContenteditable/RichContenteditable.vue?be6c","webpack://NextcloudVue.[name]/./src/components/RichContenteditable/AutoCompleteResult.vue?2c1c","webpack://NextcloudVue.[name]/src/components/RichContenteditable/AutoCompleteResult.vue","webpack://NextcloudVue.[name]/./src/components/RichContenteditable/AutoCompleteResult.vue?730d","webpack://NextcloudVue.[name]/./src/components/RichContenteditable/AutoCompleteResult.vue","webpack://NextcloudVue.[name]/./src/components/RichContenteditable/AutoCompleteResult.vue?32e1","webpack://NextcloudVue.[name]/src/components/RichContenteditable/RichContenteditable.vue","webpack://NextcloudVue.[name]/./src/components/RichContenteditable/RichContenteditable.vue?d1a7","webpack://NextcloudVue.[name]/./src/components/RichContenteditable/RichContenteditable.vue?e074","webpack://NextcloudVue.[name]/./src/components/RichContenteditable/RichContenteditable.vue?d04f","webpack://NextcloudVue.[name]/./src/components/RichContenteditable/RichContenteditable.vue","webpack://NextcloudVue.[name]/./src/components/RichContenteditable/index.js","webpack://NextcloudVue.[name]/external \"striptags\"","webpack://NextcloudVue.[name]/./src/components/RichContenteditable/MentionBubble.vue?6186","webpack://NextcloudVue.[name]/./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack://NextcloudVue.[name]/./src/utils/Linkify.js","webpack://NextcloudVue.[name]/external \"linkify-string\"","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/l10n.js","webpack://NextcloudVue.[name]/external \"escape-html\"","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]/external \"vue\"","webpack://NextcloudVue.[name]/external \"@nextcloud/router\"","webpack://NextcloudVue.[name]/external \"debounce\"","webpack://NextcloudVue.[name]/./node_modules/css-loader/dist/runtime/getUrl.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","require","_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__","_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default","_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_EXPORT___","a","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_REPLACEMENT_1___","___CSS_LOADER_URL_REPLACEMENT_2___","version","names","mappings","sourcesContent","__webpack_exports__","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","RichContenteditable_AutoCompleteResultvue_type_script_lang_js_","props","label","type","String","required","subline","default","icon","status","computed","avatarUrl","getAvatarUrl","haveStatus","_this$status","_this$status2","methods","user","size","router_","injectStylesIntoStyleTag_default","AutoCompleteResultvue_type_style_index_0_id_c5738294_lang_scss_scoped_true_","locals","AutoCompleteResult","componentNormalizer","_vm","_h","$createElement","_c","_self","staticClass","class","backgroundImage","_v","RichContenteditable_RichContenteditablevue_type_script_lang_js_","mixins","placeholder","l10n","autoComplete","Function","menuContainer","Element","body","multiline","contenteditable","disabled","maxlength","Number","_this","tribute","fillAttr","lookup","menuItemTemplate","renderComponentHtml","original","noMatchTemplate","selectTemplate","_item$original","genSelectTemplate","values","debouncedAutoComplete","localValue","isEmptyValue","trim","isFF","navigator","userAgent","match","isOverMaxlength","external_string_length_default","tooltip","show","trigger","canEdit","watch","html","$refs","innerHTML","parseContent","updateContent","mounted","tribute_esm_default","attach","$el","contentEditable","beforeDestroy","detach","onInput","event","updateValue","onPaste","preventDefault","clipboardData","$emit","files","items","find","startsWith","getData","selection","getSelection","rangeCount","text","range","getRangeAt","deleteFromDocument","insertNode","newRange","createRange","setStart","endOffset","collapse","removeAllRanges","addRange","htmlOrText","renderedContent","renderContent","onDelete","node","isCollapsed","curRange","commonAncestorContainer","nodeType","startOffset","anchorNode","selectNodeContents","setEndBefore","anchorOffset","setEnd","previousNode","cloneContents","lastChild","deleteContents","onEnter","isActive","stopPropagation","onCtrlEnter","external_debounce_default","_ref","regeneratorRuntime","mark","_callee","search","callback","wrap","_context","prev","stop","_x","_x2","apply","arguments","RichContenteditablevue_type_style_index_0_id_5181c9c3_lang_scss_scoped_true_options","RichContenteditablevue_type_style_index_0_id_5181c9c3_lang_scss_scoped_true_","RichContenteditablevue_type_style_index_1_lang_scss_options","RichContenteditablevue_type_style_index_1_lang_scss_","RichContenteditable_component","_g","directives","rawName","expression","ref","rich-contenteditable__input--empty","rich-contenteditable__input--multiline","rich-contenteditable__input--overflow","rich-contenteditable__input--disabled","attrs","aria-multiline","role","on","input","keydown","$event","indexOf","_k","keyCode","ctrlKey","shiftKey","altKey","metaKey","paste","$listeners","RichContenteditablevue_type_custom_index_0_blockType_docs_default","RichContenteditable","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","linkify_string__WEBPACK_IMPORTED_MODULE_0__","linkify_string__WEBPACK_IMPORTED_MODULE_0___default","Linkify","linkifyStr","defaultProtocol","className","rel","RichContenteditable_MentionBubblevue_type_script_lang_js_","primary","mentionText","MentionBubblevue_type_style_index_0_id_724f9d58_lang_scss_scoped_true_","MentionBubble","mention-bubble--primary","title","USERID_REGEX","RegExp","USERID_REGEX_WITH_SPACE","userData","escapeHtml","split","part","flat","replace","stripTags","propsData","component","Item","Vue","extend","wrapper","mount","display","$mount","renderedHtml","$destroy","_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","url","hash","needQuotes"],"mappings":"CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,IACQ,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,iCAAkC,GAAIH,GACnB,iBAAZC,QACdA,QAAQ,kCAAoCD,KAE5CD,EAAmB,aAAIA,EAAmB,cAAK,GAAIA,EAAmB,aAAE,kCAAoCC,KAR9G,CASGK,QAAQ,WACX,O,YCTE,IAAIC,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUP,QAGnC,IAAIC,EAASI,EAAiBE,GAAY,CACzCC,EAAGD,EACHE,GAAG,EACHT,QAAS,IAUV,OANAU,EAAQH,GAAUI,KAAKV,EAAOD,QAASC,EAAQA,EAAOD,QAASM,GAG/DL,EAAOQ,GAAI,EAGJR,EAAOD,QA0Df,OArDAM,EAAoBM,EAAIF,EAGxBJ,EAAoBO,EAAIR,EAGxBC,EAAoBQ,EAAI,SAASd,EAASe,EAAMC,GAC3CV,EAAoBW,EAAEjB,EAASe,IAClCG,OAAOC,eAAenB,EAASe,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEV,EAAoBgB,EAAI,SAAStB,GACX,oBAAXuB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAenB,EAASuB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAenB,EAAS,aAAc,CAAEyB,OAAO,KAQvDnB,EAAoBoB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQnB,EAAoBmB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFAxB,EAAoBgB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOnB,EAAoBQ,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRvB,EAAoB2B,EAAI,SAAShC,GAChC,IAAIe,EAASf,GAAUA,EAAO2B,WAC7B,WAAwB,OAAO3B,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAK,EAAoBQ,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRV,EAAoBW,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG7B,EAAoBgC,EAAI,SAIjBhC,EAAoBA,EAAoBiC,EAAI,K,iCChFrD,SAASC,EAAeC,EAAKjC,GAAK,OAUlC,SAAyBiC,GAAO,GAAIC,MAAMC,QAAQF,GAAM,OAAOA,EAVtBG,CAAgBH,IAQzD,SAA+BA,EAAKjC,GAAK,IAAIqC,EAAKJ,IAA0B,oBAAXlB,QAA0BkB,EAAIlB,OAAOuB,WAAaL,EAAI,eAAgB,GAAU,MAANI,EAAY,OAAQ,IAAkDE,EAAIC,EAAlDC,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAmB,IAAM,IAAKN,EAAKA,EAAGlC,KAAK8B,KAAQS,GAAMH,EAAKF,EAAGO,QAAQC,QAAoBJ,EAAKK,KAAKP,EAAGtB,QAAYjB,GAAKyC,EAAKM,SAAW/C,GAA3D0C,GAAK,IAAoE,MAAOM,GAAOL,GAAK,EAAMH,EAAKQ,EAAO,QAAU,IAAWN,GAAsB,MAAhBL,EAAW,QAAWA,EAAW,SAAO,QAAU,GAAIM,EAAI,MAAMH,GAAQ,OAAOC,EAR7aQ,CAAsBhB,EAAKjC,IAI5F,SAAqCS,EAAGyC,GAAU,IAAKzC,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO0C,EAAkB1C,EAAGyC,GAAS,IAAIzB,EAAIf,OAAOkB,UAAUwB,SAASjD,KAAKM,GAAG4C,MAAM,GAAI,GAAc,WAAN5B,GAAkBhB,EAAE6C,cAAa7B,EAAIhB,EAAE6C,YAAY/C,MAAM,GAAU,QAANkB,GAAqB,QAANA,EAAa,OAAOS,MAAMqB,KAAK9C,GAAI,GAAU,cAANgB,GAAqB,2CAA2C+B,KAAK/B,GAAI,OAAO0B,EAAkB1C,EAAGyC,GAJpTO,CAA4BxB,EAAKjC,IAEnI,WAA8B,MAAM,IAAI0D,UAAU,6IAFuFC,GAMzI,SAASR,EAAkBlB,EAAK2B,IAAkB,MAAPA,GAAeA,EAAM3B,EAAIc,UAAQa,EAAM3B,EAAIc,QAAQ,IAAK,IAAI/C,EAAI,EAAG6D,EAAO,IAAI3B,MAAM0B,GAAM5D,EAAI4D,EAAK5D,IAAO6D,EAAK7D,GAAKiC,EAAIjC,GAAM,OAAO6D,EAMhLpE,EAAOD,QAAU,SAAgCsE,GAC/C,IAAIC,EAAQ/B,EAAe8B,EAAM,GAC7BE,EAAUD,EAAM,GAChBE,EAAaF,EAAM,GAEvB,IAAKE,EACH,OAAOD,EAGT,GAAoB,mBAATE,KAAqB,CAE9B,IAAIC,EAASD,KAAKE,SAASC,mBAAmBC,KAAKC,UAAUN,MACzDO,EAAO,+DAA+DC,OAAON,GAC7EO,EAAgB,OAAOD,OAAOD,EAAM,OACpCG,EAAaV,EAAWW,QAAQC,KAAI,SAAUC,GAChD,MAAO,iBAAiBL,OAAOR,EAAWc,YAAc,IAAIN,OAAOK,EAAQ,UAE7E,MAAO,CAACd,GAASS,OAAOE,GAAYF,OAAO,CAACC,IAAgBM,KAAK,MAGnE,MAAO,CAAChB,GAASgB,KAAK,Q,+BC1BxBvF,EAAOD,QAAU,SAAUyF,GACzB,IAAIC,EAAO,GAuDX,OArDAA,EAAK9B,SAAW,WACd,OAAO+B,KAAKN,KAAI,SAAUf,GACxB,IAAIE,EAAUiB,EAAuBnB,GAErC,OAAIA,EAAK,GACA,UAAUW,OAAOX,EAAK,GAAI,MAAMW,OAAOT,EAAS,KAGlDA,KACNgB,KAAK,KAKVE,EAAKlF,EAAI,SAAUE,EAASkF,EAAYC,GACf,iBAAZnF,IAETA,EAAU,CAAC,CAAC,KAAMA,EAAS,MAG7B,IAAIoF,EAAyB,GAE7B,GAAID,EACF,IAAK,IAAIrF,EAAI,EAAGA,EAAImF,KAAKpC,OAAQ/C,IAAK,CAEpC,IAAIuF,EAAKJ,KAAKnF,GAAG,GAEP,MAANuF,IACFD,EAAuBC,IAAM,GAKnC,IAAK,IAAIlD,EAAK,EAAGA,EAAKnC,EAAQ6C,OAAQV,IAAM,CAC1C,IAAIyB,EAAO,GAAGW,OAAOvE,EAAQmC,IAEzBgD,GAAUC,EAAuBxB,EAAK,MAKtCsB,IACGtB,EAAK,GAGRA,EAAK,GAAK,GAAGW,OAAOW,EAAY,SAASX,OAAOX,EAAK,IAFrDA,EAAK,GAAKsB,GAMdF,EAAKpC,KAAKgB,MAIPoB,I,iBChETzF,EAAOD,QAAUgG,QAAQ,iC,iCCAzB,IAAAC,EAAA3F,EAAA,GAAA4F,EAAA5F,EAAA2B,EAAAgE,GAAAE,EAAA7F,EAAA,GAAA8F,EAAA9F,EAAA2B,EAAAkE,GAAAE,EAAA/F,EAAA,GAAAgG,EAAAhG,EAAA2B,EAAAoE,GAAAE,EAAAjG,EAAA,IAAAkG,EAAAlG,EAAA,IAAAmG,EAAAnG,EAAA,IAOIoG,EAA0BN,IAA4BF,EAAAS,GACtDC,EAAqCN,IAAgCC,EAAA,GACrEM,EAAqCP,IAAgCE,EAAA,GACrEM,EAAqCR,IAAgCG,EAAA,GAEzEC,EAAwBpD,KAAK,CAACrD,EAAOO,EAAI,qtCAAutCoG,EAAqC,6EAA+EC,EAAqC,uGAAyGC,EAAqC,8dAA+d,GAAG,CAACC,QAAU,EAAE3B,QAAU,CAAC,8CAA8C,qCAAqC,2CAA2C4B,MAAQ,GAAGC,SAAW,0uBAA0uBC,eAAiB,CAAC,kNAAkN,uuEAAuuE,k0DAAk0D3B,WAAa,MAE1qO4B,EAAA,K,iCCdf,IAAAlB,EAAA3F,EAAA,GAAA4F,EAAA5F,EAAA2B,EAAAgE,GAAAE,EAAA7F,EAAA,GAGIoG,EAHJpG,EAAA2B,EAAAkE,EAG8BC,GAA4BF,EAAAS,GAE1DD,EAAwBpD,KAAK,CAACrD,EAAOO,EAAI,4sCAA6sC,GAAG,CAACuG,QAAU,EAAE3B,QAAU,CAAC,8CAA8C,sCAAsC,2CAA2C4B,MAAQ,GAAGC,SAAW,gfAAgfC,eAAiB,CAAC,kNAAkN,s3EAAs3E,k0DAAk0D3B,WAAa,MAEhzM4B,EAAA,K,iCCPf,IAAAlB,EAAA3F,EAAA,GAAA4F,EAAA5F,EAAA2B,EAAAgE,GAAAE,EAAA7F,EAAA,GAGIoG,EAHJpG,EAAA2B,EAAAkE,EAG8BC,GAA4BF,EAAAS,GAE1DD,EAAwBpD,KAAK,CAACrD,EAAOO,EAAI,yXAA0X,GAAG,CAACuG,QAAU,EAAE3B,QAAU,CAAC,8CAA8C,uCAAuC4B,MAAQ,GAAGC,SAAW,oMAAoMC,eAAiB,CAAC,kNAAkN,smDAAsmD3B,WAAa,MAErjF4B,EAAA,K,mDCLf,IACMC,EADFC,EAEK,WAUL,YAToB,IAATD,IAMTA,EAAOE,QAAQlH,QAAUmH,UAAYA,SAASC,MAAQpH,OAAOqH,OAGxDL,GAIPM,EAAY,WACd,IAAIN,EAAO,GACX,OAAO,SAAkBO,GACvB,QAA4B,IAAjBP,EAAKO,GAAyB,CACvC,IAAIC,EAAcL,SAASM,cAAcF,GAEzC,GAAIvH,OAAO0H,mBAAqBF,aAAuBxH,OAAO0H,kBAC5D,IAGEF,EAAcA,EAAYG,gBAAgBC,KAC1C,MAAOC,GAEPL,EAAc,KAIlBR,EAAKO,GAAUC,EAGjB,OAAOR,EAAKO,IApBA,GAwBZO,EAAc,GAElB,SAASC,EAAqBC,GAG5B,IAFA,IAAIC,GAAU,EAEL7H,EAAI,EAAGA,EAAI0H,EAAY3E,OAAQ/C,IACtC,GAAI0H,EAAY1H,GAAG4H,aAAeA,EAAY,CAC5CC,EAAS7H,EACT,MAIJ,OAAO6H,EAGT,SAASC,EAAa5C,EAAM6C,GAI1B,IAHA,IAAIC,EAAa,GACbC,EAAc,GAETjI,EAAI,EAAGA,EAAIkF,EAAKnC,OAAQ/C,IAAK,CACpC,IAAI8D,EAAOoB,EAAKlF,GACZuF,EAAKwC,EAAQG,KAAOpE,EAAK,GAAKiE,EAAQG,KAAOpE,EAAK,GAClDqE,EAAQH,EAAWzC,IAAO,EAC1BqC,EAAa,GAAGnD,OAAOc,EAAI,KAAKd,OAAO0D,GAC3CH,EAAWzC,GAAM4C,EAAQ,EACzB,IAAIC,EAAQT,EAAqBC,GAC7BS,EAAM,CACRC,IAAKxE,EAAK,GACVyE,MAAOzE,EAAK,GACZ0E,UAAW1E,EAAK,KAGH,IAAXsE,GACFV,EAAYU,GAAOK,aACnBf,EAAYU,GAAOM,QAAQL,IAE3BX,EAAY5E,KAAK,CACf8E,WAAYA,EACZc,QAASC,EAASN,EAAKN,GACvBU,WAAY,IAIhBR,EAAYnF,KAAK8E,GAGnB,OAAOK,EAGT,SAASW,EAAmBb,GAC1B,IAAIc,EAAQ9B,SAAS+B,cAAc,SAC/BC,EAAahB,EAAQgB,YAAc,GAEvC,QAAgC,IAArBA,EAAWC,MAAuB,CAC3C,IAAIA,EAAmDlJ,EAAAmJ,GAEnDD,IACFD,EAAWC,MAAQA,GAQvB,GAJAtI,OAAOwI,KAAKH,GAAYI,SAAQ,SAAU5H,GACxCsH,EAAMO,aAAa7H,EAAKwH,EAAWxH,OAGP,mBAAnBwG,EAAQsB,OACjBtB,EAAQsB,OAAOR,OACV,CACL,IAAI1B,EAASD,EAAUa,EAAQsB,QAAU,QAEzC,IAAKlC,EACH,MAAM,IAAImC,MAAM,2GAGlBnC,EAAOoC,YAAYV,GAGrB,OAAOA,EAcT,IACMW,EADFC,GACED,EAAY,GACT,SAAiBpB,EAAOsB,GAE7B,OADAF,EAAUpB,GAASsB,EACZF,EAAUG,OAAO7C,SAAS9B,KAAK,QAI1C,SAAS4E,EAAoBf,EAAOT,EAAOyB,EAAQxB,GACjD,IAAIC,EAAMuB,EAAS,GAAKxB,EAAIE,MAAQ,UAAU9D,OAAO4D,EAAIE,MAAO,MAAM9D,OAAO4D,EAAIC,IAAK,KAAOD,EAAIC,IAIjG,GAAIO,EAAMiB,WACRjB,EAAMiB,WAAWC,QAAUN,EAAYrB,EAAOE,OACzC,CACL,IAAI0B,EAAUjD,SAASkD,eAAe3B,GAClC4B,EAAarB,EAAMqB,WAEnBA,EAAW9B,IACbS,EAAMsB,YAAYD,EAAW9B,IAG3B8B,EAAWnH,OACb8F,EAAMuB,aAAaJ,EAASE,EAAW9B,IAEvCS,EAAMU,YAAYS,IAKxB,SAASK,EAAWxB,EAAOd,EAASM,GAClC,IAAIC,EAAMD,EAAIC,IACVC,EAAQF,EAAIE,MACZC,EAAYH,EAAIG,UAepB,GAbID,EACFM,EAAMO,aAAa,QAASb,GAE5BM,EAAMyB,gBAAgB,SAGpB9B,GAA6B,oBAATtE,OACtBoE,GAAO,uDAAuD7D,OAAOP,KAAKE,SAASC,mBAAmBC,KAAKC,UAAUiE,MAAe,QAMlIK,EAAMiB,WACRjB,EAAMiB,WAAWC,QAAUzB,MACtB,CACL,KAAOO,EAAM0B,YACX1B,EAAMsB,YAAYtB,EAAM0B,YAG1B1B,EAAMU,YAAYxC,SAASkD,eAAe3B,KAI9C,IAAIkC,EAAY,KACZC,EAAmB,EAEvB,SAAS9B,EAASN,EAAKN,GACrB,IAAIc,EACA6B,EACAb,EAEJ,GAAI9B,EAAQyC,UAAW,CACrB,IAAIG,EAAaF,IACjB5B,EAAQ2B,IAAcA,EAAY5B,EAAmBb,IACrD2C,EAASd,EAAoBpI,KAAK,KAAMqH,EAAO8B,GAAY,GAC3Dd,EAASD,EAAoBpI,KAAK,KAAMqH,EAAO8B,GAAY,QAE3D9B,EAAQD,EAAmBb,GAC3B2C,EAASL,EAAW7I,KAAK,KAAMqH,EAAOd,GAEtC8B,EAAS,YAxFb,SAA4BhB,GAE1B,GAAyB,OAArBA,EAAM+B,WACR,OAAO,EAGT/B,EAAM+B,WAAWT,YAAYtB,GAmFzBgC,CAAmBhC,IAKvB,OADA6B,EAAOrC,GACA,SAAqByC,GAC1B,GAAIA,EAAQ,CACV,GAAIA,EAAOxC,MAAQD,EAAIC,KAAOwC,EAAOvC,QAAUF,EAAIE,OAASuC,EAAOtC,YAAcH,EAAIG,UACnF,OAGFkC,EAAOrC,EAAMyC,QAEbjB,KAKNpK,EAAOD,QAAU,SAAU0F,EAAM6C,IAC/BA,EAAUA,GAAW,IAGRyC,WAA0C,kBAAtBzC,EAAQyC,YACvCzC,EAAQyC,UAAY3D,KAItB,IAAIkE,EAAkBjD,EADtB5C,EAAOA,GAAQ,GAC0B6C,GACzC,OAAO,SAAgBiD,GAGrB,GAFAA,EAAUA,GAAW,GAE2B,mBAA5CtK,OAAOkB,UAAUwB,SAASjD,KAAK6K,GAAnC,CAIA,IAAK,IAAIhL,EAAI,EAAGA,EAAI+K,EAAgBhI,OAAQ/C,IAAK,CAC/C,IACIoI,EAAQT,EADKoD,EAAgB/K,IAEjC0H,EAAYU,GAAOK,aAKrB,IAFA,IAAIwC,EAAqBnD,EAAakD,EAASjD,GAEtC1F,EAAK,EAAGA,EAAK0I,EAAgBhI,OAAQV,IAAM,CAClD,IAEI6I,EAASvD,EAFKoD,EAAgB1I,IAIK,IAAnCqF,EAAYwD,GAAQzC,aACtBf,EAAYwD,GAAQxC,UAEpBhB,EAAYyD,OAAOD,EAAQ,IAI/BH,EAAkBE,M,kBC1QtBxL,EAAOD,QAAUgG,QAAQ,+B,kBCAzB/F,EAAOD,QAAUgG,QAAQ,kB,wCCAzB,I,mECAwM4F,ECiDxM,CACA7K,KAAA,qBAEA8K,MAAA,CACAC,MAAA,CACAC,KAAAC,OACAC,UAAA,GAEAC,QAAA,CACAH,KAAAC,OACAG,QAAA,MAEApG,GAAA,CACAgG,KAAAC,OACAG,QAAA,MAEAC,KAAA,CACAL,KAAAC,OACAC,UAAA,GAEA3G,OAAA,CACAyG,KAAAC,OACAC,UAAA,GAEAI,OAAA,CACAN,KAAA,CAAA7K,OAAAwB,OACAyJ,QAAA,uBAGAG,SAAA,CACAC,UADA,WAEA,OAAA5G,KAAAI,IAAA,UAAAJ,KAAAL,OACAK,KAAA6G,aAAA7G,KAAAI,GAAA,IACA,MAEA0G,WANA,WAMA,IAAAC,EAAAC,EACA,eAAAD,EAAA/G,KAAA0G,cAAA,IAAAK,OAAA,EAAAA,EAAAN,QAAA,QAAAO,EAAAhH,KAAA0G,cAAA,IAAAM,OAAA,EAAAA,EAAAN,UAIAO,QAAA,CACAJ,aADA,SACAK,EAAAC,GACA,OAAA5L,OAAA6L,EAAA,YAAA7L,CAAA,yBACA2L,OACAC,Y,yBC1FIvE,EAAU,CAEdsB,OAAiB,OACjBmB,WAAoB,G,GAEPgC,IAAIC,EAAA,EAAS1E,GAIX0E,EAAA,EAAQC,O,MCORC,EAXCjM,OAAAkM,EAAA,EAAAlM,CACd0K,GCTW,WAAa,IAAIyB,EAAI1H,KAAS2H,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACE,YAAY,uBAAuB,CAACF,EAAG,MAAM,CAACE,YAAY,4BAA4BC,MAAM,CAACN,EAAIjB,KAAO,+BAAiCiB,EAAId,UAAY,cAAgB,KAAMlD,MAAOgE,EAAId,UAAY,CAAEqB,gBAAkB,OAASP,EAAId,UAAY,KAAS,MAAO,CAAEc,EAAc,WAAEG,EAAG,MAAM,CAACE,YAAY,8BAA8BC,MAAM,CAAE,iCAAmCN,EAAIhB,QAAUgB,EAAIhB,OAAOD,KAAO,OAASiB,EAAIhB,OAAOA,UAAW,CAACgB,EAAIQ,GAAG,WAAWR,EAAItK,GAAGsK,EAAIhB,QAAUgB,EAAIhB,OAAOD,MAAQ,IAAI,YAAYiB,EAAIrK,OAAOqK,EAAIQ,GAAG,KAAKL,EAAG,OAAO,CAACE,YAAY,gCAAgC,CAACF,EAAG,OAAO,CAACE,YAAY,8BAA8B,CAACL,EAAIQ,GAAG,WAAWR,EAAItK,GAAGsK,EAAIvB,OAAO,YAAYuB,EAAIQ,GAAG,KAAMR,EAAW,QAAEG,EAAG,OAAO,CAACE,YAAY,gCAAgC,CAACL,EAAIQ,GAAG,WAAWR,EAAItK,GAAGsK,EAAInB,SAAS,YAAYmB,EAAIrK,WAC/4B,IDWpB,EACA,KACA,WACA,M,iIE2IF,IC1JyM8K,ED0JzM,CACA/M,KAAA,sBAEAgN,OAAA,C,MAAA,SAEAlC,MAAA,CACApK,MAAA,CACAsK,KAAAC,OACAG,QAAA,GACAF,UAAA,GAGA+B,YAAA,CACAjC,KAAAC,OACAG,QAAAjL,OAAA+M,EAAA,EAAA/M,CAAA,0CAGAgN,aAAA,CACAnC,KAAAoC,SACAlC,UAAA,GAEAmC,cAAA,CACArC,KAAAsC,QACAlC,QAAA,kBAAA5E,SAAA+G,OAUAC,UAAA,CACAxC,KAAAzE,QACA6E,SAAA,GAMAqC,gBAAA,CACAzC,KAAAzE,QACA6E,SAAA,GAMAsC,SAAA,CACA1C,KAAAzE,QACA6E,SAAA,GAMAuC,UAAA,CACA3C,KAAA4C,OACAxC,QAAA,OAIAnH,KA/DA,WA+DA,IAAA4J,EAAAjJ,KACA,OACAkJ,QAAA,KACAtG,QAAA,CACAuG,SAAA,KAEAC,OAAA,SAAA1G,GAAA,SAAApD,OAAAoD,EAAAtC,GAAA,KAAAd,OAAAoD,EAAAyD,QAEAsC,cAAAzI,KAAAyI,cAEAY,iBAAA,SAAA1K,GAAA,OAAAsK,EAAAK,oBAAA3K,EAAA4K,SAAA/B,IAEAgC,gBAAA,iDAEAC,eAAA,SAAA9K,GAAA,IAAA+K,EAAA,OAAAT,EAAAU,kBAAAhL,SAAA,QAAA+K,EAAA/K,EAAA4K,gBAAA,IAAAG,OAAA,EAAAA,EAAAtJ,KAEAwJ,OAAA5J,KAAA6J,uBAMAC,WAAA9J,KAAAlE,QAIA6K,SAAA,CAKAoD,aALA,WAMA,OAAA/J,KAAA8J,YACA9J,KAAA8J,YAAA,KAAA9J,KAAA8J,WAAAE,QAOAC,KAdA,WAeA,QAAAC,UAAAC,UAAAC,MAAA,aAOAC,gBAtBA,WAuBA,QAAArK,KAAA+J,eAAA/J,KAAA+I,YAGAuB,IAAAtK,KAAA8J,YAAA9J,KAAA+I,WAOAwB,QAjCA,WAkCA,OAAAvK,KAAAqK,gBAGA,CACAxL,QAAAtD,OAAA+M,EAAA,EAAA/M,CAAA,+CAAAyH,MAAAhD,KAAA+I,YACAyB,MAAA,EACAC,QAAA,UALA,MAaAC,QAhDA,WAiDA,OAAA1K,KAAA6I,kBAAA7I,KAAA8I,WAIA6B,MAAA,CAKA7O,MALA,WAMA,IAAA8O,EAAA5K,KAAA6K,MAAAhC,gBAAAiC,UAEA9K,KAAAlE,MAAAkO,SAAAhK,KAAA+K,aAAAH,GAAAZ,QACAhK,KAAAgL,cAAAhL,KAAAlE,SAKAmP,QA5JA,WA6JAjL,KAAAkJ,QAAA,IAAAgC,EAAAlK,EAAAhB,KAAA4C,SACA5C,KAAAkJ,QAAAiC,OAAAnL,KAAAoL,KAGApL,KAAAgL,cAAAhL,KAAAlE,OAIAkE,KAAA6K,MAAAhC,gBAAAwC,gBAAArL,KAAA0K,SAEAY,cAvKA,WAwKAtL,KAAAkJ,SACAlJ,KAAAkJ,QAAAqC,OAAAvL,KAAAoL,MAIAnE,QAAA,CAKAuE,QALA,SAKAC,GACAzL,KAAA0L,YAAAD,EAAAzJ,OAAA8I,YASAa,QAfA,SAeAF,GAEA,GAAAzL,KAAA0K,QAAA,CAIAe,EAAAG,iBACA,IAAAC,EAAAJ,EAAAI,cAMA,GAHA7L,KAAA8L,MAAA,QAAAL,GAGA,IAAAI,EAAAE,MAAAnO,QACArC,OAAAqO,OAAAiC,EAAAG,OAAAC,MAAA,SAAAtN,GAAA,OAAAA,aAAA,EAAAA,EAAAyH,KAAA8F,WAAA,WADA,CAKA,IAAAtB,EAAAiB,EAAAM,QAAA,QACAC,EAAA3R,OAAA4R,eAGAD,EAAAE,YACAtM,KAAA0L,YAAAd,GAIA,IAAA2B,EAAAvM,KAAA+K,aAAAH,GACA4B,EAAAJ,EAAAK,WAAA,GACAL,EAAAM,qBACAF,EAAAG,WAAA/K,SAAAkD,eAAAyH,IAGA,IAAAK,EAAAhL,SAAAiL,cACAD,EAAAE,SAAArB,EAAAzJ,OAAAwK,EAAAO,WACAH,EAAAI,UAAA,GACAZ,EAAAa,kBACAb,EAAAc,SAAAN,GAGA5M,KAAA0L,YAAAD,EAAAzJ,OAAA8I,cAOAY,YA9DA,SA8DAyB,GACA,IAAAZ,EAAAvM,KAAA+K,aAAAoC,GACAnN,KAAA8J,WAAAyC,EACAvM,KAAA8L,MAAA,eAAAS,IAOAvB,cAxEA,SAwEAlP,GACA,IAAAsR,EAAApN,KAAAqN,cAAAvR,GACAkE,KAAA6K,MAAAhC,gBAAAiC,UAAAsC,EACApN,KAAA8J,WAAAhO,GAWAwR,SAtFA,SAsFA7B,GACA,GAAAzL,KAAAiK,MAAAxP,OAAA4R,cAKArM,KAAA0K,QAAA,CAMA,IAAA0B,EAAA3R,OAAA4R,eACAkB,EAAA9B,EAAAzJ,OACA,GAAAoK,EAAAoB,aAAApB,EAAAE,WAAA,CAIA,IAAAmB,EAAArB,EAAAK,WAAAL,EAAAE,WAAA,GACA,SAAAmB,EAAAC,wBAAAC,UAAAF,EAAAG,YAAA,IAKA,IAAApB,EAAA5K,SAAAiL,cACA,GAAAT,EAAAyB,aAAAN,EAEAf,EAAAsB,mBAAAP,GACAf,EAAAuB,aAAA3B,EAAAyB,gBACA,MAAAzB,EAAA4B,aAAA,GAIA,OAHAxB,EAAAyB,OAAAV,EAAAnB,EAAA4B,cAKAxB,EAAAM,SAAAS,EAAAf,EAAAO,UAAA,GAEA,IAAAmB,EAAA1B,EAAA2B,gBAAAC,UACAF,GAAA,UAAAA,EAAA7C,kBAEAmB,EAAA6B,iBACA5C,EAAAG,sBAQA0C,QAvIA,SAuIA7C,GAGAzL,KAAA4I,WAAA5I,KAAAqK,iBAAArK,KAAAkJ,QAAAqF,WAIA9C,EAAAG,iBACAH,EAAA+C,kBACAxO,KAAA8L,MAAA,SAAAL,KAOAgD,YAvJA,SAuJAhD,GACAzL,KAAAqK,iBAGArK,KAAA8L,MAAA,SAAAL,IAMA5B,sBAAA6E,IAAA,e,EAAAC,G,EAAAC,mBAAAC,MAAA,SAAAC,EAAAC,EAAAC,GAAA,OAAAJ,mBAAAK,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAzR,MAAA,OACAuC,KAAAuI,aAAAwG,EAAAC,GADA,wBAAAE,EAAAE,UAAAN,EAAA9O,S,+KAAA,gBAAAqP,EAAAC,GAAA,OAAAX,EAAAY,MAAAvP,KAAAwP,YAAA,GAEA,O,SEveIC,EAAU,CAEdvL,OAAiB,OACjBmB,WAAoB,G,GAEPgC,IAAIqI,EAAA,EAASD,GAIXC,EAAA,EAAQnI,O,QCTnBoI,EAAU,CAEdzL,OAAiB,OACjBmB,WAAoB,G,GAEPgC,IAAIuI,EAAA,EAASD,GAIXC,EAAA,EAAQrI,O,iBCHnBsI,EAAYtU,OAAAkM,EAAA,EAAAlM,CACd4M,GVVW,WAAa,IAAIT,EAAI1H,KAAS2H,EAAGD,EAAIE,eAAuC,OAAjBF,EAAII,MAAMD,IAAIF,GAAa,MAAMD,EAAIoI,GAAG,CAACC,WAAW,CAAC,CAAC3U,KAAK,UAAU4U,QAAQ,YAAYlU,MAAO4L,EAAW,QAAEuI,WAAW,YAAYC,IAAI,kBAAkBnI,YAAY,8BAA8BC,MAAM,CAChRmI,qCAAsCzI,EAAIqC,aAC1CqG,yCAA0C1I,EAAIkB,UAC9CyH,wCAAyC3I,EAAI2C,gBAC7CiG,wCAAyC5I,EAAIoB,UAC5CyH,MAAM,CAAC1H,gBAAkBnB,EAAIgD,QAAQrC,YAAcX,EAAIW,YAAYmI,iBAAiB,OAAOC,KAAO,WAAWC,GAAG,CAACC,MAAQjJ,EAAI8D,QAAQoF,QAAU,CAAC,SAASC,GAAQ,OAAIA,EAAOzK,KAAK0K,QAAQ,QAAQpJ,EAAIqJ,GAAGF,EAAOG,QAAQ,SAAS,CAAC,EAAE,IAAIH,EAAOzU,IAAI,CAAC,YAAY,SAAS,QAAiB,KAAcsL,EAAI4F,SAASuD,IAAS,SAASA,GAAQ,OAAIA,EAAOzK,KAAK0K,QAAQ,QAAQpJ,EAAIqJ,GAAGF,EAAOG,QAAQ,QAAQ,GAAGH,EAAOzU,IAAI,UAA4ByU,EAAOI,SAASJ,EAAOK,UAAUL,EAAOM,QAAQN,EAAOO,QAAjE,KAAgG1J,EAAI4G,QAAQuC,IAAS,SAASA,GAAQ,OAAIA,EAAOzK,KAAK0K,QAAQ,QAAQpJ,EAAIqJ,GAAGF,EAAOG,QAAQ,QAAQ,GAAGH,EAAOzU,IAAI,SAAkB,KAAWyU,EAAOI,QAA2BJ,EAAOK,UAAUL,EAAOM,QAAQN,EAAOO,QAAiB,MAAOP,EAAOrC,kBAAkBqC,EAAOjF,iBAAwBlE,EAAI+G,YAAYoC,IAAjJ,OAA2JQ,MAAQ3J,EAAIiE,UAAUjE,EAAI4J,eACr1B,IUOpB,EACA,KACA,WACA,MAMoB,mBAAXC,EAAAvQ,GAAuBuQ,IAAO1B,GAE1B,IAAA2B,EAAA3B,E;;;;;;;;;;;;;;;;;;;;;GCAA2B,a,iBCxBflX,EAAOD,QAAUgG,QAAQ,c,gCCAzB,IAAAC,EAAA3F,EAAA,GAAA4F,EAAA5F,EAAA2B,EAAAgE,GAAAE,EAAA7F,EAAA,GAGIoG,EAHJpG,EAAA2B,EAAAkE,EAG8BC,GAA4BF,EAAAS,GAE1DD,EAAwBpD,KAAK,CAACrD,EAAOO,EAAI,2uCAA4uC,GAAG,CAACuG,QAAU,EAAE3B,QAAU,CAAC,8CAA8C,iCAAiC4B,MAAQ,GAAGC,SAAW,ikBAAikBC,eAAiB,CAAC,kNAAkN,85DAA85D3B,WAAa,MAEtlI4B,EAAA,K,+BCDA,SAASiQ,EACtBC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GAGA,IAqBIC,EArBAtP,EAAmC,mBAAlB8O,EACjBA,EAAc9O,QACd8O,EAsDJ,GAnDIC,IACF/O,EAAQ+O,OAASA,EACjB/O,EAAQgP,gBAAkBA,EAC1BhP,EAAQuP,WAAY,GAIlBN,IACFjP,EAAQwP,YAAa,GAInBL,IACFnP,EAAQyP,SAAW,UAAYN,GAI7BC,GACFE,EAAO,SAAUI,IAEfA,EACEA,GACCtS,KAAKuS,QAAUvS,KAAKuS,OAAOC,YAC3BxS,KAAKyS,QAAUzS,KAAKyS,OAAOF,QAAUvS,KAAKyS,OAAOF,OAAOC,aAEZ,oBAAxBE,sBACrBJ,EAAUI,qBAGRZ,GACFA,EAAa9W,KAAKgF,KAAMsS,GAGtBA,GAAWA,EAAQK,uBACrBL,EAAQK,sBAAsBC,IAAIZ,IAKtCpP,EAAQiQ,aAAeX,GACdJ,IACTI,EAAOD,EACH,WACAH,EAAa9W,KACXgF,MACC4C,EAAQwP,WAAapS,KAAKyS,OAASzS,MAAM8S,MAAMC,SAASC,aAG3DlB,GAGFI,EACF,GAAItP,EAAQwP,WAAY,CAGtBxP,EAAQqQ,cAAgBf,EAExB,IAAIgB,EAAiBtQ,EAAQ+O,OAC7B/O,EAAQ+O,OAAS,SAAmCwB,EAAGb,GAErD,OADAJ,EAAKlX,KAAKsX,GACHY,EAAeC,EAAGb,QAEtB,CAEL,IAAIc,EAAWxQ,EAAQyQ,aACvBzQ,EAAQyQ,aAAeD,EACnB,GAAG9T,OAAO8T,EAAUlB,GACpB,CAACA,GAIT,MAAO,CACL7X,QAASqX,EACT9O,QAASA,GA/FbjI,EAAAQ,EAAAqG,EAAA,uBAAAiQ,M,gCCAA,IAAA6B,EAAA3Y,EAAA,IAAA4Y,EAAA5Y,EAAA2B,EAAAgX,GAwCeE,IAXC,SAACjH,GAChB,OAAOkH,IAAWlH,EAAM,CACvBmH,gBAAiB,QACjB1R,OAAQ,SACR2R,UAAW,qBACX/P,WAAY,CACXgQ,IAAK,oC,iBCnCRtZ,EAAOD,QAAUgG,QAAQ,mB,iNCA0KwT,EC6CnM,CACAzY,KAAA,gBAEA8K,MAAA,CACA9F,GAAA,CACAgG,KAAAC,OACAC,UAAA,GAEAH,MAAA,CACAC,KAAAC,OACAC,UAAA,GAEAG,KAAA,CACAL,KAAAC,OACAC,UAAA,GAEA3G,OAAA,CACAyG,KAAAC,OACAC,UAAA,GAEAwN,QAAA,CACA1N,KAAAzE,QACA6E,SAAA,IAGAG,SAAA,CACAC,UADA,WAEA,OAAA5G,KAAAI,IAAA,UAAAJ,KAAAL,OACAK,KAAA6G,aAAA7G,KAAAI,GAAA,IACA,MAEA2T,YANA,WAOA,WAAA/T,KAAAI,GAAA0Q,QAAA,SAAAxR,OACAU,KAAAI,IADA,KAAAd,OAEAU,KAAAI,GAFA,OAMA6G,QAAA,CACAJ,aADA,SACAK,EAAAC,GACA,OAAA5L,OAAA6L,EAAA,YAAA7L,CAAA,yBACA2L,OACAC,Y,wBCpFIvE,EAAU,CAEdsB,OAAiB,OACjBmB,WAAoB,G,GAEPgC,IAAI2M,EAAA,EAASpR,GAIXoR,EAAA,EAAQzM,O,MCOR0M,EAXC1Y,OAAAkM,EAAA,EAAAlM,CACdsY,GCTW,WAAa,IAAInM,EAAI1H,KAAS2H,EAAGD,EAAIE,eAAmBC,EAAGH,EAAII,MAAMD,IAAIF,EAAG,OAAOE,EAAG,OAAO,CAACE,YAAY,iBAAiBC,MAAM,CAACkM,0BAA2BxM,EAAIoM,SAASvD,MAAM,CAAC1H,gBAAkB,UAAU,CAAChB,EAAG,OAAO,CAACE,YAAY,2BAA2B,CAACF,EAAG,OAAO,CAACE,YAAY,2BAA2B,CAACF,EAAG,OAAO,CAACE,YAAY,uBAAuBC,MAAM,CAACN,EAAIjB,KAAO,0BAA4BiB,EAAId,UAAY,cAAgB,KAAMlD,MAAOgE,EAAId,UAAY,CAAEqB,gBAAkB,OAASP,EAAId,UAAY,KAAS,OAAQc,EAAIQ,GAAG,KAAKL,EAAG,OAAO,CAACE,YAAY,wBAAwBwI,MAAM,CAACE,KAAO,UAAU0D,MAAQzM,EAAIvB,WAAWuB,EAAIQ,GAAG,KAAKL,EAAG,OAAO,CAACE,YAAY,yBAAyBwI,MAAM,CAACE,KAAO,SAAS,CAAC/I,EAAIQ,GAAGR,EAAItK,GAAGsK,EAAIqM,sBACltB,IDWpB,EACA,KACA,WACA,M,QEkBWK,EAAe,IAAIC,OAAJ,GAAA/U,OAHN,YAGM,2BAAAA,OADR,eACQ,KAAqE,MACpFgV,EAA0B,IAAID,OAAJ,GAAA/U,OAJjB,YAIiB,wCAAAA,OAFnB,eAEmB,KAAkF,MAE1GkC,EAAA,SACd0E,MAAO,CACNqO,SAAU,CACTnO,KAAM7K,OACNiL,QAAS,iBAAO,MAGlBS,QAAS,CAORoG,cAPQ,SAOMvR,GAAO,IAAAmN,EAAAjJ,KASpB,OAPuBwU,IAAW1Y,GAGA2Y,MAAML,GACtC1U,KAAI,SAAAgV,GAAI,OAAIA,EAAKD,MAAMH,MAA0BK,OAIjDjV,KAAI,SAAAgV,GAGJ,IAAKA,EAAKxI,WAAW,KAEpB,OAAOsH,YAAQkB,GAIhB,IAAMtU,EAAKsU,EAAKE,QAAQ,aAAc,IAEtC,MAAO,IAAM3L,EAAKU,kBAAkBvJ,MAEpCP,KAAK,IACL+U,QAAQ,QAAS,QACjBA,QAAQ,WAAY,MASvB7J,aAzCQ,SAyCKlM,GACZ,IAAI0N,EAAO1N,EAAQ+V,QAAQ,UAAW,MAWtC,OALArI,GAJAA,GADAA,EAAOA,EAAKqI,QAAQ,YAAa,MACrBA,QAAQ,WAAY,MAIpBA,QAAQ,aAAc,MAElCrI,EAAOsI,IAAUtI,EAAM,SACvBA,EAAOsI,IAAUtI,IAWlB5C,kBA9DQ,SA8DU7N,GACjB,IAAMuD,EAAOW,KAAKuU,SAASzY,GAG3B,OAAKuD,EAQEW,KAAKsJ,oBAAoBjK,EAAM4U,GAAeW,QAAQ,YAAa,KAN1C,IAAxB9Y,EAAMgV,QAAQ,KAAd,IAAAxR,OACAxD,GADA,KAAAwD,OAECxD,EAFD,MAgBTwN,oBApFQ,SAoFYwL,EAAWC,GAC9B,IACMC,EAAO,IADAC,IAAIC,OAAOH,GACX,CAAS,CACrBD,cAIKK,EAAUvT,SAAS+B,cAAc,OACjCyR,EAAQxT,SAAS+B,cAAc,OACrCwR,EAAQzR,MAAM2R,QAAU,OACxBF,EAAQ/Q,YAAYgR,GACpBxT,SAAS+G,KAAKvE,YAAY+Q,GAG1BH,EAAKM,OAAOF,GACZ,IAAMG,EAAeJ,EAAQrK,UAM7B,OAHAkK,EAAKQ,WACLL,EAAQzQ,SAED6Q,M,+BCpJV5a,EAAAQ,EAAAqG,EAAA,uBAAAzF,KAAApB,EAAAQ,EAAAqG,EAAA,uBAAAlF,KAAA,IAAAmZ,EAAA9a,EAAA,IAEM+a,EAAYC,8BAChBC,eAGFC,y6uCAAa7R,SAAQ,SAAC8R,GACrB,IAAMC,EAAe,GAErB,IAAK,IAAM3Z,KAAO0Z,EAAKC,aAElBD,EAAKC,aAAa3Z,GAAK4Z,SAC1BD,EAAa3Z,GAAO,CACnB6Z,MAAO7Z,EACP8Z,aAAcJ,EAAKC,aAAa3Z,GAAK4Z,SACrCG,OAAQL,EAAKC,aAAa3Z,GAAK+Z,QAMjCJ,EAAa3Z,GAAO,CACnB6Z,MAAO7Z,EACP+Z,OAAQ,CACPL,EAAKC,aAAa3Z,KAKrBsZ,EAAUU,eAAeN,EAAKO,OAAQ,CACrCN,aAAc,CACbO,GAAIP,QAKP,IAAMQ,EAAKb,EAAUc,QAEfla,EAAIia,EAAGE,SAASpa,KAAKka,GACrBxa,EAAIwa,EAAGG,QAAQra,KAAKka,I,iBCvC1Bjc,EAAOD,QAAUgG,QAAQ,gB,gCCAVmB,EAAA,oY,gCCAAA,EAAA,4iB,gCCAAA,EAAA,of,gBCAflH,EAAOD,QAAUgG,QAAQ,Q,gBCAzB/F,EAAOD,QAAUgG,QAAQ,sB,iBCAzB/F,EAAOD,QAAUgG,QAAQ,a,+BCEzB/F,EAAOD,QAAU,SAAUsc,EAAK/T,GAS9B,OARKA,IAEHA,EAAU,IAMO,iBAFnB+T,EAAMA,GAAOA,EAAI1a,WAAa0a,EAAInQ,QAAUmQ,GAGnCA,GAIL,eAAetY,KAAKsY,KAEtBA,EAAMA,EAAIzY,MAAM,GAAI,IAGlB0E,EAAQgU,OAEVD,GAAO/T,EAAQgU,MAKb,cAAcvY,KAAKsY,IAAQ/T,EAAQiU,WAC9B,IAAKvX,OAAOqX,EAAI/B,QAAQ,KAAM,OAAOA,QAAQ,MAAO,OAAQ,KAG9D+B","file":"Components/RichContenteditable.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/RichContenteditable\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Components/RichContenteditable\"] = factory();\n\telse\n\t\troot[\"NextcloudVue\"] = root[\"NextcloudVue\"] || {}, root[\"NextcloudVue\"][\"Components/RichContenteditable\"] = 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 = 205);\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};","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\";\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-c5738294]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.autocomplete-result[data-v-c5738294]{display:flex;height:44px;padding:10px}.highlight .autocomplete-result[data-v-c5738294]{color:var(--color-main-text);background:var(--color-primary-light)}.highlight .autocomplete-result[data-v-c5738294],.highlight .autocomplete-result *[data-v-c5738294]{cursor:pointer}.autocomplete-result__icon[data-v-c5738294]{position:relative;flex:0 0 44px;width:44px;min-width:44px;height:44px;border-radius:44px;background-color:var(--color-background-darker);background-repeat:no-repeat;background-position:center;background-size:24px}.autocomplete-result__icon--with-avatar[data-v-c5738294]{color:inherit;background-size:cover}.autocomplete-result__status[data-v-c5738294]{position:absolute;right:-4px;bottom:-4px;box-sizing:border-box;width:18px;height:18px;border:2px solid var(--color-main-background);border-radius:50%;background-color:var(--color-main-background);font-size:var(--default-font-size);line-height:15px;background-repeat:no-repeat;background-size:16px;background-position:center}.autocomplete-result__status--online[data-v-c5738294]{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \")}.autocomplete-result__status--dnd[data-v-c5738294]{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \");background-color:#ffffff}.autocomplete-result__status--away[data-v-c5738294]{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \")}.autocomplete-result__status--icon[data-v-c5738294]{border:none;background-color:transparent}.autocomplete-result__content[data-v-c5738294]{display:flex;flex:1 1 100%;flex-direction:column;justify-content:center;min-width:0;padding-left:10px}.autocomplete-result__title[data-v-c5738294],.autocomplete-result__subline[data-v-c5738294]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.autocomplete-result__subline[data-v-c5738294]{color:var(--color-text-lighter)}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../assets/material-icons.css\",\"webpack://./AutoCompleteResult.vue\",\"webpack://./../../assets/variables.scss\"],\"names\":[],\"mappings\":\"AAGA,uCACC,YAAa,CACb,iBAAkB,CAClB,mBAAoB,CACpB,kBAAmB,CACnB,sBAAuB,CCgGxB,sCACC,YAAa,CACb,WCjFoB,CDkFpB,YAL0B,CAO1B,iDACC,4BAA6B,CAC7B,qCAAsC,CAFvC,oGAIE,cAAe,CACf,4CAID,iBAAkB,CAClB,aC9FmB,CD+FnB,UC/FmB,CDgGnB,cChGmB,CDiGnB,WCjGmB,CDkGnB,kBClGmB,CDmGnB,+CAAgD,CAChD,2BAA4B,CAC5B,0BAA2B,CAC3B,oBAA4D,CAC5D,yDACC,aAAc,CACd,qBAAsB,CACtB,8CAID,iBAAkB,CAClB,UAAW,CACX,WAAY,CACZ,qBAAsB,CACtB,UAAW,CACX,WAAY,CACZ,6CAA8C,CAC9C,iBAAkB,CAClB,6CAA8C,CAC9C,kCAAmC,CACnC,gBAAiB,CACjB,2BAA4B,CAC5B,oBAAqB,CACrB,0BAA2B,CAE3B,sDACC,wDAAyE,CACzE,mDAEA,wDAAsE,CACtE,wBAAyB,CACzB,oDAEA,wDAAuE,CACvE,oDAEA,WAAY,CACZ,4BAA6B,CAC7B,+CAID,YAAa,CACb,aAAc,CACd,qBAAsB,CACtB,sBAAuB,CACvB,WAAY,CACZ,iBAtEyB,CAuEzB,4FAIA,kBAAmB,CACnB,eAAgB,CAChB,sBAAuB,CACvB,+CAGA,+BAAgC\",\"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$autocomplete-padding: 10px;\\n\\n.autocomplete-result {\\n\\tdisplay: flex;\\n\\theight: $clickable-area;\\n\\tpadding: $autocomplete-padding;\\n\\n\\t.highlight & {\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tbackground: var(--color-primary-light);\\n\\t\\t&, * {\\n\\t\\t\\tcursor: pointer;\\n\\t\\t}\\n\\t}\\n\\n\\t&__icon {\\n\\t\\tposition: relative;\\n\\t\\tflex: 0 0 $clickable-area;\\n\\t\\twidth: $clickable-area;\\n\\t\\tmin-width: $clickable-area;\\n\\t\\theight: $clickable-area;\\n\\t\\tborder-radius: $clickable-area;\\n\\t\\tbackground-color: var(--color-background-darker);\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\tbackground-position: center;\\n\\t\\tbackground-size: $clickable-area - 2 * $autocomplete-padding;\\n\\t\\t&--with-avatar {\\n\\t\\t\\tcolor: inherit;\\n\\t\\t\\tbackground-size: cover;\\n\\t\\t}\\n\\t}\\n\\n\\t&__status {\\n\\t\\tposition: absolute;\\n\\t\\tright: -4px;\\n\\t\\tbottom: -4px;\\n\\t\\tbox-sizing: border-box;\\n\\t\\twidth: 18px;\\n\\t\\theight: 18px;\\n\\t\\tborder: 2px solid var(--color-main-background);\\n\\t\\tborder-radius: 50%;\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tfont-size: var(--default-font-size);\\n\\t\\tline-height: 15px;\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\tbackground-size: 16px;\\n\\t\\tbackground-position: center;\\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&__content {\\n\\t\\tdisplay: flex;\\n\\t\\tflex: 1 1 100%;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: center;\\n\\t\\tmin-width: 0;\\n\\t\\tpadding-left: $autocomplete-padding;\\n\\t}\\n\\n\\t&__title,\\n\\t&__subline {\\n\\t\\twhite-space: nowrap;\\n\\t\\toverflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n\\n\\t&__subline {\\n\\t\\tcolor: var(--color-text-lighter);\\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","// 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-5181c9c3]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.rich-contenteditable__input[data-v-5181c9c3]{overflow-y:auto;width:auto;margin:0;padding:6px;cursor:text;white-space:pre-wrap;word-break:break-word;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);outline:none;background-color:var(--color-main-background);font-family:var(--font-face);font-size:inherit;min-height:44px;max-height:242px}.rich-contenteditable__input--empty[data-v-5181c9c3]:before{position:absolute;content:attr(placeholder);color:var(--color-text-maxcontrast)}.rich-contenteditable__input[contenteditable='false'][data-v-5181c9c3]:not(.rich-contenteditable__input--disabled){cursor:default;background-color:transparent;color:var(--color-main-text);border-color:transparent;opacity:1;border-radius:0}.rich-contenteditable__input--multiline[data-v-5181c9c3]{min-height:132px;max-height:none}.rich-contenteditable__input--disabled[data-v-5181c9c3]{opacity:.5;color:var(--color-text-lighter);border:1px solid var(--color-background-darker);border-radius:var(--border-radius);background-color:var(--color-background-dark)}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../assets/material-icons.css\",\"webpack://./RichContenteditable.vue\",\"webpack://./../../assets/variables.scss\"],\"names\":[],\"mappings\":\"AAGA,uCACC,YAAa,CACb,iBAAkB,CAClB,mBAAoB,CACpB,kBAAmB,CACnB,sBAAuB,CC0exB,8CACC,eAAgB,CAChB,UAAW,CACX,QAAS,CACT,WAAY,CACZ,WAAY,CACZ,oBAAqB,CACrB,qBAAsB,CACtB,4BAA6B,CAC7B,yCAA0C,CAC1C,kCAAmC,CACnC,YAAa,CACb,6CAA8C,CAC9C,4BAA6B,CAC7B,iBAAkB,CAClB,eCxeoB,CDyepB,gBAAiC,CAGjC,4DACC,iBAAkB,CAClB,yBAA0B,CAC1B,mCAAoC,CAtBtC,mHA0BE,cAAe,CACf,4BAA6B,CAC7B,4BAA6B,CAC7B,wBAAyB,CACzB,SAAU,CACV,eAAgB,CAChB,yDAGA,gBAA+B,CAE/B,eAAgB,CAChB,wDAGA,UCjfmB,CDkfnB,+BAAgC,CAChC,+CAAgD,CAChD,kCAAmC,CACnC,6CAA8C\",\"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// Standalone styling, independent from server\\n.rich-contenteditable__input {\\n\\toverflow-y: auto;\\n\\twidth: auto;\\n\\tmargin: 0;\\n\\tpadding: 6px;\\n\\tcursor: text;\\n\\twhite-space: pre-wrap;\\n\\tword-break: break-word;\\n\\tcolor: var(--color-main-text);\\n\\tborder: 1px solid var(--color-border-dark);\\n\\tborder-radius: var(--border-radius);\\n\\toutline: none;\\n\\tbackground-color: var(--color-main-background);\\n\\tfont-family: var(--font-face);\\n\\tfont-size: inherit;\\n\\tmin-height: $clickable-area;\\n\\tmax-height: $clickable-area * 5.5;\\n\\n\\t// Cannot use :empty because of firefox bug https://bugzilla.mozilla.org/show_bug.cgi?id=1513303\\n\\t&--empty:before {\\n\\t\\tposition: absolute;\\n\\t\\tcontent: attr(placeholder);\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t&[contenteditable='false']:not(&--disabled) {\\n\\t\\tcursor: default;\\n\\t\\tbackground-color: transparent;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder-color: transparent;\\n\\t\\topacity: 1;\\n\\t\\tborder-radius: 0;\\n\\t}\\n\\n\\t&--multiline {\\n\\t\\tmin-height: $clickable-area * 3;\\n\\t\\t// No max for mutiline\\n\\t\\tmax-height: none;\\n\\t}\\n\\n\\t&--disabled {\\n\\t\\topacity: $opacity_disabled;\\n\\t\\tcolor: var(--color-text-lighter);\\n\\t\\tborder: 1px solid var(--color-background-darker);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-color: var(--color-background-dark);\\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","// 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}.tribute-container{z-index:9000;overflow:auto;min-width:250px;max-width:300px;max-height:288px;margin:5px 0;color:var(--color-main-text);border-radius:var(--border-radius);background:var(--color-main-background);box-shadow:0 1px 5px var(--color-box-shadow)}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../assets/material-icons.css\",\"webpack://./RichContenteditable.vue\"],\"names\":[],\"mappings\":\"AAGA,sBACC,YAAa,CACb,iBAAkB,CAClB,mBAAoB,CACpB,kBAAmB,CACnB,sBAAuB,CC8hBxB,mBACC,YAAa,CACb,aAAc,CACd,eAAgB,CAChB,eAAgB,CAGhB,gBAA0C,CAE1C,YAAa,CACb,4BAA6B,CAC7B,kCAAmC,CACnC,uCAAwC,CACxC,4CAA6C\",\"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.tribute-container {\\n\\tz-index: 9000;\\n\\toverflow: auto;\\n\\tmin-width: 250px;\\n\\tmax-width: 300px;\\n\\t// Show maximum 4 entries and a half to show scroll\\n\\t// 44px + 10px padding\\n\\tmax-height: ($clickable-area + 20px) * 4.5;\\n\\t// Space it out a bit from the text\\n\\tmargin: 5px 0;\\n\\tcolor: var(--color-main-text);\\n\\tborder-radius: var(--border-radius);\\n\\tbackground: var(--color-main-background);\\n\\tbox-shadow: 0 1px 5px var(--color-box-shadow);\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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};","module.exports = require(\"tributejs/dist/tribute.esm\");","module.exports = require(\"string-length\");","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\"}],ref:\"contenteditable\",staticClass:\"rich-contenteditable__input\",class:{\n\t\t'rich-contenteditable__input--empty': _vm.isEmptyValue,\n\t\t'rich-contenteditable__input--multiline': _vm.multiline,\n\t\t'rich-contenteditable__input--overflow': _vm.isOverMaxlength,\n\t\t'rich-contenteditable__input--disabled': _vm.disabled,\n\t},attrs:{\"contenteditable\":_vm.canEdit,\"placeholder\":_vm.placeholder,\"aria-multiline\":\"true\",\"role\":\"textbox\"},on:{\"input\":_vm.onInput,\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"delete\",[8,46],$event.key,[\"Backspace\",\"Delete\",\"Del\"])){ return null; }return _vm.onDelete($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey){ return null; }return _vm.onEnter($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }if(!$event.ctrlKey){ return null; }if($event.shiftKey||$event.altKey||$event.metaKey){ return null; }$event.stopPropagation();$event.preventDefault();return _vm.onCtrlEnter($event)}],\"paste\":_vm.onPaste}},_vm.$listeners))}\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!./AutoCompleteResult.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!./AutoCompleteResult.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<div class=\"autocomplete-result\">\n\t\t<!-- Avatar or icon -->\n\t\t<div :class=\"[icon, `autocomplete-result__icon--${avatarUrl ? 'with-avatar' : ''}`]\"\n\t\t\t:style=\"avatarUrl ? { backgroundImage: `url(${avatarUrl})` } : null \"\n\t\t\tclass=\"autocomplete-result__icon\">\n\t\t\t<div v-if=\"haveStatus\"\n\t\t\t\t:class=\"[`autocomplete-result__status--${status && status.icon ? 'icon' : status.status}`]\"\n\t\t\t\tclass=\"autocomplete-result__status\">\n\t\t\t\t{{ status && status.icon || '' }}\n\t\t\t</div>\n\t\t</div>\n\n\t\t<!-- Title and subtitle -->\n\t\t<span class=\"autocomplete-result__content\">\n\t\t\t<span class=\"autocomplete-result__title\">\n\t\t\t\t{{ label }}\n\t\t\t</span>\n\t\t\t<span v-if=\"subline\" class=\"autocomplete-result__subline\">\n\t\t\t\t{{ subline }}\n\t\t\t</span>\n\t\t</span>\n\t</div>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\n\nexport default {\n\tname: 'AutoCompleteResult',\n\n\tprops: {\n\t\tlabel: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsubline: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tid: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\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\tstatus: {\n\t\t\ttype: [Object, Array],\n\t\t\tdefault: () => ({}),\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\thaveStatus() {\n\t\t\treturn this.status?.icon || this.status?.status\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$autocomplete-padding: 10px;\n\n.autocomplete-result {\n\tdisplay: flex;\n\theight: $clickable-area;\n\tpadding: $autocomplete-padding;\n\n\t.highlight & {\n\t\tcolor: var(--color-main-text);\n\t\tbackground: var(--color-primary-light);\n\t\t&, * {\n\t\t\tcursor: pointer;\n\t\t}\n\t}\n\n\t&__icon {\n\t\tposition: relative;\n\t\tflex: 0 0 $clickable-area;\n\t\twidth: $clickable-area;\n\t\tmin-width: $clickable-area;\n\t\theight: $clickable-area;\n\t\tborder-radius: $clickable-area;\n\t\tbackground-color: var(--color-background-darker);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: center;\n\t\tbackground-size: $clickable-area - 2 * $autocomplete-padding;\n\t\t&--with-avatar {\n\t\t\tcolor: inherit;\n\t\t\tbackground-size: cover;\n\t\t}\n\t}\n\n\t&__status {\n\t\tposition: absolute;\n\t\tright: -4px;\n\t\tbottom: -4px;\n\t\tbox-sizing: border-box;\n\t\twidth: 18px;\n\t\theight: 18px;\n\t\tborder: 2px solid var(--color-main-background);\n\t\tborder-radius: 50%;\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-size: var(--default-font-size);\n\t\tline-height: 15px;\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-size: 16px;\n\t\tbackground-position: center;\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&__content {\n\t\tdisplay: flex;\n\t\tflex: 1 1 100%;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\tmin-width: 0;\n\t\tpadding-left: $autocomplete-padding;\n\t}\n\n\t&__title,\n\t&__subline {\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n\n\t&__subline {\n\t\tcolor: var(--color-text-lighter);\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!./AutoCompleteResult.vue?vue&type=style&index=0&id=c5738294&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 \"./AutoCompleteResult.vue?vue&type=template&id=c5738294&scoped=true&\"\nimport script from \"./AutoCompleteResult.vue?vue&type=script&lang=js&\"\nexport * from \"./AutoCompleteResult.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AutoCompleteResult.vue?vue&type=style&index=0&id=c5738294&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 \"c5738294\",\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('div',{staticClass:\"autocomplete-result\"},[_c('div',{staticClass:\"autocomplete-result__icon\",class:[_vm.icon, (\"autocomplete-result__icon--\" + (_vm.avatarUrl ? 'with-avatar' : ''))],style:(_vm.avatarUrl ? { backgroundImage: (\"url(\" + _vm.avatarUrl + \")\") } : null)},[(_vm.haveStatus)?_c('div',{staticClass:\"autocomplete-result__status\",class:[(\"autocomplete-result__status--\" + (_vm.status && _vm.status.icon ? 'icon' : _vm.status.status))]},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.status && _vm.status.icon || '')+\"\\n\\t\\t\")]):_vm._e()]),_vm._v(\" \"),_c('span',{staticClass:\"autocomplete-result__content\"},[_c('span',{staticClass:\"autocomplete-result__title\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.label)+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.subline)?_c('span',{staticClass:\"autocomplete-result__subline\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.subline)+\"\\n\\t\\t\")]):_vm._e()])])}\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<docs>\n\n### General description\n\nThis component displays contenteditable div with automated @ autocompletion [at].\nNote you need to register the [tooltip directive](https://nextcloud-vue-components.netlify.app/#/Directives) in your entry file.\n\n### Examples\n\n```vue\n<template>\n\t<div>\n\t\t<RichContenteditable\n\t\t\t:value.sync=\"message\"\n\t\t\t:auto-complete=\"autoComplete\"\n\t\t\t:maxlength=\"100\"\n\t\t\t:user-data=\"userData\"\n\t\t\tplaceholder=\"Try mentioning the user Test01\"\n\t\t\t@submit=\"onSubmit\" />\n\t\t<br>\n\n\t\t<RichContenteditable\n\t\t\t:value.sync=\"message\"\n\t\t\t:auto-complete=\"autoComplete\"\n\t\t\t:maxlength=\"400\"\n\t\t\t:multiline=\"true\"\n\t\t\t:user-data=\"userData\"\n\t\t\tplaceholder=\"Try mentioning the user Test01\"\n\t\t\t@submit=\"onSubmit\" />\n\t\t<br>\n\t\t<br>\n\t\t{{ JSON.stringify(message) }}\n\t</div>\n</template>\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tmessage: 'Lorem ipsum dolor sit amet.',\n\n\t\t\t// You need to provide this for the inline\n\t\t\t// mention to understand what to display or not.\n\t\t\tuserData: {\n\t\t\t\tTest01: {\n\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\tid: 'Test01',\n\t\t\t\t\tlabel: 'Test01',\n\t\t\t\t\tsource: 'users',\n\t\t\t\t\tprimary: true,\n\t\t\t\t},\n\t\t\t\tTest02: {\n\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\tid: 'Test02',\n\t\t\t\t\tlabel: 'Test02',\n\t\t\t\t\tsource: 'users',\n\t\t\t\t\tstatus: {\n\t\t\t\t\t\tclearAt: null,\n\t\t\t\t\t\ticon: '🎡',\n\t\t\t\t\t\tmessage: 'Visiting London',\n\t\t\t\t\t\tstatus: 'away',\n\t\t\t\t\t},\n\t\t\t\t\tsubline: 'Visiting London',\n\t\t\t\t},\n\t\t\t\t'Test 03': {\n\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\tid: 'Test 03',\n\t\t\t\t\tlabel: 'Test 03',\n\t\t\t\t\tsource: 'users',\n\t\t\t\t\tstatus: {\n\t\t\t\t\t\tclearAt: null,\n\t\t\t\t\t\ticon: '🎡',\n\t\t\t\t\t\tmessage: 'Having space in my name',\n\t\t\t\t\t\tstatus: 'in space',\n\t\t\t\t\t},\n\t\t\t\t\tsubline: 'Visiting London',\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tmethods: {\n\t\t/**\n\t\t* Do your own query to the autocompletion api.\n\t\t* The returned data bellow is a fake data example.\n\t\t* The callback expects the same format returned by the core/autocomplete/get ocs api endpoint!\n\t\t* @see userData example above\n\t\t*\n\t\t* @param {string} search the query\n\t\t* @param {Function} callback the callback to process the results with\n\t\t*/\n\t\tautoComplete(search, callback) {\n\t\t\tcallback(Object.values(this.userData))\n\t\t},\n\t\tonSubmit() {\n\t\t\talert(this.message)\n\t\t}\n\t}\n}\n</script>\n```\n\n</docs>\n\n<template>\n\t<div ref=\"contenteditable\"\n\t\tv-tooltip=\"tooltip\"\n\t\t:class=\"{\n\t\t\t'rich-contenteditable__input--empty': isEmptyValue,\n\t\t\t'rich-contenteditable__input--multiline': multiline,\n\t\t\t'rich-contenteditable__input--overflow': isOverMaxlength,\n\t\t\t'rich-contenteditable__input--disabled': disabled,\n\t\t}\"\n\t\t:contenteditable=\"canEdit\"\n\t\t:placeholder=\"placeholder\"\n\t\taria-multiline=\"true\"\n\t\tclass=\"rich-contenteditable__input\"\n\t\trole=\"textbox\"\n\t\t@input=\"onInput\"\n\t\tv-on=\"$listeners\"\n\t\t@keydown.delete=\"onDelete\"\n\t\t@keydown.enter.exact=\"onEnter\"\n\t\t@keydown.ctrl.enter.exact.stop.prevent=\"onCtrlEnter\"\n\t\t@paste=\"onPaste\" />\n</template>\n\n<script>\nimport Tribute from 'tributejs/dist/tribute.esm'\nimport debounce from 'debounce'\nimport stringLength from 'string-length'\n\nimport { t } from '../../l10n'\nimport AutoCompleteResult from './AutoCompleteResult'\nimport richEditor from '../../mixins/richEditor/index'\n\nexport default {\n\tname: 'RichContenteditable',\n\n\tmixins: [richEditor],\n\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true,\n\t\t},\n\n\t\tplaceholder: {\n\t\t\ttype: String,\n\t\t\tdefault: t('Write message, @ to mention someone …'),\n\t\t},\n\n\t\tautoComplete: {\n\t\t\ttype: Function,\n\t\t\trequired: true,\n\t\t},\n\t\tmenuContainer: {\n\t\t\ttype: Element,\n\t\t\tdefault: () => document.body,\n\t\t},\n\n\t\t/**\n\t\t * Make the contenteditable looks like a textarea or not.\n\t\t * Default looks like a single-line input.\n\t\t * This also handle the default enter/shift+enter behaviour.\n\t\t * if multiline, enter = newline; otherwise enter = submit\n\t\t * shift+enter always add a new line. ctrl+enter always submits\n\t\t */\n\t\tmultiline: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Is the content editable ?\n\t\t */\n\t\tcontenteditable: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * Disable the editing and show specific disabled design\n\t\t */\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Max allowed length\n\t\t */\n\t\tmaxlength: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\ttribute: null,\n\t\t\toptions: {\n\t\t\t\tfillAttr: 'id',\n\t\t\t\t// Search against id and label (display name)\n\t\t\t\tlookup: result => `${result.id} ${result.label}`,\n\t\t\t\t// Where to inject the menu popup\n\t\t\t\tmenuContainer: this.menuContainer,\n\t\t\t\t// Popup mention autocompletion templates\n\t\t\t\tmenuItemTemplate: item => this.renderComponentHtml(item.original, AutoCompleteResult),\n\t\t\t\t// Hide if no results\n\t\t\t\tnoMatchTemplate: () => '<span class=\"hidden\"></span>',\n\t\t\t\t// Inner display of mentions\n\t\t\t\tselectTemplate: item => this.genSelectTemplate(item?.original?.id),\n\t\t\t\t// Autocompletion results\n\t\t\t\tvalues: this.debouncedAutoComplete,\n\t\t\t},\n\n\t\t\t// Represent the raw untrimmed text of the contenteditable\n\t\t\t// serves no other purpose than to check whether the\n\t\t\t// content is empty or not\n\t\t\tlocalValue: this.value,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Is the current trimmed value empty?\n\t\t * @returns {boolean}\n\t\t */\n\t\tisEmptyValue() {\n\t\t\treturn !this.localValue\n\t\t\t\t|| (this.localValue && this.localValue.trim() === '')\n\t\t},\n\n\t\t/**\n\t\t * Is this Firefox? 🙄\n\t\t * @returns {boolean}\n\t\t */\n\t\tisFF() {\n\t\t\treturn !!navigator.userAgent.match(/firefox/i)\n\t\t},\n\n\t\t/**\n\t\t * Is the current value over maxlength?\n\t\t * @returns {boolean}\n\t\t */\n\t\tisOverMaxlength() {\n\t\t\tif (this.isEmptyValue || !this.maxlength) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn stringLength(this.localValue) > this.maxlength\n\t\t},\n\n\t\t/**\n\t\t * Tooltip to show if characters count is over limit\n\t\t * @returns {string}\n\t\t */\n\t\ttooltip() {\n\t\t\tif (!this.isOverMaxlength) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tcontent: t('Message limit of {count} characters reached', { count: this.maxlength }),\n\t\t\t\tshow: true,\n\t\t\t\ttrigger: 'manual',\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Edit is only allowed when contenteditableis true and disabled is false\n\t\t * @returns {boolean}\n\t\t */\n\t\tcanEdit() {\n\t\t\treturn this.contenteditable && !this.disabled\n\t\t},\n\t},\n\n\twatch: {\n\t\t/**\n\t\t * If the parent value change, we compare the plain text rendering\n\t\t * If it's different, we render everything and update the main content\n\t\t */\n\t\tvalue() {\n\t\t\tconst html = this.$refs.contenteditable.innerHTML\n\t\t\t// Compare trimmed versions to be safe\n\t\t\tif (this.value.trim() !== this.parseContent(html).trim()) {\n\t\t\t\tthis.updateContent(this.value)\n\t\t\t}\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.tribute = new Tribute(this.options)\n\t\tthis.tribute.attach(this.$el)\n\n\t\t// Update default value\n\t\tthis.updateContent(this.value)\n\n\t\t// Removes the contenteditable attribute at first load if the prop is\n\t\t// set to false.\n\t\tthis.$refs.contenteditable.contentEditable = this.canEdit\n\t},\n\tbeforeDestroy() {\n\t\tif (this.tribute) {\n\t\t\tthis.tribute.detach(this.$el)\n\t\t}\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Re-emit the input event to the parent\n\t\t * @param {Event} event the input event\n\t\t */\n\t\tonInput(event) {\n\t\t\tthis.updateValue(event.target.innerHTML)\n\t\t},\n\n\t\t/**\n\t\t * When pasting, sanitize the content, extract text\n\t\t * and render it again\n\t\t * @param {Event} event the paste event\n\t\t * @emits {Event} paste the original paste event\n\t\t */\n\t\tonPaste(event) {\n\t\t\t// Either disabled or edit deactivated\n\t\t\tif (!this.canEdit) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tevent.preventDefault()\n\t\t\tconst clipboardData = event.clipboardData\n\n\t\t\t/** The original paste event */\n\t\t\tthis.$emit('paste', event)\n\n\t\t\t// If we have a file or if we don't have any text, ignore\n\t\t\tif (clipboardData.files.length !== 0\n\t\t\t\t|| !Object.values(clipboardData.items).find(item => item?.type.startsWith('text'))) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst html = clipboardData.getData('text')\n\t\t\tconst selection = window.getSelection()\n\n\t\t\t// If no selection, replace the whole data\n\t\t\tif (!selection.rangeCount) {\n\t\t\t\tthis.updateValue(html)\n\t\t\t}\n\n\t\t\t// Generate text and insert\n\t\t\tconst text = this.parseContent(html)\n\t\t\tconst range = selection.getRangeAt(0)\n\t\t\tselection.deleteFromDocument()\n\t\t\trange.insertNode(document.createTextNode(text))\n\n\t\t\t// Put cursor at the end of the selection\n\t\t\tconst newRange = document.createRange()\n\t\t\tnewRange.setStart(event.target, range.endOffset)\n\t\t\tnewRange.collapse(true)\n\t\t\tselection.removeAllRanges()\n\t\t\tselection.addRange(newRange)\n\n\t\t\t// Propagate data\n\t\t\tthis.updateValue(event.target.innerHTML)\n\t\t},\n\n\t\t/**\n\t\t * Update the value text from the provided html\n\t\t * @param {string} htmlOrText the html content (or raw text with @mentions)\n\t\t */\n\t\tupdateValue(htmlOrText) {\n\t\t\tconst text = this.parseContent(htmlOrText)\n\t\t\tthis.localValue = text\n\t\t\tthis.$emit('update:value', text)\n\t\t},\n\n\t\t/**\n\t\t * Update content and local value\n\t\t * @param {string} value the message value\n\t\t */\n\t\tupdateContent(value) {\n\t\t\tconst renderedContent = this.renderContent(value)\n\t\t\tthis.$refs.contenteditable.innerHTML = renderedContent\n\t\t\tthis.localValue = value\n\t\t},\n\n\t\t/**\n\t\t * Because FF have a decade old bug preventing contenteditable=false\n\t\t * to properly be deleted on backspace, we have to hack 👀\n\t\t * https://stackoverflow.com/a/59383394/3885878\n\t\t * https://stackoverflow.com/a/30574622\n\t\t *\n\t\t * @param {Event} event the delete keydown event\n\t\t */\n\t\tonDelete(event) {\n\t\t\tif (!this.isFF || !window.getSelection) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Either disabled or edit deactivated\n\t\t\tif (!this.canEdit) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// fix backspace bug in FF\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=685445\n\t\t\tconst selection = window.getSelection()\n\t\t\tconst node = event.target\n\t\t\tif (!selection.isCollapsed || !selection.rangeCount) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst curRange = selection.getRangeAt(selection.rangeCount - 1)\n\t\t\tif (curRange.commonAncestorContainer.nodeType === 3 && curRange.startOffset > 0) {\n\t\t\t\t// we are in child selection. The characters of the text node is being deleted\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst range = document.createRange()\n\t\t\tif (selection.anchorNode !== node) {\n\t\t\t\t// selection is in character mode. expand it to the whole editable field\n\t\t\t\trange.selectNodeContents(node)\n\t\t\t\trange.setEndBefore(selection.anchorNode)\n\t\t\t} else if (selection.anchorOffset > 0) {\n\t\t\t\trange.setEnd(node, selection.anchorOffset)\n\t\t\t} else {\n\t\t\t\t// reached the beginning of editable field\n\t\t\t\treturn\n\t\t\t}\n\t\t\trange.setStart(node, range.endOffset - 1)\n\n\t\t\tconst previousNode = range.cloneContents().lastChild\n\t\t\tif (previousNode && previousNode.contentEditable === 'false') {\n\t\t\t\t// this is some rich content, e.g. smile. We should help the user to delete it\n\t\t\t\trange.deleteContents()\n\t\t\t\tevent.preventDefault()\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Enter key pressed. Submits if not multiline\n\t\t * @param {Event} event the keydown event\n\t\t */\n\t\tonEnter(event) {\n\t\t\t// Prevent submitting if autocompletion menu\n\t\t\t// is opened or length is over maxlength\n\t\t\tif (this.multiline || this.isOverMaxlength || this.tribute.isActive) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tevent.preventDefault()\n\t\t\tevent.stopPropagation()\n\t\t\tthis.$emit('submit', event)\n\t\t},\n\n\t\t/**\n\t\t * Ctrl + Enter key pressed is used to submit\n\t\t * @param {Event} event the keydown event\n\t\t */\n\t\tonCtrlEnter(event) {\n\t\t\tif (this.isOverMaxlength) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.$emit('submit', event)\n\t\t},\n\n\t\t/**\n\t\t * Debounce the autocomplete function\n\t\t */\n\t\tdebouncedAutoComplete: debounce(async function(search, callback) {\n\t\t\tthis.autoComplete(search, callback)\n\t\t}, 100),\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n// Standalone styling, independent from server\n.rich-contenteditable__input {\n\toverflow-y: auto;\n\twidth: auto;\n\tmargin: 0;\n\tpadding: 6px;\n\tcursor: text;\n\twhite-space: pre-wrap;\n\tword-break: break-word;\n\tcolor: var(--color-main-text);\n\tborder: 1px solid var(--color-border-dark);\n\tborder-radius: var(--border-radius);\n\toutline: none;\n\tbackground-color: var(--color-main-background);\n\tfont-family: var(--font-face);\n\tfont-size: inherit;\n\tmin-height: $clickable-area;\n\tmax-height: $clickable-area * 5.5;\n\n\t// Cannot use :empty because of firefox bug https://bugzilla.mozilla.org/show_bug.cgi?id=1513303\n\t&--empty:before {\n\t\tposition: absolute;\n\t\tcontent: attr(placeholder);\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t&[contenteditable='false']:not(&--disabled) {\n\t\tcursor: default;\n\t\tbackground-color: transparent;\n\t\tcolor: var(--color-main-text);\n\t\tborder-color: transparent;\n\t\topacity: 1;\n\t\tborder-radius: 0;\n\t}\n\n\t&--multiline {\n\t\tmin-height: $clickable-area * 3;\n\t\t// No max for mutiline\n\t\tmax-height: none;\n\t}\n\n\t&--disabled {\n\t\topacity: $opacity_disabled;\n\t\tcolor: var(--color-text-lighter);\n\t\tborder: 1px solid var(--color-background-darker);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-background-dark);\n\t}\n}\n\n</style>\n\n<style lang=\"scss\">\n.tribute-container {\n\tz-index: 9000;\n\toverflow: auto;\n\tmin-width: 250px;\n\tmax-width: 300px;\n\t// Show maximum 4 entries and a half to show scroll\n\t// 44px + 10px padding\n\tmax-height: ($clickable-area + 20px) * 4.5;\n\t// Space it out a bit from the text\n\tmargin: 5px 0;\n\tcolor: var(--color-main-text);\n\tborder-radius: var(--border-radius);\n\tbackground: var(--color-main-background);\n\tbox-shadow: 0 1px 5px var(--color-box-shadow);\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!./RichContenteditable.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!./RichContenteditable.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!./RichContenteditable.vue?vue&type=style&index=0&id=5181c9c3&lang=scss&scoped=true&\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/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!./RichContenteditable.vue?vue&type=style&index=1&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 \"./RichContenteditable.vue?vue&type=template&id=5181c9c3&scoped=true&\"\nimport script from \"./RichContenteditable.vue?vue&type=script&lang=js&\"\nexport * from \"./RichContenteditable.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RichContenteditable.vue?vue&type=style&index=0&id=5181c9c3&lang=scss&scoped=true&\"\nimport style1 from \"./RichContenteditable.vue?vue&type=style&index=1&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 \"5181c9c3\",\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./RichContenteditable.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 RichContenteditable from './RichContenteditable'\n\nexport default RichContenteditable\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","/* 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","/**\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\");","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}(@&quot;[a-zA-Z0-9 _.@\\\\-']+&quot;)(${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(/@|&quot;/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(/&amp;/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(/&nbsp;/gmi, ' ')\n\t\t\ttext = text.replace(/&amp;/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","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(\"escape-html\");","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==\"","module.exports = require(\"vue\");","module.exports = require(\"@nextcloud/router\");","module.exports = require(\"debounce\");","\"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};"],"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]/external \"@nextcloud/l10n/dist/gettext\"","webpack://NextcloudVue.[name]/./src/components/RichContenteditable/AutoCompleteResult.vue?a20f","webpack://NextcloudVue.[name]/./src/components/RichContenteditable/RichContenteditable.vue?b2c0","webpack://NextcloudVue.[name]/./src/components/RichContenteditable/RichContenteditable.vue?b6ee","webpack://NextcloudVue.[name]/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://NextcloudVue.[name]/external \"tributejs/dist/tribute.esm\"","webpack://NextcloudVue.[name]/external \"string-length\"","webpack://NextcloudVue.[name]/./src/components/RichContenteditable/RichContenteditable.vue?be6c","webpack://NextcloudVue.[name]/./src/components/RichContenteditable/AutoCompleteResult.vue?2c1c","webpack://NextcloudVue.[name]/src/components/RichContenteditable/AutoCompleteResult.vue","webpack://NextcloudVue.[name]/./src/components/RichContenteditable/AutoCompleteResult.vue?730d","webpack://NextcloudVue.[name]/./src/components/RichContenteditable/AutoCompleteResult.vue","webpack://NextcloudVue.[name]/./src/components/RichContenteditable/AutoCompleteResult.vue?32e1","webpack://NextcloudVue.[name]/src/components/RichContenteditable/RichContenteditable.vue","webpack://NextcloudVue.[name]/./src/components/RichContenteditable/RichContenteditable.vue?d1a7","webpack://NextcloudVue.[name]/./src/components/RichContenteditable/RichContenteditable.vue?e074","webpack://NextcloudVue.[name]/./src/components/RichContenteditable/RichContenteditable.vue?d04f","webpack://NextcloudVue.[name]/./src/components/RichContenteditable/RichContenteditable.vue","webpack://NextcloudVue.[name]/./src/components/RichContenteditable/index.js","webpack://NextcloudVue.[name]/external \"striptags\"","webpack://NextcloudVue.[name]/./src/components/RichContenteditable/MentionBubble.vue?6186","webpack://NextcloudVue.[name]/./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack://NextcloudVue.[name]/./src/utils/Linkify.js","webpack://NextcloudVue.[name]/external \"linkify-string\"","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/l10n.js","webpack://NextcloudVue.[name]/external \"escape-html\"","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]/external \"vue\"","webpack://NextcloudVue.[name]/external \"@nextcloud/router\"","webpack://NextcloudVue.[name]/external \"debounce\"","webpack://NextcloudVue.[name]/./node_modules/css-loader/dist/runtime/getUrl.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","require","_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__","_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default","_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_EXPORT___","a","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_REPLACEMENT_1___","___CSS_LOADER_URL_REPLACEMENT_2___","version","names","mappings","sourcesContent","__webpack_exports__","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","RichContenteditable_AutoCompleteResultvue_type_script_lang_js_","props","label","type","String","required","subline","default","icon","status","computed","avatarUrl","getAvatarUrl","haveStatus","_this$status","_this$status2","methods","user","size","router_","injectStylesIntoStyleTag_default","AutoCompleteResultvue_type_style_index_0_id_c5738294_lang_scss_scoped_true_","locals","AutoCompleteResult","componentNormalizer","_vm","_h","$createElement","_c","_self","staticClass","class","backgroundImage","_v","RichContenteditable_RichContenteditablevue_type_script_lang_js_","mixins","placeholder","l10n","autoComplete","Function","menuContainer","Element","body","multiline","contenteditable","disabled","maxlength","Number","_this","tribute","fillAttr","lookup","menuItemTemplate","renderComponentHtml","original","noMatchTemplate","selectTemplate","_item$original","genSelectTemplate","values","debouncedAutoComplete","localValue","isEmptyValue","trim","isFF","navigator","userAgent","match","isOverMaxlength","external_string_length_default","tooltip","show","trigger","canEdit","watch","html","$refs","innerHTML","parseContent","updateContent","mounted","tribute_esm_default","attach","$el","contentEditable","beforeDestroy","detach","onInput","event","updateValue","onPaste","preventDefault","clipboardData","$emit","files","items","find","startsWith","getData","selection","getSelection","rangeCount","text","range","getRangeAt","deleteFromDocument","insertNode","newRange","createRange","setStart","endOffset","collapse","removeAllRanges","addRange","htmlOrText","renderedContent","renderContent","onDelete","node","isCollapsed","curRange","commonAncestorContainer","nodeType","startOffset","anchorNode","selectNodeContents","setEndBefore","anchorOffset","setEnd","previousNode","cloneContents","lastChild","deleteContents","onEnter","isActive","stopPropagation","onCtrlEnter","external_debounce_default","_ref","regeneratorRuntime","mark","_callee","search","callback","wrap","_context","prev","stop","_x","_x2","apply","arguments","RichContenteditablevue_type_style_index_0_id_5181c9c3_lang_scss_scoped_true_options","RichContenteditablevue_type_style_index_0_id_5181c9c3_lang_scss_scoped_true_","RichContenteditablevue_type_style_index_1_lang_scss_options","RichContenteditablevue_type_style_index_1_lang_scss_","RichContenteditable_component","_g","directives","rawName","expression","ref","rich-contenteditable__input--empty","rich-contenteditable__input--multiline","rich-contenteditable__input--overflow","rich-contenteditable__input--disabled","attrs","aria-multiline","role","on","input","keydown","$event","indexOf","_k","keyCode","ctrlKey","shiftKey","altKey","metaKey","paste","$listeners","RichContenteditablevue_type_custom_index_0_blockType_docs_default","RichContenteditable","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","linkify_string__WEBPACK_IMPORTED_MODULE_0__","linkify_string__WEBPACK_IMPORTED_MODULE_0___default","Linkify","linkifyStr","defaultProtocol","className","rel","RichContenteditable_MentionBubblevue_type_script_lang_js_","primary","mentionText","MentionBubblevue_type_style_index_0_id_724f9d58_lang_scss_scoped_true_","MentionBubble","mention-bubble--primary","title","USERID_REGEX","RegExp","USERID_REGEX_WITH_SPACE","userData","escapeHtml","split","part","flat","replace","stripTags","propsData","component","Item","Vue","extend","wrapper","mount","display","$mount","renderedHtml","$destroy","_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","url","hash","needQuotes"],"mappings":"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","file":"Components/RichContenteditable.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/RichContenteditable\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Components/RichContenteditable\"] = factory();\n\telse\n\t\troot[\"NextcloudVue\"] = root[\"NextcloudVue\"] || {}, root[\"NextcloudVue\"][\"Components/RichContenteditable\"] = 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 = 205);\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};","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\";\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-c5738294]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.autocomplete-result[data-v-c5738294]{display:flex;height:44px;padding:10px}.highlight .autocomplete-result[data-v-c5738294]{color:var(--color-main-text);background:var(--color-primary-light)}.highlight .autocomplete-result[data-v-c5738294],.highlight .autocomplete-result *[data-v-c5738294]{cursor:pointer}.autocomplete-result__icon[data-v-c5738294]{position:relative;flex:0 0 44px;width:44px;min-width:44px;height:44px;border-radius:44px;background-color:var(--color-background-darker);background-repeat:no-repeat;background-position:center;background-size:24px}.autocomplete-result__icon--with-avatar[data-v-c5738294]{color:inherit;background-size:cover}.autocomplete-result__status[data-v-c5738294]{position:absolute;right:-4px;bottom:-4px;box-sizing:border-box;width:18px;height:18px;border:2px solid var(--color-main-background);border-radius:50%;background-color:var(--color-main-background);font-size:var(--default-font-size);line-height:15px;background-repeat:no-repeat;background-size:16px;background-position:center}.autocomplete-result__status--online[data-v-c5738294]{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \")}.autocomplete-result__status--dnd[data-v-c5738294]{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \");background-color:#ffffff}.autocomplete-result__status--away[data-v-c5738294]{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \")}.autocomplete-result__status--icon[data-v-c5738294]{border:none;background-color:transparent}.autocomplete-result__content[data-v-c5738294]{display:flex;flex:1 1 100%;flex-direction:column;justify-content:center;min-width:0;padding-left:10px}.autocomplete-result__title[data-v-c5738294],.autocomplete-result__subline[data-v-c5738294]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.autocomplete-result__subline[data-v-c5738294]{color:var(--color-text-lighter)}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../assets/material-icons.css\",\"webpack://./AutoCompleteResult.vue\",\"webpack://./../../assets/variables.scss\"],\"names\":[],\"mappings\":\"AAGA,uCACC,YAAa,CACb,iBAAkB,CAClB,mBAAoB,CACpB,kBAAmB,CACnB,sBAAuB,CCgGxB,sCACC,YAAa,CACb,WCjFoB,CDkFpB,YAL0B,CAO1B,iDACC,4BAA6B,CAC7B,qCAAsC,CAFvC,oGAIE,cAAe,CACf,4CAID,iBAAkB,CAClB,aC9FmB,CD+FnB,UC/FmB,CDgGnB,cChGmB,CDiGnB,WCjGmB,CDkGnB,kBClGmB,CDmGnB,+CAAgD,CAChD,2BAA4B,CAC5B,0BAA2B,CAC3B,oBAA4D,CAC5D,yDACC,aAAc,CACd,qBAAsB,CACtB,8CAID,iBAAkB,CAClB,UAAW,CACX,WAAY,CACZ,qBAAsB,CACtB,UAAW,CACX,WAAY,CACZ,6CAA8C,CAC9C,iBAAkB,CAClB,6CAA8C,CAC9C,kCAAmC,CACnC,gBAAiB,CACjB,2BAA4B,CAC5B,oBAAqB,CACrB,0BAA2B,CAE3B,sDACC,wDAAyE,CACzE,mDAEA,wDAAsE,CACtE,wBAAyB,CACzB,oDAEA,wDAAuE,CACvE,oDAEA,WAAY,CACZ,4BAA6B,CAC7B,+CAID,YAAa,CACb,aAAc,CACd,qBAAsB,CACtB,sBAAuB,CACvB,WAAY,CACZ,iBAtEyB,CAuEzB,4FAIA,kBAAmB,CACnB,eAAgB,CAChB,sBAAuB,CACvB,+CAGA,+BAAgC\",\"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$autocomplete-padding: 10px;\\n\\n.autocomplete-result {\\n\\tdisplay: flex;\\n\\theight: $clickable-area;\\n\\tpadding: $autocomplete-padding;\\n\\n\\t.highlight & {\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tbackground: var(--color-primary-light);\\n\\t\\t&, * {\\n\\t\\t\\tcursor: pointer;\\n\\t\\t}\\n\\t}\\n\\n\\t&__icon {\\n\\t\\tposition: relative;\\n\\t\\tflex: 0 0 $clickable-area;\\n\\t\\twidth: $clickable-area;\\n\\t\\tmin-width: $clickable-area;\\n\\t\\theight: $clickable-area;\\n\\t\\tborder-radius: $clickable-area;\\n\\t\\tbackground-color: var(--color-background-darker);\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\tbackground-position: center;\\n\\t\\tbackground-size: $clickable-area - 2 * $autocomplete-padding;\\n\\t\\t&--with-avatar {\\n\\t\\t\\tcolor: inherit;\\n\\t\\t\\tbackground-size: cover;\\n\\t\\t}\\n\\t}\\n\\n\\t&__status {\\n\\t\\tposition: absolute;\\n\\t\\tright: -4px;\\n\\t\\tbottom: -4px;\\n\\t\\tbox-sizing: border-box;\\n\\t\\twidth: 18px;\\n\\t\\theight: 18px;\\n\\t\\tborder: 2px solid var(--color-main-background);\\n\\t\\tborder-radius: 50%;\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tfont-size: var(--default-font-size);\\n\\t\\tline-height: 15px;\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\tbackground-size: 16px;\\n\\t\\tbackground-position: center;\\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&__content {\\n\\t\\tdisplay: flex;\\n\\t\\tflex: 1 1 100%;\\n\\t\\tflex-direction: column;\\n\\t\\tjustify-content: center;\\n\\t\\tmin-width: 0;\\n\\t\\tpadding-left: $autocomplete-padding;\\n\\t}\\n\\n\\t&__title,\\n\\t&__subline {\\n\\t\\twhite-space: nowrap;\\n\\t\\toverflow: hidden;\\n\\t\\ttext-overflow: ellipsis;\\n\\t}\\n\\n\\t&__subline {\\n\\t\\tcolor: var(--color-text-lighter);\\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","// 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-5181c9c3]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.rich-contenteditable__input[data-v-5181c9c3]{overflow-y:auto;width:auto;margin:0;padding:6px;cursor:text;white-space:pre-wrap;word-break:break-word;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius);outline:none;background-color:var(--color-main-background);font-family:var(--font-face);font-size:inherit;min-height:44px;max-height:242px}.rich-contenteditable__input--empty[data-v-5181c9c3]:before{position:absolute;content:attr(placeholder);color:var(--color-text-maxcontrast)}.rich-contenteditable__input[contenteditable='false'][data-v-5181c9c3]:not(.rich-contenteditable__input--disabled){cursor:default;background-color:transparent;color:var(--color-main-text);border-color:transparent;opacity:1;border-radius:0}.rich-contenteditable__input--multiline[data-v-5181c9c3]{min-height:132px;max-height:none}.rich-contenteditable__input--disabled[data-v-5181c9c3]{opacity:.5;color:var(--color-text-lighter);border:1px solid var(--color-background-darker);border-radius:var(--border-radius);background-color:var(--color-background-dark)}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../assets/material-icons.css\",\"webpack://./RichContenteditable.vue\",\"webpack://./../../assets/variables.scss\"],\"names\":[],\"mappings\":\"AAGA,uCACC,YAAa,CACb,iBAAkB,CAClB,mBAAoB,CACpB,kBAAmB,CACnB,sBAAuB,CC0exB,8CACC,eAAgB,CAChB,UAAW,CACX,QAAS,CACT,WAAY,CACZ,WAAY,CACZ,oBAAqB,CACrB,qBAAsB,CACtB,4BAA6B,CAC7B,yCAA0C,CAC1C,kCAAmC,CACnC,YAAa,CACb,6CAA8C,CAC9C,4BAA6B,CAC7B,iBAAkB,CAClB,eCxeoB,CDyepB,gBAAiC,CAGjC,4DACC,iBAAkB,CAClB,yBAA0B,CAC1B,mCAAoC,CAtBtC,mHA0BE,cAAe,CACf,4BAA6B,CAC7B,4BAA6B,CAC7B,wBAAyB,CACzB,SAAU,CACV,eAAgB,CAChB,yDAGA,gBAA+B,CAE/B,eAAgB,CAChB,wDAGA,UCjfmB,CDkfnB,+BAAgC,CAChC,+CAAgD,CAChD,kCAAmC,CACnC,6CAA8C\",\"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// Standalone styling, independent from server\\n.rich-contenteditable__input {\\n\\toverflow-y: auto;\\n\\twidth: auto;\\n\\tmargin: 0;\\n\\tpadding: 6px;\\n\\tcursor: text;\\n\\twhite-space: pre-wrap;\\n\\tword-break: break-word;\\n\\tcolor: var(--color-main-text);\\n\\tborder: 1px solid var(--color-border-dark);\\n\\tborder-radius: var(--border-radius);\\n\\toutline: none;\\n\\tbackground-color: var(--color-main-background);\\n\\tfont-family: var(--font-face);\\n\\tfont-size: inherit;\\n\\tmin-height: $clickable-area;\\n\\tmax-height: $clickable-area * 5.5;\\n\\n\\t// Cannot use :empty because of firefox bug https://bugzilla.mozilla.org/show_bug.cgi?id=1513303\\n\\t&--empty:before {\\n\\t\\tposition: absolute;\\n\\t\\tcontent: attr(placeholder);\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t&[contenteditable='false']:not(&--disabled) {\\n\\t\\tcursor: default;\\n\\t\\tbackground-color: transparent;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder-color: transparent;\\n\\t\\topacity: 1;\\n\\t\\tborder-radius: 0;\\n\\t}\\n\\n\\t&--multiline {\\n\\t\\tmin-height: $clickable-area * 3;\\n\\t\\t// No max for mutiline\\n\\t\\tmax-height: none;\\n\\t}\\n\\n\\t&--disabled {\\n\\t\\topacity: $opacity_disabled;\\n\\t\\tcolor: var(--color-text-lighter);\\n\\t\\tborder: 1px solid var(--color-background-darker);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-color: var(--color-background-dark);\\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","// 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}.tribute-container{z-index:9000;overflow:auto;min-width:250px;max-width:300px;max-height:288px;margin:5px 0;color:var(--color-main-text);border-radius:var(--border-radius);background:var(--color-main-background);box-shadow:0 1px 5px var(--color-box-shadow)}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../../assets/material-icons.css\",\"webpack://./RichContenteditable.vue\"],\"names\":[],\"mappings\":\"AAGA,sBACC,YAAa,CACb,iBAAkB,CAClB,mBAAoB,CACpB,kBAAmB,CACnB,sBAAuB,CC8hBxB,mBACC,YAAa,CACb,aAAc,CACd,eAAgB,CAChB,eAAgB,CAGhB,gBAA0C,CAE1C,YAAa,CACb,4BAA6B,CAC7B,kCAAmC,CACnC,uCAAwC,CACxC,4CAA6C\",\"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.tribute-container {\\n\\tz-index: 9000;\\n\\toverflow: auto;\\n\\tmin-width: 250px;\\n\\tmax-width: 300px;\\n\\t// Show maximum 4 entries and a half to show scroll\\n\\t// 44px + 10px padding\\n\\tmax-height: ($clickable-area + 20px) * 4.5;\\n\\t// Space it out a bit from the text\\n\\tmargin: 5px 0;\\n\\tcolor: var(--color-main-text);\\n\\tborder-radius: var(--border-radius);\\n\\tbackground: var(--color-main-background);\\n\\tbox-shadow: 0 1px 5px var(--color-box-shadow);\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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};","module.exports = require(\"tributejs/dist/tribute.esm\");","module.exports = require(\"string-length\");","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\"}],ref:\"contenteditable\",staticClass:\"rich-contenteditable__input\",class:{\n\t\t'rich-contenteditable__input--empty': _vm.isEmptyValue,\n\t\t'rich-contenteditable__input--multiline': _vm.multiline,\n\t\t'rich-contenteditable__input--overflow': _vm.isOverMaxlength,\n\t\t'rich-contenteditable__input--disabled': _vm.disabled,\n\t},attrs:{\"contenteditable\":_vm.canEdit,\"placeholder\":_vm.placeholder,\"aria-multiline\":\"true\",\"role\":\"textbox\"},on:{\"input\":_vm.onInput,\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"delete\",[8,46],$event.key,[\"Backspace\",\"Delete\",\"Del\"])){ return null; }return _vm.onDelete($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey){ return null; }return _vm.onEnter($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }if(!$event.ctrlKey){ return null; }if($event.shiftKey||$event.altKey||$event.metaKey){ return null; }$event.stopPropagation();$event.preventDefault();return _vm.onCtrlEnter($event)}],\"paste\":_vm.onPaste}},_vm.$listeners))}\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!./AutoCompleteResult.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!./AutoCompleteResult.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<div class=\"autocomplete-result\">\n\t\t<!-- Avatar or icon -->\n\t\t<div :class=\"[icon, `autocomplete-result__icon--${avatarUrl ? 'with-avatar' : ''}`]\"\n\t\t\t:style=\"avatarUrl ? { backgroundImage: `url(${avatarUrl})` } : null \"\n\t\t\tclass=\"autocomplete-result__icon\">\n\t\t\t<div v-if=\"haveStatus\"\n\t\t\t\t:class=\"[`autocomplete-result__status--${status && status.icon ? 'icon' : status.status}`]\"\n\t\t\t\tclass=\"autocomplete-result__status\">\n\t\t\t\t{{ status && status.icon || '' }}\n\t\t\t</div>\n\t\t</div>\n\n\t\t<!-- Title and subtitle -->\n\t\t<span class=\"autocomplete-result__content\">\n\t\t\t<span class=\"autocomplete-result__title\">\n\t\t\t\t{{ label }}\n\t\t\t</span>\n\t\t\t<span v-if=\"subline\" class=\"autocomplete-result__subline\">\n\t\t\t\t{{ subline }}\n\t\t\t</span>\n\t\t</span>\n\t</div>\n</template>\n\n<script>\nimport { generateUrl } from '@nextcloud/router'\n\nexport default {\n\tname: 'AutoCompleteResult',\n\n\tprops: {\n\t\tlabel: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsubline: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tid: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\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\tstatus: {\n\t\t\ttype: [Object, Array],\n\t\t\tdefault: () => ({}),\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\thaveStatus() {\n\t\t\treturn this.status?.icon || this.status?.status\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$autocomplete-padding: 10px;\n\n.autocomplete-result {\n\tdisplay: flex;\n\theight: $clickable-area;\n\tpadding: $autocomplete-padding;\n\n\t.highlight & {\n\t\tcolor: var(--color-main-text);\n\t\tbackground: var(--color-primary-light);\n\t\t&, * {\n\t\t\tcursor: pointer;\n\t\t}\n\t}\n\n\t&__icon {\n\t\tposition: relative;\n\t\tflex: 0 0 $clickable-area;\n\t\twidth: $clickable-area;\n\t\tmin-width: $clickable-area;\n\t\theight: $clickable-area;\n\t\tborder-radius: $clickable-area;\n\t\tbackground-color: var(--color-background-darker);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: center;\n\t\tbackground-size: $clickable-area - 2 * $autocomplete-padding;\n\t\t&--with-avatar {\n\t\t\tcolor: inherit;\n\t\t\tbackground-size: cover;\n\t\t}\n\t}\n\n\t&__status {\n\t\tposition: absolute;\n\t\tright: -4px;\n\t\tbottom: -4px;\n\t\tbox-sizing: border-box;\n\t\twidth: 18px;\n\t\theight: 18px;\n\t\tborder: 2px solid var(--color-main-background);\n\t\tborder-radius: 50%;\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-size: var(--default-font-size);\n\t\tline-height: 15px;\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-size: 16px;\n\t\tbackground-position: center;\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&__content {\n\t\tdisplay: flex;\n\t\tflex: 1 1 100%;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\tmin-width: 0;\n\t\tpadding-left: $autocomplete-padding;\n\t}\n\n\t&__title,\n\t&__subline {\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n\n\t&__subline {\n\t\tcolor: var(--color-text-lighter);\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!./AutoCompleteResult.vue?vue&type=style&index=0&id=c5738294&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 \"./AutoCompleteResult.vue?vue&type=template&id=c5738294&scoped=true&\"\nimport script from \"./AutoCompleteResult.vue?vue&type=script&lang=js&\"\nexport * from \"./AutoCompleteResult.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AutoCompleteResult.vue?vue&type=style&index=0&id=c5738294&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 \"c5738294\",\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('div',{staticClass:\"autocomplete-result\"},[_c('div',{staticClass:\"autocomplete-result__icon\",class:[_vm.icon, (\"autocomplete-result__icon--\" + (_vm.avatarUrl ? 'with-avatar' : ''))],style:(_vm.avatarUrl ? { backgroundImage: (\"url(\" + _vm.avatarUrl + \")\") } : null)},[(_vm.haveStatus)?_c('div',{staticClass:\"autocomplete-result__status\",class:[(\"autocomplete-result__status--\" + (_vm.status && _vm.status.icon ? 'icon' : _vm.status.status))]},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.status && _vm.status.icon || '')+\"\\n\\t\\t\")]):_vm._e()]),_vm._v(\" \"),_c('span',{staticClass:\"autocomplete-result__content\"},[_c('span',{staticClass:\"autocomplete-result__title\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.label)+\"\\n\\t\\t\")]),_vm._v(\" \"),(_vm.subline)?_c('span',{staticClass:\"autocomplete-result__subline\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.subline)+\"\\n\\t\\t\")]):_vm._e()])])}\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<docs>\n\n### General description\n\nThis component displays contenteditable div with automated @ autocompletion [at].\nNote you need to register the [tooltip directive](https://nextcloud-vue-components.netlify.app/#/Directives) in your entry file.\n\n### Examples\n\n```vue\n<template>\n\t<div>\n\t\t<RichContenteditable\n\t\t\t:value.sync=\"message\"\n\t\t\t:auto-complete=\"autoComplete\"\n\t\t\t:maxlength=\"100\"\n\t\t\t:user-data=\"userData\"\n\t\t\tplaceholder=\"Try mentioning the user Test01\"\n\t\t\t@submit=\"onSubmit\" />\n\t\t<br>\n\n\t\t<RichContenteditable\n\t\t\t:value.sync=\"message\"\n\t\t\t:auto-complete=\"autoComplete\"\n\t\t\t:maxlength=\"400\"\n\t\t\t:multiline=\"true\"\n\t\t\t:user-data=\"userData\"\n\t\t\tplaceholder=\"Try mentioning the user Test01\"\n\t\t\t@submit=\"onSubmit\" />\n\t\t<br>\n\t\t<br>\n\t\t{{ JSON.stringify(message) }}\n\t</div>\n</template>\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tmessage: 'Lorem ipsum dolor sit amet.',\n\n\t\t\t// You need to provide this for the inline\n\t\t\t// mention to understand what to display or not.\n\t\t\tuserData: {\n\t\t\t\tTest01: {\n\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\tid: 'Test01',\n\t\t\t\t\tlabel: 'Test01',\n\t\t\t\t\tsource: 'users',\n\t\t\t\t\tprimary: true,\n\t\t\t\t},\n\t\t\t\tTest02: {\n\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\tid: 'Test02',\n\t\t\t\t\tlabel: 'Test02',\n\t\t\t\t\tsource: 'users',\n\t\t\t\t\tstatus: {\n\t\t\t\t\t\tclearAt: null,\n\t\t\t\t\t\ticon: '🎡',\n\t\t\t\t\t\tmessage: 'Visiting London',\n\t\t\t\t\t\tstatus: 'away',\n\t\t\t\t\t},\n\t\t\t\t\tsubline: 'Visiting London',\n\t\t\t\t},\n\t\t\t\t'Test 03': {\n\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\tid: 'Test 03',\n\t\t\t\t\tlabel: 'Test 03',\n\t\t\t\t\tsource: 'users',\n\t\t\t\t\tstatus: {\n\t\t\t\t\t\tclearAt: null,\n\t\t\t\t\t\ticon: '🎡',\n\t\t\t\t\t\tmessage: 'Having space in my name',\n\t\t\t\t\t\tstatus: 'in space',\n\t\t\t\t\t},\n\t\t\t\t\tsubline: 'Visiting London',\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tmethods: {\n\t\t/**\n\t\t* Do your own query to the autocompletion api.\n\t\t* The returned data bellow is a fake data example.\n\t\t* The callback expects the same format returned by the core/autocomplete/get ocs api endpoint!\n\t\t* @see userData example above\n\t\t*\n\t\t* @param {string} search the query\n\t\t* @param {Function} callback the callback to process the results with\n\t\t*/\n\t\tautoComplete(search, callback) {\n\t\t\tcallback(Object.values(this.userData))\n\t\t},\n\t\tonSubmit() {\n\t\t\talert(this.message)\n\t\t}\n\t}\n}\n</script>\n```\n\n</docs>\n\n<template>\n\t<div ref=\"contenteditable\"\n\t\tv-tooltip=\"tooltip\"\n\t\t:class=\"{\n\t\t\t'rich-contenteditable__input--empty': isEmptyValue,\n\t\t\t'rich-contenteditable__input--multiline': multiline,\n\t\t\t'rich-contenteditable__input--overflow': isOverMaxlength,\n\t\t\t'rich-contenteditable__input--disabled': disabled,\n\t\t}\"\n\t\t:contenteditable=\"canEdit\"\n\t\t:placeholder=\"placeholder\"\n\t\taria-multiline=\"true\"\n\t\tclass=\"rich-contenteditable__input\"\n\t\trole=\"textbox\"\n\t\t@input=\"onInput\"\n\t\tv-on=\"$listeners\"\n\t\t@keydown.delete=\"onDelete\"\n\t\t@keydown.enter.exact=\"onEnter\"\n\t\t@keydown.ctrl.enter.exact.stop.prevent=\"onCtrlEnter\"\n\t\t@paste=\"onPaste\" />\n</template>\n\n<script>\nimport Tribute from 'tributejs/dist/tribute.esm'\nimport debounce from 'debounce'\nimport stringLength from 'string-length'\n\nimport { t } from '../../l10n'\nimport AutoCompleteResult from './AutoCompleteResult'\nimport richEditor from '../../mixins/richEditor/index'\n\nexport default {\n\tname: 'RichContenteditable',\n\n\tmixins: [richEditor],\n\n\tprops: {\n\t\tvalue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true,\n\t\t},\n\n\t\tplaceholder: {\n\t\t\ttype: String,\n\t\t\tdefault: t('Write message, @ to mention someone …'),\n\t\t},\n\n\t\tautoComplete: {\n\t\t\ttype: Function,\n\t\t\trequired: true,\n\t\t},\n\t\tmenuContainer: {\n\t\t\ttype: Element,\n\t\t\tdefault: () => document.body,\n\t\t},\n\n\t\t/**\n\t\t * Make the contenteditable looks like a textarea or not.\n\t\t * Default looks like a single-line input.\n\t\t * This also handle the default enter/shift+enter behaviour.\n\t\t * if multiline, enter = newline; otherwise enter = submit\n\t\t * shift+enter always add a new line. ctrl+enter always submits\n\t\t */\n\t\tmultiline: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Is the content editable ?\n\t\t */\n\t\tcontenteditable: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * Disable the editing and show specific disabled design\n\t\t */\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Max allowed length\n\t\t */\n\t\tmaxlength: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\ttribute: null,\n\t\t\toptions: {\n\t\t\t\tfillAttr: 'id',\n\t\t\t\t// Search against id and label (display name)\n\t\t\t\tlookup: result => `${result.id} ${result.label}`,\n\t\t\t\t// Where to inject the menu popup\n\t\t\t\tmenuContainer: this.menuContainer,\n\t\t\t\t// Popup mention autocompletion templates\n\t\t\t\tmenuItemTemplate: item => this.renderComponentHtml(item.original, AutoCompleteResult),\n\t\t\t\t// Hide if no results\n\t\t\t\tnoMatchTemplate: () => '<span class=\"hidden\"></span>',\n\t\t\t\t// Inner display of mentions\n\t\t\t\tselectTemplate: item => this.genSelectTemplate(item?.original?.id),\n\t\t\t\t// Autocompletion results\n\t\t\t\tvalues: this.debouncedAutoComplete,\n\t\t\t},\n\n\t\t\t// Represent the raw untrimmed text of the contenteditable\n\t\t\t// serves no other purpose than to check whether the\n\t\t\t// content is empty or not\n\t\t\tlocalValue: this.value,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Is the current trimmed value empty?\n\t\t * @returns {boolean}\n\t\t */\n\t\tisEmptyValue() {\n\t\t\treturn !this.localValue\n\t\t\t\t|| (this.localValue && this.localValue.trim() === '')\n\t\t},\n\n\t\t/**\n\t\t * Is this Firefox? 🙄\n\t\t * @returns {boolean}\n\t\t */\n\t\tisFF() {\n\t\t\treturn !!navigator.userAgent.match(/firefox/i)\n\t\t},\n\n\t\t/**\n\t\t * Is the current value over maxlength?\n\t\t * @returns {boolean}\n\t\t */\n\t\tisOverMaxlength() {\n\t\t\tif (this.isEmptyValue || !this.maxlength) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn stringLength(this.localValue) > this.maxlength\n\t\t},\n\n\t\t/**\n\t\t * Tooltip to show if characters count is over limit\n\t\t * @returns {string}\n\t\t */\n\t\ttooltip() {\n\t\t\tif (!this.isOverMaxlength) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tcontent: t('Message limit of {count} characters reached', { count: this.maxlength }),\n\t\t\t\tshow: true,\n\t\t\t\ttrigger: 'manual',\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Edit is only allowed when contenteditableis true and disabled is false\n\t\t * @returns {boolean}\n\t\t */\n\t\tcanEdit() {\n\t\t\treturn this.contenteditable && !this.disabled\n\t\t},\n\t},\n\n\twatch: {\n\t\t/**\n\t\t * If the parent value change, we compare the plain text rendering\n\t\t * If it's different, we render everything and update the main content\n\t\t */\n\t\tvalue() {\n\t\t\tconst html = this.$refs.contenteditable.innerHTML\n\t\t\t// Compare trimmed versions to be safe\n\t\t\tif (this.value.trim() !== this.parseContent(html).trim()) {\n\t\t\t\tthis.updateContent(this.value)\n\t\t\t}\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.tribute = new Tribute(this.options)\n\t\tthis.tribute.attach(this.$el)\n\n\t\t// Update default value\n\t\tthis.updateContent(this.value)\n\n\t\t// Removes the contenteditable attribute at first load if the prop is\n\t\t// set to false.\n\t\tthis.$refs.contenteditable.contentEditable = this.canEdit\n\t},\n\tbeforeDestroy() {\n\t\tif (this.tribute) {\n\t\t\tthis.tribute.detach(this.$el)\n\t\t}\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Re-emit the input event to the parent\n\t\t * @param {Event} event the input event\n\t\t */\n\t\tonInput(event) {\n\t\t\tthis.updateValue(event.target.innerHTML)\n\t\t},\n\n\t\t/**\n\t\t * When pasting, sanitize the content, extract text\n\t\t * and render it again\n\t\t * @param {Event} event the paste event\n\t\t * @emits {Event} paste the original paste event\n\t\t */\n\t\tonPaste(event) {\n\t\t\t// Either disabled or edit deactivated\n\t\t\tif (!this.canEdit) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tevent.preventDefault()\n\t\t\tconst clipboardData = event.clipboardData\n\n\t\t\t/** The original paste event */\n\t\t\tthis.$emit('paste', event)\n\n\t\t\t// If we have a file or if we don't have any text, ignore\n\t\t\tif (clipboardData.files.length !== 0\n\t\t\t\t|| !Object.values(clipboardData.items).find(item => item?.type.startsWith('text'))) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst html = clipboardData.getData('text')\n\t\t\tconst selection = window.getSelection()\n\n\t\t\t// If no selection, replace the whole data\n\t\t\tif (!selection.rangeCount) {\n\t\t\t\tthis.updateValue(html)\n\t\t\t}\n\n\t\t\t// Generate text and insert\n\t\t\tconst text = this.parseContent(html)\n\t\t\tconst range = selection.getRangeAt(0)\n\t\t\tselection.deleteFromDocument()\n\t\t\trange.insertNode(document.createTextNode(text))\n\n\t\t\t// Put cursor at the end of the selection\n\t\t\tconst newRange = document.createRange()\n\t\t\tnewRange.setStart(event.target, range.endOffset)\n\t\t\tnewRange.collapse(true)\n\t\t\tselection.removeAllRanges()\n\t\t\tselection.addRange(newRange)\n\n\t\t\t// Propagate data\n\t\t\tthis.updateValue(event.target.innerHTML)\n\t\t},\n\n\t\t/**\n\t\t * Update the value text from the provided html\n\t\t * @param {string} htmlOrText the html content (or raw text with @mentions)\n\t\t */\n\t\tupdateValue(htmlOrText) {\n\t\t\tconst text = this.parseContent(htmlOrText)\n\t\t\tthis.localValue = text\n\t\t\tthis.$emit('update:value', text)\n\t\t},\n\n\t\t/**\n\t\t * Update content and local value\n\t\t * @param {string} value the message value\n\t\t */\n\t\tupdateContent(value) {\n\t\t\tconst renderedContent = this.renderContent(value)\n\t\t\tthis.$refs.contenteditable.innerHTML = renderedContent\n\t\t\tthis.localValue = value\n\t\t},\n\n\t\t/**\n\t\t * Because FF have a decade old bug preventing contenteditable=false\n\t\t * to properly be deleted on backspace, we have to hack 👀\n\t\t * https://stackoverflow.com/a/59383394/3885878\n\t\t * https://stackoverflow.com/a/30574622\n\t\t *\n\t\t * @param {Event} event the delete keydown event\n\t\t */\n\t\tonDelete(event) {\n\t\t\tif (!this.isFF || !window.getSelection) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Either disabled or edit deactivated\n\t\t\tif (!this.canEdit) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// fix backspace bug in FF\n\t\t\t// https://bugzilla.mozilla.org/show_bug.cgi?id=685445\n\t\t\tconst selection = window.getSelection()\n\t\t\tconst node = event.target\n\t\t\tif (!selection.isCollapsed || !selection.rangeCount) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst curRange = selection.getRangeAt(selection.rangeCount - 1)\n\t\t\tif (curRange.commonAncestorContainer.nodeType === 3 && curRange.startOffset > 0) {\n\t\t\t\t// we are in child selection. The characters of the text node is being deleted\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst range = document.createRange()\n\t\t\tif (selection.anchorNode !== node) {\n\t\t\t\t// selection is in character mode. expand it to the whole editable field\n\t\t\t\trange.selectNodeContents(node)\n\t\t\t\trange.setEndBefore(selection.anchorNode)\n\t\t\t} else if (selection.anchorOffset > 0) {\n\t\t\t\trange.setEnd(node, selection.anchorOffset)\n\t\t\t} else {\n\t\t\t\t// reached the beginning of editable field\n\t\t\t\treturn\n\t\t\t}\n\t\t\trange.setStart(node, range.endOffset - 1)\n\n\t\t\tconst previousNode = range.cloneContents().lastChild\n\t\t\tif (previousNode && previousNode.contentEditable === 'false') {\n\t\t\t\t// this is some rich content, e.g. smile. We should help the user to delete it\n\t\t\t\trange.deleteContents()\n\t\t\t\tevent.preventDefault()\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Enter key pressed. Submits if not multiline\n\t\t * @param {Event} event the keydown event\n\t\t */\n\t\tonEnter(event) {\n\t\t\t// Prevent submitting if autocompletion menu\n\t\t\t// is opened or length is over maxlength\n\t\t\tif (this.multiline || this.isOverMaxlength || this.tribute.isActive) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tevent.preventDefault()\n\t\t\tevent.stopPropagation()\n\t\t\tthis.$emit('submit', event)\n\t\t},\n\n\t\t/**\n\t\t * Ctrl + Enter key pressed is used to submit\n\t\t * @param {Event} event the keydown event\n\t\t */\n\t\tonCtrlEnter(event) {\n\t\t\tif (this.isOverMaxlength) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.$emit('submit', event)\n\t\t},\n\n\t\t/**\n\t\t * Debounce the autocomplete function\n\t\t */\n\t\tdebouncedAutoComplete: debounce(async function(search, callback) {\n\t\t\tthis.autoComplete(search, callback)\n\t\t}, 100),\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n// Standalone styling, independent from server\n.rich-contenteditable__input {\n\toverflow-y: auto;\n\twidth: auto;\n\tmargin: 0;\n\tpadding: 6px;\n\tcursor: text;\n\twhite-space: pre-wrap;\n\tword-break: break-word;\n\tcolor: var(--color-main-text);\n\tborder: 1px solid var(--color-border-dark);\n\tborder-radius: var(--border-radius);\n\toutline: none;\n\tbackground-color: var(--color-main-background);\n\tfont-family: var(--font-face);\n\tfont-size: inherit;\n\tmin-height: $clickable-area;\n\tmax-height: $clickable-area * 5.5;\n\n\t// Cannot use :empty because of firefox bug https://bugzilla.mozilla.org/show_bug.cgi?id=1513303\n\t&--empty:before {\n\t\tposition: absolute;\n\t\tcontent: attr(placeholder);\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t&[contenteditable='false']:not(&--disabled) {\n\t\tcursor: default;\n\t\tbackground-color: transparent;\n\t\tcolor: var(--color-main-text);\n\t\tborder-color: transparent;\n\t\topacity: 1;\n\t\tborder-radius: 0;\n\t}\n\n\t&--multiline {\n\t\tmin-height: $clickable-area * 3;\n\t\t// No max for mutiline\n\t\tmax-height: none;\n\t}\n\n\t&--disabled {\n\t\topacity: $opacity_disabled;\n\t\tcolor: var(--color-text-lighter);\n\t\tborder: 1px solid var(--color-background-darker);\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-color: var(--color-background-dark);\n\t}\n}\n\n</style>\n\n<style lang=\"scss\">\n.tribute-container {\n\tz-index: 9000;\n\toverflow: auto;\n\tmin-width: 250px;\n\tmax-width: 300px;\n\t// Show maximum 4 entries and a half to show scroll\n\t// 44px + 10px padding\n\tmax-height: ($clickable-area + 20px) * 4.5;\n\t// Space it out a bit from the text\n\tmargin: 5px 0;\n\tcolor: var(--color-main-text);\n\tborder-radius: var(--border-radius);\n\tbackground: var(--color-main-background);\n\tbox-shadow: 0 1px 5px var(--color-box-shadow);\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!./RichContenteditable.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!./RichContenteditable.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!./RichContenteditable.vue?vue&type=style&index=0&id=5181c9c3&lang=scss&scoped=true&\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/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!./RichContenteditable.vue?vue&type=style&index=1&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 \"./RichContenteditable.vue?vue&type=template&id=5181c9c3&scoped=true&\"\nimport script from \"./RichContenteditable.vue?vue&type=script&lang=js&\"\nexport * from \"./RichContenteditable.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RichContenteditable.vue?vue&type=style&index=0&id=5181c9c3&lang=scss&scoped=true&\"\nimport style1 from \"./RichContenteditable.vue?vue&type=style&index=1&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 \"5181c9c3\",\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./RichContenteditable.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 RichContenteditable from './RichContenteditable'\n\nexport default RichContenteditable\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","/* 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","/**\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\");","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}(@&quot;[a-zA-Z0-9 _.@\\\\-']+&quot;)(${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(/@|&quot;/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(/&amp;/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(/&nbsp;/gmi, ' ')\n\t\t\ttext = text.replace(/&amp;/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","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(\"escape-html\");","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==\"","module.exports = require(\"vue\");","module.exports = require(\"@nextcloud/router\");","module.exports = require(\"debounce\");","\"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};"],"sourceRoot":""}