@nextcloud/vue 6.0.0-alpha.0 → 6.0.0-beta.3

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 (291) hide show
  1. package/CHANGELOG.md +106 -39
  2. package/README.md +15 -0
  3. package/dist/Components/NcActionButton.js +3 -0
  4. package/dist/Components/{ActionButton.js.LICENSE.txt → NcActionButton.js.LICENSE.txt} +0 -0
  5. package/dist/Components/NcActionButton.js.map +1 -0
  6. package/dist/Components/NcActionCaption.js +2 -0
  7. package/dist/Components/NcActionCaption.js.map +1 -0
  8. package/dist/Components/NcActionCheckbox.js +3 -0
  9. package/dist/Components/{ActionCheckbox.js.LICENSE.txt → NcActionCheckbox.js.LICENSE.txt} +0 -0
  10. package/dist/Components/NcActionCheckbox.js.map +1 -0
  11. package/dist/Components/NcActionInput.js +3 -0
  12. package/dist/Components/{ActionInput.js.LICENSE.txt → NcActionInput.js.LICENSE.txt} +0 -0
  13. package/dist/Components/NcActionInput.js.map +1 -0
  14. package/dist/Components/NcActionLink.js +3 -0
  15. package/dist/Components/{ActionLink.js.LICENSE.txt → NcActionLink.js.LICENSE.txt} +0 -0
  16. package/dist/Components/NcActionLink.js.map +1 -0
  17. package/dist/Components/NcActionRadio.js +3 -0
  18. package/dist/Components/{ActionRadio.js.LICENSE.txt → NcActionRadio.js.LICENSE.txt} +0 -0
  19. package/dist/Components/NcActionRadio.js.map +1 -0
  20. package/dist/Components/NcActionRouter.js +3 -0
  21. package/dist/Components/{ActionRouter.js.LICENSE.txt → NcActionRouter.js.LICENSE.txt} +0 -0
  22. package/dist/Components/NcActionRouter.js.map +1 -0
  23. package/dist/Components/NcActionSeparator.js +2 -0
  24. package/dist/Components/NcActionSeparator.js.map +1 -0
  25. package/dist/Components/NcActionText.js +3 -0
  26. package/dist/Components/{ActionText.js.LICENSE.txt → NcActionText.js.LICENSE.txt} +0 -0
  27. package/dist/Components/NcActionText.js.map +1 -0
  28. package/dist/Components/NcActionTextEditable.js +3 -0
  29. package/dist/Components/{ActionTextEditable.js.LICENSE.txt → NcActionTextEditable.js.LICENSE.txt} +0 -0
  30. package/dist/Components/NcActionTextEditable.js.map +1 -0
  31. package/dist/Components/NcActions.js +3 -0
  32. package/dist/Components/{Actions.js.LICENSE.txt → NcActions.js.LICENSE.txt} +0 -0
  33. package/dist/Components/NcActions.js.map +1 -0
  34. package/dist/Components/NcAppContent.js +3 -0
  35. package/dist/Components/NcAppContent.js.LICENSE.txt +22 -0
  36. package/dist/Components/NcAppContent.js.map +1 -0
  37. package/dist/Components/NcAppContentDetails.js +2 -0
  38. package/dist/Components/NcAppContentDetails.js.map +1 -0
  39. package/dist/Components/NcAppContentList.js +2 -0
  40. package/dist/Components/NcAppContentList.js.map +1 -0
  41. package/dist/Components/NcAppNavigation.js +3 -0
  42. package/dist/Components/NcAppNavigation.js.LICENSE.txt +22 -0
  43. package/dist/Components/NcAppNavigation.js.map +1 -0
  44. package/dist/Components/NcAppNavigationCaption.js +3 -0
  45. package/dist/Components/{AppNavigationCaption.js.LICENSE.txt → NcAppNavigationCaption.js.LICENSE.txt} +0 -0
  46. package/dist/Components/NcAppNavigationCaption.js.map +1 -0
  47. package/dist/Components/NcAppNavigationCounter.js +2 -0
  48. package/dist/Components/NcAppNavigationCounter.js.map +1 -0
  49. package/dist/Components/NcAppNavigationIconBullet.js +2 -0
  50. package/dist/Components/NcAppNavigationIconBullet.js.map +1 -0
  51. package/dist/Components/NcAppNavigationItem.js +3 -0
  52. package/dist/Components/{Breadcrumbs.js.LICENSE.txt → NcAppNavigationItem.js.LICENSE.txt} +0 -0
  53. package/dist/Components/NcAppNavigationItem.js.map +1 -0
  54. package/dist/Components/NcAppNavigationNew.js +2 -0
  55. package/dist/Components/NcAppNavigationNew.js.map +1 -0
  56. package/dist/Components/NcAppNavigationNewItem.js +2 -0
  57. package/dist/Components/NcAppNavigationNewItem.js.map +1 -0
  58. package/dist/Components/NcAppNavigationSettings.js +3 -0
  59. package/dist/Components/{AppNavigationSettings.js.LICENSE.txt → NcAppNavigationSettings.js.LICENSE.txt} +0 -0
  60. package/dist/Components/NcAppNavigationSettings.js.map +1 -0
  61. package/dist/Components/NcAppNavigationSpacer.js +2 -0
  62. package/dist/Components/NcAppNavigationSpacer.js.map +1 -0
  63. package/dist/Components/NcAppNavigationToggle.js +3 -0
  64. package/dist/Components/NcAppNavigationToggle.js.LICENSE.txt +22 -0
  65. package/dist/Components/NcAppNavigationToggle.js.map +1 -0
  66. package/dist/Components/NcAppSettingsDialog.js +3 -0
  67. package/dist/Components/NcAppSettingsDialog.js.LICENSE.txt +66 -0
  68. package/dist/Components/NcAppSettingsDialog.js.map +1 -0
  69. package/dist/Components/NcAppSettingsSection.js +2 -0
  70. package/dist/Components/NcAppSettingsSection.js.map +1 -0
  71. package/dist/Components/NcAppSidebar.js +3 -0
  72. package/dist/Components/{AppSidebar.js.LICENSE.txt → NcAppSidebar.js.LICENSE.txt} +0 -0
  73. package/dist/Components/NcAppSidebar.js.map +1 -0
  74. package/dist/Components/NcAppSidebarTab.js +2 -0
  75. package/dist/Components/NcAppSidebarTab.js.map +1 -0
  76. package/dist/Components/NcAvatar.js +3 -0
  77. package/dist/Components/{Avatar.js.LICENSE.txt → NcAvatar.js.LICENSE.txt} +0 -0
  78. package/dist/Components/NcAvatar.js.map +1 -0
  79. package/dist/Components/NcBreadcrumb.js +3 -0
  80. package/dist/Components/{Breadcrumb.js.LICENSE.txt → NcBreadcrumb.js.LICENSE.txt} +0 -0
  81. package/dist/Components/NcBreadcrumb.js.map +1 -0
  82. package/dist/Components/NcBreadcrumbs.js +3 -0
  83. package/dist/Components/NcBreadcrumbs.js.LICENSE.txt +66 -0
  84. package/dist/Components/NcBreadcrumbs.js.map +1 -0
  85. package/dist/Components/NcButton.js +2 -0
  86. package/dist/Components/NcButton.js.map +1 -0
  87. package/dist/Components/NcCheckboxRadioSwitch.js +3 -0
  88. package/dist/Components/{CheckboxRadioSwitch.js.LICENSE.txt → NcCheckboxRadioSwitch.js.LICENSE.txt} +0 -0
  89. package/dist/Components/NcCheckboxRadioSwitch.js.map +1 -0
  90. package/dist/Components/NcColorPicker.js +3 -0
  91. package/dist/Components/{ColorPicker.js.LICENSE.txt → NcColorPicker.js.LICENSE.txt} +0 -0
  92. package/dist/Components/NcColorPicker.js.map +1 -0
  93. package/dist/Components/NcContent.js +2 -0
  94. package/dist/Components/NcContent.js.map +1 -0
  95. package/dist/Components/NcCounterBubble.js +2 -0
  96. package/dist/Components/NcCounterBubble.js.map +1 -0
  97. package/dist/Components/NcDashboardWidget.js +3 -0
  98. package/dist/Components/{DashboardWidget.js.LICENSE.txt → NcDashboardWidget.js.LICENSE.txt} +0 -0
  99. package/dist/Components/NcDashboardWidget.js.map +1 -0
  100. package/dist/Components/NcDashboardWidgetItem.js +3 -0
  101. package/dist/Components/{DashboardWidgetItem.js.LICENSE.txt → NcDashboardWidgetItem.js.LICENSE.txt} +0 -0
  102. package/dist/Components/NcDashboardWidgetItem.js.map +1 -0
  103. package/dist/Components/NcDatetimePicker.js +3 -0
  104. package/dist/Components/{DatetimePicker.js.LICENSE.txt → NcDatetimePicker.js.LICENSE.txt} +0 -0
  105. package/dist/Components/NcDatetimePicker.js.map +1 -0
  106. package/dist/Components/NcEmojiPicker.js +2 -0
  107. package/dist/Components/NcEmojiPicker.js.map +1 -0
  108. package/dist/Components/NcEmptyContent.js +2 -0
  109. package/dist/Components/NcEmptyContent.js.map +1 -0
  110. package/dist/Components/NcHighlight.js +3 -0
  111. package/dist/Components/{Highlight.js.LICENSE.txt → NcHighlight.js.LICENSE.txt} +0 -0
  112. package/dist/Components/NcHighlight.js.map +1 -0
  113. package/dist/Components/NcInputField.js +2 -0
  114. package/dist/Components/NcInputField.js.map +1 -0
  115. package/dist/Components/NcListItem.js +3 -0
  116. package/dist/Components/{ListItem.js.LICENSE.txt → NcListItem.js.LICENSE.txt} +0 -0
  117. package/dist/Components/NcListItem.js.map +1 -0
  118. package/dist/Components/NcListItemIcon.js +3 -0
  119. package/dist/Components/{ListItemIcon.js.LICENSE.txt → NcListItemIcon.js.LICENSE.txt} +0 -0
  120. package/dist/Components/NcListItemIcon.js.map +1 -0
  121. package/dist/Components/NcLoadingIcon.js +2 -0
  122. package/dist/Components/NcLoadingIcon.js.map +1 -0
  123. package/dist/Components/NcModal.js +3 -0
  124. package/dist/Components/NcModal.js.LICENSE.txt +66 -0
  125. package/dist/Components/NcModal.js.map +1 -0
  126. package/dist/Components/NcMultiselect.js +3 -0
  127. package/dist/Components/{Multiselect.js.LICENSE.txt → NcMultiselect.js.LICENSE.txt} +0 -0
  128. package/dist/Components/NcMultiselect.js.map +1 -0
  129. package/dist/Components/NcMultiselectTags.js +3 -0
  130. package/dist/Components/{MultiselectTags.js.LICENSE.txt → NcMultiselectTags.js.LICENSE.txt} +0 -0
  131. package/dist/Components/NcMultiselectTags.js.map +1 -0
  132. package/dist/Components/NcPopover.js +2 -0
  133. package/dist/Components/NcPopover.js.map +1 -0
  134. package/dist/Components/NcPopoverMenu.js +2 -0
  135. package/dist/Components/NcPopoverMenu.js.map +1 -0
  136. package/dist/Components/NcProgressBar.js +2 -0
  137. package/dist/Components/NcProgressBar.js.map +1 -0
  138. package/dist/Components/NcRichContenteditable.js +3 -0
  139. package/dist/Components/NcRichContenteditable.js.LICENSE.txt +22 -0
  140. package/dist/Components/NcRichContenteditable.js.map +1 -0
  141. package/dist/Components/NcSettingsInputText.js +2 -0
  142. package/dist/Components/NcSettingsInputText.js.map +1 -0
  143. package/dist/Components/NcSettingsSection.js +2 -0
  144. package/dist/Components/NcSettingsSection.js.map +1 -0
  145. package/dist/Components/NcSettingsSelectGroup.js +3 -0
  146. package/dist/Components/{SettingsSelectGroup.js.LICENSE.txt → NcSettingsSelectGroup.js.LICENSE.txt} +0 -0
  147. package/dist/Components/NcSettingsSelectGroup.js.map +1 -0
  148. package/dist/Components/NcTextField.js +3 -0
  149. package/dist/Components/NcTextField.js.LICENSE.txt +21 -0
  150. package/dist/Components/NcTextField.js.map +1 -0
  151. package/dist/Components/NcTimezonePicker.js +3 -0
  152. package/dist/Components/{TimezonePicker.js.LICENSE.txt → NcTimezonePicker.js.LICENSE.txt} +0 -0
  153. package/dist/Components/NcTimezonePicker.js.map +1 -0
  154. package/dist/Components/NcUserBubble.js +3 -0
  155. package/dist/Components/{UserBubble.js.LICENSE.txt → NcUserBubble.js.LICENSE.txt} +0 -0
  156. package/dist/Components/NcUserBubble.js.map +1 -0
  157. package/dist/Components/NcVNodes.js +2 -0
  158. package/dist/Components/NcVNodes.js.map +1 -0
  159. package/dist/Directives/Tooltip.js +1 -1
  160. package/dist/Directives/Tooltip.js.map +1 -1
  161. package/dist/Mixins/richEditor.js +1 -1
  162. package/dist/Mixins/richEditor.js.map +1 -1
  163. package/dist/ncvuecomponents.js +1 -1
  164. package/dist/ncvuecomponents.js.LICENSE.txt +0 -22
  165. package/dist/ncvuecomponents.js.map +1 -1
  166. package/package.json +48 -51
  167. package/dist/Components/ActionButton.js +0 -3
  168. package/dist/Components/ActionButton.js.map +0 -1
  169. package/dist/Components/ActionCaption.js +0 -2
  170. package/dist/Components/ActionCaption.js.map +0 -1
  171. package/dist/Components/ActionCheckbox.js +0 -3
  172. package/dist/Components/ActionCheckbox.js.map +0 -1
  173. package/dist/Components/ActionInput.js +0 -3
  174. package/dist/Components/ActionInput.js.map +0 -1
  175. package/dist/Components/ActionLink.js +0 -3
  176. package/dist/Components/ActionLink.js.map +0 -1
  177. package/dist/Components/ActionRadio.js +0 -3
  178. package/dist/Components/ActionRadio.js.map +0 -1
  179. package/dist/Components/ActionRouter.js +0 -3
  180. package/dist/Components/ActionRouter.js.map +0 -1
  181. package/dist/Components/ActionSeparator.js +0 -2
  182. package/dist/Components/ActionSeparator.js.map +0 -1
  183. package/dist/Components/ActionText.js +0 -3
  184. package/dist/Components/ActionText.js.map +0 -1
  185. package/dist/Components/ActionTextEditable.js +0 -3
  186. package/dist/Components/ActionTextEditable.js.map +0 -1
  187. package/dist/Components/Actions.js +0 -3
  188. package/dist/Components/Actions.js.map +0 -1
  189. package/dist/Components/AppContent.js +0 -3
  190. package/dist/Components/AppContent.js.LICENSE.txt +0 -44
  191. package/dist/Components/AppContent.js.map +0 -1
  192. package/dist/Components/AppContentDetails.js +0 -2
  193. package/dist/Components/AppContentDetails.js.map +0 -1
  194. package/dist/Components/AppContentList.js +0 -2
  195. package/dist/Components/AppContentList.js.map +0 -1
  196. package/dist/Components/AppNavigation.js +0 -3
  197. package/dist/Components/AppNavigation.js.LICENSE.txt +0 -44
  198. package/dist/Components/AppNavigation.js.map +0 -1
  199. package/dist/Components/AppNavigationCaption.js +0 -3
  200. package/dist/Components/AppNavigationCaption.js.map +0 -1
  201. package/dist/Components/AppNavigationCounter.js +0 -2
  202. package/dist/Components/AppNavigationCounter.js.map +0 -1
  203. package/dist/Components/AppNavigationIconBullet.js +0 -2
  204. package/dist/Components/AppNavigationIconBullet.js.map +0 -1
  205. package/dist/Components/AppNavigationItem.js +0 -3
  206. package/dist/Components/AppNavigationItem.js.LICENSE.txt +0 -88
  207. package/dist/Components/AppNavigationItem.js.map +0 -1
  208. package/dist/Components/AppNavigationNew.js +0 -3
  209. package/dist/Components/AppNavigationNew.js.LICENSE.txt +0 -21
  210. package/dist/Components/AppNavigationNew.js.map +0 -1
  211. package/dist/Components/AppNavigationNewItem.js +0 -3
  212. package/dist/Components/AppNavigationNewItem.js.LICENSE.txt +0 -21
  213. package/dist/Components/AppNavigationNewItem.js.map +0 -1
  214. package/dist/Components/AppNavigationSettings.js +0 -3
  215. package/dist/Components/AppNavigationSettings.js.map +0 -1
  216. package/dist/Components/AppNavigationSpacer.js +0 -2
  217. package/dist/Components/AppNavigationSpacer.js.map +0 -1
  218. package/dist/Components/AppNavigationToggle.js +0 -3
  219. package/dist/Components/AppNavigationToggle.js.LICENSE.txt +0 -44
  220. package/dist/Components/AppNavigationToggle.js.map +0 -1
  221. package/dist/Components/AppSettingsDialog.js +0 -3
  222. package/dist/Components/AppSettingsDialog.js.LICENSE.txt +0 -88
  223. package/dist/Components/AppSettingsDialog.js.map +0 -1
  224. package/dist/Components/AppSettingsSection.js +0 -2
  225. package/dist/Components/AppSettingsSection.js.map +0 -1
  226. package/dist/Components/AppSidebar.js +0 -3
  227. package/dist/Components/AppSidebar.js.map +0 -1
  228. package/dist/Components/AppSidebarTab.js +0 -2
  229. package/dist/Components/AppSidebarTab.js.map +0 -1
  230. package/dist/Components/Avatar.js +0 -3
  231. package/dist/Components/Avatar.js.map +0 -1
  232. package/dist/Components/Breadcrumb.js +0 -3
  233. package/dist/Components/Breadcrumb.js.map +0 -1
  234. package/dist/Components/Breadcrumbs.js +0 -3
  235. package/dist/Components/Breadcrumbs.js.map +0 -1
  236. package/dist/Components/Button.js +0 -3
  237. package/dist/Components/Button.js.LICENSE.txt +0 -21
  238. package/dist/Components/Button.js.map +0 -1
  239. package/dist/Components/CheckboxRadioSwitch.js +0 -3
  240. package/dist/Components/CheckboxRadioSwitch.js.map +0 -1
  241. package/dist/Components/ColorPicker.js +0 -3
  242. package/dist/Components/ColorPicker.js.map +0 -1
  243. package/dist/Components/Content.js +0 -2
  244. package/dist/Components/Content.js.map +0 -1
  245. package/dist/Components/CounterBubble.js +0 -2
  246. package/dist/Components/CounterBubble.js.map +0 -1
  247. package/dist/Components/DashboardWidget.js +0 -3
  248. package/dist/Components/DashboardWidget.js.map +0 -1
  249. package/dist/Components/DashboardWidgetItem.js +0 -3
  250. package/dist/Components/DashboardWidgetItem.js.map +0 -1
  251. package/dist/Components/DatetimePicker.js +0 -3
  252. package/dist/Components/DatetimePicker.js.map +0 -1
  253. package/dist/Components/EmojiPicker.js +0 -2
  254. package/dist/Components/EmojiPicker.js.map +0 -1
  255. package/dist/Components/EmptyContent.js +0 -2
  256. package/dist/Components/EmptyContent.js.map +0 -1
  257. package/dist/Components/Highlight.js +0 -3
  258. package/dist/Components/Highlight.js.map +0 -1
  259. package/dist/Components/ListItem.js +0 -3
  260. package/dist/Components/ListItem.js.map +0 -1
  261. package/dist/Components/ListItemIcon.js +0 -3
  262. package/dist/Components/ListItemIcon.js.map +0 -1
  263. package/dist/Components/LoadingIcon.js +0 -2
  264. package/dist/Components/LoadingIcon.js.map +0 -1
  265. package/dist/Components/Modal.js +0 -3
  266. package/dist/Components/Modal.js.LICENSE.txt +0 -88
  267. package/dist/Components/Modal.js.map +0 -1
  268. package/dist/Components/Multiselect.js +0 -3
  269. package/dist/Components/Multiselect.js.map +0 -1
  270. package/dist/Components/MultiselectTags.js +0 -3
  271. package/dist/Components/MultiselectTags.js.map +0 -1
  272. package/dist/Components/Popover.js +0 -2
  273. package/dist/Components/Popover.js.map +0 -1
  274. package/dist/Components/PopoverMenu.js +0 -2
  275. package/dist/Components/PopoverMenu.js.map +0 -1
  276. package/dist/Components/ProgressBar.js +0 -2
  277. package/dist/Components/ProgressBar.js.map +0 -1
  278. package/dist/Components/RichContenteditable.js +0 -2
  279. package/dist/Components/RichContenteditable.js.map +0 -1
  280. package/dist/Components/SettingsInputText.js +0 -2
  281. package/dist/Components/SettingsInputText.js.map +0 -1
  282. package/dist/Components/SettingsSection.js +0 -2
  283. package/dist/Components/SettingsSection.js.map +0 -1
  284. package/dist/Components/SettingsSelectGroup.js +0 -3
  285. package/dist/Components/SettingsSelectGroup.js.map +0 -1
  286. package/dist/Components/TimezonePicker.js +0 -3
  287. package/dist/Components/TimezonePicker.js.map +0 -1
  288. package/dist/Components/UserBubble.js +0 -3
  289. package/dist/Components/UserBubble.js.map +0 -1
  290. package/dist/Components/VNodes.js +0 -2
  291. package/dist/Components/VNodes.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Components/NcDashboardWidget.js","mappings":"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CA,gBApJA,SAoJA,GACA,gBACA,mDACA,oBAEA,kBAEA,uBACA,mCAEA,kBACA,CACA,EACA,iBAjKA,SAiKA,GACA,cACA,uBACA,kBACA,mBAEA,EACA,gBAxKA,SAwKA,GACA,cACA,uBACA,6DACA,mBAEA,EACA,eA/KA,SA+KA,GACA,IACA,mBACA,oBAEA,EACA,QArLA,SAqLA,GACA,qBACA,EACA,OAxLA,SAwLA,GACA,oBACA,GASA,OA9VA,SA8VA,cAMA,oCACA,4FAMA,qCAOA,GANA,4CACA,gFACA,MAIA,cAUA,8DACA,+PACA,8BACA,wGAEA,oBACA,CACA,OACA,kCACA,SAFA,UAEA,cAFA,aAEA,cACA,SAHA,UAGA,cAHA,aAGA,SAEA,OACA,8PAEA,SAEA,wCACA,iIACA,SAJA,UAIA,0BAJA,aAIA,aAEA,aACA,eACA,uIACA,WACA,WAIA,MACA,gBACA,iBAGA,IACA,kBACA,GACA,IAEA,KAIA,CACA,gCACA,GAGA,EAQA,oBACA,uDACA,cACA,yCACA,oBACA,OACA,YAIA,qBACA,CACA,cACA,OACA,QACA,gBACA,eACA,sBACA,6BACA,sBACA,wCAKA,OACA,QACA,gBACA,eACA,sBACA,6BACA,sBACA,wCAEA,IACA,gBACA,sBACA,mBAGA,CACA,cACA,gCACA,OAEA,wBACA,UAEA,oCACA,qBAEA,eACA,iBACA,OACA,uBACA,yBACA,yCACA,qCAEA,IACA,gBACA,gBAEA,CACA,gCACA,cAEA,SACA,OACA,eAEA,OACA,eAEA,IACA,oBACA,gCAEA,YACA,CACA,QACA,OACA,cACA,cACA,cAEA,CACA,OAKA,EAMA,+CACA,eAMA,8BACA,6BAEA,gDACA,eACA,CACA,OACA,iBAHA,YAQA,UARA,CAUA,WACA,QACA,CACA,OACA,cACA,CACA,mCAIA,CACA,OAEA,OAEA,CAKA,eACA,CACA,OACA,cACA,CACA,mCAIA,CACA,MArNA,CAuNA,GC9/BgL,+HCW5KN,EAAU,CAAC,EAEfA,EAAQC,kBAAoB,IAC5BD,EAAQE,cAAgB,IAElBF,EAAQG,OAAS,SAAc,KAAM,QAE3CH,EAAQI,OAAS,IACjBJ,EAAQK,mBAAqB,IAEhB,IAAI,IAASL,GAKJ,KAAW,YAAiB,WALlD,cCVI,EAAU,CAAC,EAEf,EAAQC,kBAAoB,IAC5B,EAAQC,cAAgB,IAElB,EAAQC,OAAS,SAAc,KAAM,QAE3C,EAAQC,OAAS,IACjB,EAAQC,mBAAqB,IAEhB,IAAI,IAAS,GAKJ,KAAW,YAAiB,WALlD,iCCZIC,GAAY,OACd,OAVE0B,OAAQC,GAaV,EACA,KACA,WACA,MAMoB,mBAAX,KAAuB,IAAO3B,GAEzC,ICDA,EDCeA,EAAiB,iFExBhC,wdCqIA,sDAKA,SAAS4B,EAAiBC,GAC1B,sCACA,yBACA,WAEA,IACA,CAMA,SAASC,EAAiBD,EAAQE,GAClC,GACA,iCAEA,CAEA,OACA,gBAEA,YACA,yBACA,mBAEA,YACA,mBACA,wBACA,oBACA,yBAEA,cACA,OAKA,KACA,YACA,gBAKA,WACA,YACA,gBAMA,MACA,YACA,gBAKA,gBACA,aACA,YAKA,uBACA,aACA,YAOA,qBACA,YACA,gBAKA,SACA,aACA,YAQA,aACA,YACA,gBAKA,MACA,YACA,YAKA,kBACA,aACA,YAKA,gBACA,aACA,YAKA,aACA,aACA,YAQA,gBACA,YACA,cAOA,UACA,aACA,YAOA,cACA,YACA,kBAMA,eACA,YACA,gBAGA,WACA,YACA,eAGA,KApJA,WAqJA,OACA,qBACA,wBACA,oBACA,kBACA,gBACA,uBACA,uBACA,yBAEA,EACA,UACA,gBADA,WAEA,6BACA,eAGA,iEACA,uHAEA,6EACA,EAEA,qBAZA,WAaA,4BACA,gBACA,wDACA,EACA,2BAjBA,WAkBA,4BACA,4BACA,gBACA,gCACA,oBACA,EACA,kBAxBA,WAyBA,iCACA,iBAEA,mBACA,UAEA,EACA,EACA,cAjCA,WAkCA,yBACA,EACA,qBApCA,WAqCA,gCACA,EACA,aAvCA,WAwCA,wBACA,EACA,QA1CA,WA0CA,MACA,0BAGA,kBACA,qBAEA,2GACA,EACA,sBAnDA,WAoDA,8BACA,qBACA,EACA,YAvDA,WAwDA,OACA,wBACA,0BACA,yCAGA,8CACA,4CACA,kDACA,CACA,QACA,EACA,QApEA,WAqEA,6BAGA,oBACA,oBAGA,iBACA,EACA,SA9EA,WA+EA,MACA,+BACA,6BACA,iBACA,OACA,OAEA,0CACA,QACA,sDAGA,CACA,sBACA,EACA,KA9FA,WA+FA,IAWA,EACA,EACA,EAbA,4CACA,OACA,iBACA,YACA,iBAEA,IAYA,4EACA,EACA,SACA,kHAVA,EAUA,qBATA,6BACA,8BACA,iBACA,aAMA,iBACA,0CACA,UAGA,CACA,GAGA,OACA,IADA,WAEA,yBACA,oBACA,EACA,KALA,WAMA,yBACA,qBACA,oBACA,GAGA,QAzSA,WA0SA,qBACA,iDACA,0BAGA,2DACA,6DACA,uDACA,uDALA,iCAOA,0EAEA,EAEA,cAxTA,WAyTA,iDACA,2EAEA,EAEA,SACA,uBADA,WAEA,2DACA,UACA,YAEA,EACA,uBAPA,WASA,uBACA,EACA,wBAXA,SAWA,GACA,uBACA,iBACA,gBACA,YACA,mBAGA,EAEA,WArBA,WAqBA,6IACA,UADA,oDAIA,wBAJA,gCAKA,sBALA,OAOA,iDAPA,4CAQA,EACA,UA9BA,WA+BA,6BACA,EACA,kBAjCA,WAiCA,2JACA,yBADA,SAGA,6BAHA,SAIA,uFAJA,gBAIA,EAJA,EAIA,KACA,4EALA,kDAOA,2BAPA,QASA,yBACA,kBAVA,2DAWA,EAKA,cAjDA,WAqDA,GAHA,wBAGA,wDAGA,OAFA,4BACA,0BAKA,qBACA,uCAIA,kBACA,4CACA,GACA,QACA,8CACA,WAEA,4BACA,MACA,6CACA,0BACA,CACA,EASA,mBAtFA,SAsFA,WACA,0BACA,eACA,iCAGA,wBACA,EACA,CACA,OACA,SAQA,OAJA,sGACA,uCAGA,CACA,EAQA,mBAjHA,SAiHA,4EAEA,eACA,2CASA,OARA,uBACA,uBACA,IACA,iCAEA,QACA,2BAKA,gBACA,oBACA,oBACA,IACA,wBAEA,oBAEA,YACA,EACA,qBACA,sCAEA,uBACA,0BAEA,sBACA,oBACA,YACA,EAEA,IACA,YAEA,OACA,ICnnB+K,+HCW3KrC,EAAU,CAAC,EAEfA,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","sources":["webpack://NextcloudVue/webpack/universalModuleDefinition","webpack://NextcloudVue/./src/components/NcActionButton/NcActionButton.vue","webpack://NextcloudVue/./src/components/NcActionButton/NcActionButton.vue?32cb","webpack://NextcloudVue/src/components/NcActionButton/NcActionButton.vue","webpack://NextcloudVue/./src/components/NcActionButton/NcActionButton.vue?8fc1","webpack://NextcloudVue/./src/components/NcActionButton/NcActionButton.vue?1828","webpack://NextcloudVue/./src/components/NcActionButton/index.js","webpack://NextcloudVue/src/components/NcActions/NcActions.vue","webpack://NextcloudVue/./src/components/NcActions/NcActions.vue?41bd","webpack://NextcloudVue/./src/components/NcActions/NcActions.vue?d77b","webpack://NextcloudVue/./src/components/NcActions/NcActions.vue?3438","webpack://NextcloudVue/./src/components/NcActions/NcActions.vue","webpack://NextcloudVue/./src/components/NcActions/index.js","webpack://NextcloudVue/./src/components/NcAvatar/NcAvatar.vue","webpack://NextcloudVue/src/components/NcAvatar/NcAvatar.vue","webpack://NextcloudVue/./src/components/NcAvatar/NcAvatar.vue?47e4","webpack://NextcloudVue/./src/components/NcAvatar/NcAvatar.vue?a062","webpack://NextcloudVue/./src/components/NcAvatar/NcAvatar.vue?4dd7","webpack://NextcloudVue/./src/components/NcAvatar/index.js","webpack://NextcloudVue/src/components/NcButton/NcButton.vue","webpack://NextcloudVue/./src/components/NcButton/NcButton.vue?63f9","webpack://NextcloudVue/./src/components/NcButton/NcButton.vue?46a9","webpack://NextcloudVue/./src/components/NcButton/NcButton.vue?baf6","webpack://NextcloudVue/./src/components/NcButton/NcButton.vue","webpack://NextcloudVue/./src/components/NcButton/index.js","webpack://NextcloudVue/./src/components/NcDashboardWidgetItem/NcDashboardWidgetItem.vue","webpack://NextcloudVue/./src/components/NcDashboardWidgetItem/NcDashboardWidgetItem.vue?8fc9","webpack://NextcloudVue/src/components/NcDashboardWidgetItem/NcDashboardWidgetItem.vue","webpack://NextcloudVue/./src/components/NcDashboardWidgetItem/NcDashboardWidgetItem.vue?3ea7","webpack://NextcloudVue/./src/components/NcDashboardWidgetItem/NcDashboardWidgetItem.vue?091c","webpack://NextcloudVue/./src/components/NcDashboardWidgetItem/index.js","webpack://NextcloudVue/./src/components/NcEmptyContent/NcEmptyContent.vue","webpack://NextcloudVue/./src/components/NcEmptyContent/NcEmptyContent.vue?db6e","webpack://NextcloudVue/./src/components/NcEmptyContent/NcEmptyContent.vue?a4cb","webpack://NextcloudVue/src/components/NcEmptyContent/NcEmptyContent.vue","webpack://NextcloudVue/./src/components/NcEmptyContent/index.js","webpack://NextcloudVue/./src/components/NcLoadingIcon/NcLoadingIcon.vue","webpack://NextcloudVue/./src/components/NcLoadingIcon/NcLoadingIcon.vue?3337","webpack://NextcloudVue/src/components/NcLoadingIcon/NcLoadingIcon.vue","webpack://NextcloudVue/./src/components/NcLoadingIcon/NcLoadingIcon.vue?4b7b","webpack://NextcloudVue/./src/components/NcLoadingIcon/NcLoadingIcon.vue?f7ec","webpack://NextcloudVue/./src/components/NcLoadingIcon/index.js","webpack://NextcloudVue/./src/components/NcPopover/NcPopover.vue","webpack://NextcloudVue/src/components/NcPopover/NcPopover.vue","webpack://NextcloudVue/./src/components/NcPopover/NcPopover.vue?4453","webpack://NextcloudVue/./src/components/NcPopover/NcPopover.vue?af39","webpack://NextcloudVue/./src/components/NcPopover/NcPopover.vue?3a8f","webpack://NextcloudVue/./src/components/NcPopover/index.js","webpack://NextcloudVue/./src/components/NcPopoverMenu/NcPopoverMenu.vue","webpack://NextcloudVue/./src/components/NcPopoverMenu/NcPopoverMenuItem.vue?36ce","webpack://NextcloudVue/src/components/NcPopoverMenu/NcPopoverMenuItem.vue","webpack://NextcloudVue/./src/components/NcPopoverMenu/NcPopoverMenuItem.vue?bfb3","webpack://NextcloudVue/./src/components/NcPopoverMenu/NcPopoverMenuItem.vue?7ae5","webpack://NextcloudVue/./src/components/NcPopoverMenu/NcPopoverMenuItem.vue?8b27","webpack://NextcloudVue/./src/components/NcPopoverMenu/NcPopoverMenuItem.vue","webpack://NextcloudVue/./src/components/NcPopoverMenu/NcPopoverMenu.vue?44fc","webpack://NextcloudVue/src/components/NcPopoverMenu/NcPopoverMenu.vue","webpack://NextcloudVue/./src/components/NcPopoverMenu/NcPopoverMenu.vue?52bc","webpack://NextcloudVue/./src/components/NcPopoverMenu/NcPopoverMenu.vue?1cf5","webpack://NextcloudVue/./src/components/NcPopoverMenu/index.js","webpack://NextcloudVue/./src/directives/Tooltip/index.scss?db22","webpack://NextcloudVue/./src/directives/Tooltip/index.js","webpack://NextcloudVue/external commonjs \"md5\"","webpack://NextcloudVue/./src/functions/usernameToColor/index.js","webpack://NextcloudVue/./src/functions/usernameToColor/usernameToColor.js","webpack://NextcloudVue/./src/l10n.js","webpack://NextcloudVue/./src/mixins/actionGlobal.js","webpack://NextcloudVue/./src/mixins/actionText.js","webpack://NextcloudVue/./src/utils/GetParent.js","webpack://NextcloudVue/external commonjs \"@nextcloud/capabilities\"","webpack://NextcloudVue/./src/mixins/userStatus.js","webpack://NextcloudVue/./src/utils/IsMobileState.js","webpack://NextcloudVue/./src/components/NcRichContenteditable/NcMentionBubble.vue","webpack://NextcloudVue/./src/components/NcRichContenteditable/NcMentionBubble.vue?e222","webpack://NextcloudVue/src/components/NcRichContenteditable/NcMentionBubble.vue","webpack://NextcloudVue/./src/components/NcRichContenteditable/NcMentionBubble.vue?783b","webpack://NextcloudVue/./src/components/NcRichContenteditable/NcMentionBubble.vue?c7fd","webpack://NextcloudVue/external commonjs \"escape-html\"","webpack://NextcloudVue/external commonjs \"striptags\"","webpack://NextcloudVue/./src/mixins/richEditor/index.js","webpack://NextcloudVue/./src/utils/GenColors.js","webpack://NextcloudVue/./src/utils/GenRandomId.js","webpack://NextcloudVue/external commonjs \"linkify-string\"","webpack://NextcloudVue/./src/utils/Linkify.js","webpack://NextcloudVue/./src/directives/Tooltip/index.scss","webpack://NextcloudVue/./src/components/NcActionButton/NcActionButton.vue?4f3f","webpack://NextcloudVue/./src/components/NcActions/NcActions.vue?9543","webpack://NextcloudVue/./src/components/NcActions/NcActions.vue?e91e","webpack://NextcloudVue/./src/components/NcAvatar/NcAvatar.vue?12f8","webpack://NextcloudVue/./src/components/NcButton/NcButton.vue?84ba","webpack://NextcloudVue/./src/components/NcDashboardWidget/NcDashboardWidget.vue?e6a0","webpack://NextcloudVue/./src/components/NcDashboardWidgetItem/NcDashboardWidgetItem.vue?24af","webpack://NextcloudVue/./src/components/NcEmptyContent/NcEmptyContent.vue?2602","webpack://NextcloudVue/./src/components/NcLoadingIcon/NcLoadingIcon.vue?c2c7","webpack://NextcloudVue/./src/components/NcPopover/NcPopover.vue?8086","webpack://NextcloudVue/./src/components/NcPopoverMenu/NcPopoverMenu.vue?1a14","webpack://NextcloudVue/./src/components/NcPopoverMenu/NcPopoverMenuItem.vue?5936","webpack://NextcloudVue/./src/components/NcRichContenteditable/NcMentionBubble.vue?558b","webpack://NextcloudVue/./src/components/NcPopoverMenu/NcPopoverMenuItem.vue?16bd","webpack://NextcloudVue/./node_modules/css-loader/dist/runtime/api.js","webpack://NextcloudVue/./node_modules/css-loader/dist/runtime/cssWithMappingToString.js","webpack://NextcloudVue/./node_modules/css-loader/dist/runtime/getUrl.js","webpack://NextcloudVue/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://NextcloudVue/./node_modules/style-loader/dist/runtime/insertBySelector.js","webpack://NextcloudVue/./node_modules/style-loader/dist/runtime/insertStyleElement.js","webpack://NextcloudVue/./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js","webpack://NextcloudVue/./node_modules/style-loader/dist/runtime/styleDomAPI.js","webpack://NextcloudVue/./node_modules/style-loader/dist/runtime/styleTagTransform.js","webpack://NextcloudVue/./src/assets/status-icons/user-status-away.svg","webpack://NextcloudVue/./src/assets/status-icons/user-status-dnd.svg","webpack://NextcloudVue/./src/assets/status-icons/user-status-online.svg","webpack://NextcloudVue/./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack://NextcloudVue/external commonjs \"@nextcloud/auth\"","webpack://NextcloudVue/external commonjs \"@nextcloud/axios\"","webpack://NextcloudVue/external commonjs \"@nextcloud/browser-storage\"","webpack://NextcloudVue/external commonjs \"@nextcloud/event-bus\"","webpack://NextcloudVue/external commonjs \"@nextcloud/l10n/dist/gettext.js\"","webpack://NextcloudVue/external commonjs \"@nextcloud/router\"","webpack://NextcloudVue/external commonjs \"floating-vue\"","webpack://NextcloudVue/external commonjs \"focus-trap\"","webpack://NextcloudVue/external commonjs \"v-click-outside\"","webpack://NextcloudVue/external commonjs \"vue\"","webpack://NextcloudVue/external commonjs \"vue-material-design-icons/Check.vue\"","webpack://NextcloudVue/external commonjs \"vue-material-design-icons/DotsHorizontal.vue\"","webpack://NextcloudVue/webpack/bootstrap","webpack://NextcloudVue/webpack/runtime/compat get default export","webpack://NextcloudVue/webpack/runtime/define property getters","webpack://NextcloudVue/webpack/runtime/hasOwnProperty shorthand","webpack://NextcloudVue/webpack/runtime/make namespace object","webpack://NextcloudVue/webpack/runtime/nonce","webpack://NextcloudVue/./src/components/NcDashboardWidget/NcDashboardWidget.vue","webpack://NextcloudVue/./src/components/NcDashboardWidget/NcDashboardWidget.vue?d347","webpack://NextcloudVue/src/components/NcDashboardWidget/NcDashboardWidget.vue","webpack://NextcloudVue/./src/components/NcDashboardWidget/NcDashboardWidget.vue?2db1","webpack://NextcloudVue/./src/components/NcDashboardWidget/NcDashboardWidget.vue?4660","webpack://NextcloudVue/./src/components/NcDashboardWidget/index.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(\"NextcloudVue\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"NextcloudVue\"] = factory();\n\telse\n\t\troot[\"NextcloudVue\"] = root[\"NextcloudVue\"] || {}, root[\"NextcloudVue\"][\"Components/NcDashboardWidget\"] = factory();\n})(self, function() {\nreturn ","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',{staticClass:\"action\",class:{ 'action--disabled': _vm.disabled },attrs:{\"role\":\"presentation\"}},[_c('button',{staticClass:\"action-button\",class:{ focusable: _vm.isFocusable },attrs:{\"aria-label\":_vm.ariaLabel,\"role\":\"menuitem\",\"type\":\"button\"},on:{\"click\":_vm.onClick}},[_vm._t(\"icon\",function(){return [_c('span',{staticClass:\"action-button__icon\",class:[_vm.isIconUrl ? 'action-button__icon--url' : _vm.icon],style:({ backgroundImage: _vm.isIconUrl ? `url(${_vm.icon})` : null })})]}),_vm._v(\" \"),(_vm.title)?_c('p',[_c('strong',{staticClass:\"action-button__title\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.title)+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('br'),_vm._v(\" \"),_c('span',{staticClass:\"action-button__longtext\",domProps:{\"textContent\":_vm._s(_vm.text)}})]):(_vm.isLongText)?_c('p',{staticClass:\"action-button__longtext\",domProps:{\"textContent\":_vm._s(_vm.text)}}):_c('span',{staticClass:\"action-button__text\"},[_vm._v(_vm._s(_vm.text))]),_vm._v(\" \"),(false)?_vm._t(\"default\"):_vm._e()],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NcActionButton.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!./NcActionButton.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n - @author Marco Ambrosini <marcoambrosini@icloud.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<docs>\nThis component is made to be used inside of the [NcActions](#NcActions) component slots.\n\n```vue\n\t<template>\n\t\t<div style=\"display: flex; align-items: center;\">\n\t\t\t<NcActions>\n\t\t\t\t<NcActionButton @click=\"showMessage('Delete')\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<Delete :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t\tDelete\n\t\t\t\t</NcActionButton>\n\t\t\t\t<NcActionButton :close-after-click=\"true\" @click=\"showMessage('Delete and close menu')\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<Delete :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t\tDelete and close\n\t\t\t\t</NcActionButton>\n\t\t\t\t<NcActionButton :close-after-click=\"true\" @click=\"focusInput\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<Plus :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t\tCreate\n\t\t\t\t</NcActionButton>\n\t\t\t\t<NcActionButton :disabled=\"true\" @click=\"showMessage('Disabled')\">\n\t\t\t\t\t<template #icon>\n\t\t\t\t\t\t<Delete :size=\"20\" />\n\t\t\t\t\t</template>\n\t\t\t\t\tDisabled button\n\t\t\t\t</NcActionButton>\n\t\t\t</NcActions>\n\t\t\t<input ref=\"input\" />\n\t\t</div>\n\t</template>\n\t<script>\n\timport Delete from 'vue-material-design-icons/Delete'\n\timport Plus from 'vue-material-design-icons/Plus'\n\n\texport default {\n\t\tcomponents: {\n\t\t\tDelete,\n\t\t\tPlus,\n\t\t},\n\t\tmethods: {\n\t\t\tshowMessage(msg) {\n\t\t\t\talert(msg)\n\t\t\t},\n\t\t\tfocusInput() {\n\t\t\t\tthis.$nextTick(() => this.$refs.input.focus())\n\t\t\t},\n\t\t},\n\t}\n\t</script>\n```\n\nIf you're using a long text you can specify a title\n\n```vue\n\t<template>\n\t\t<NcActions>\n\t\t\t<NcActionButton icon=\"icon-add\" @click=\"showMessage('Add')\">\n\t\t\t\tAdd new\n\t\t\t</NcActionButton>\n\t\t\t<NcActionButton title=\"Long button\" @click=\"showMessage('Delete')\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Delete :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\tThis button is associated with a very long text.\\nAnd with new lines too.\n\t\t\t</NcActionButton>\n\t\t</NcActions>\n\t</template>\n\t<script>\n\timport Delete from 'vue-material-design-icons/Delete'\n\n\texport default {\n\t\tcomponents: {\n\t\t\tDelete,\n\t\t},\n\t\tmethods: {\n\t\t\tshowMessage(msg) {\n\t\t\t\talert(msg)\n\t\t\t},\n\t\t},\n\t}\n\t</script>\n\n```\n\nAction icon attribute with a single action\n\n```vue\n\t<template>\n\t\t<NcActions>\n\t\t\t<NcActionButton icon=\"icon-add\" @click=\"showMessage('Add')\">\n\t\t\t\tAdd new\n\t\t\t</NcActionButton>\n\t\t</NcActions>\n\t</template>\n\t<script>\n\texport default {\n\t\tmethods: {\n\t\t\tshowMessage(msg) {\n\t\t\t\talert(msg)\n\t\t\t},\n\t\t},\n\t}\n\t</script>\n\n```\n\nYou can also use a custom icon, for example from the vue-material-design-icons library:\n\n```vue\n<template>\n\t<NcActions>\n\t\t<NcActionButton>\n\t\t\t<template #icon>\n\t\t\t\t<HandBackLeft :size=\"20\" />\n\t\t\t</template>\n\t\t\tRaise left hand\n\t\t</NcActionButton>\n\t\t<NcActionButton>\n\t\t\t<template #icon>\n\t\t\t\t<HandBackRight :size=\"20\" />\n\t\t\t</template>\n\t\t\tRaise right hand\n\t\t</NcActionButton>\n\t</NcActions>\n</template>\n<script>\nimport HandBackLeft from 'vue-material-design-icons/HandBackLeft'\nimport HandBackRight from 'vue-material-design-icons/HandBackRight'\n\nexport default {\n\tcomponents: {\n\t\tHandBackLeft,\n\t\tHandBackRight,\n\t},\n}\n</script>\n```\n</docs>\n\n<template>\n\t<li class=\"action\" role=\"presentation\" :class=\"{ 'action--disabled': disabled }\">\n\t\t<button class=\"action-button\"\n\t\t\t:class=\"{ focusable: isFocusable }\"\n\t\t\t:aria-label=\"ariaLabel\"\n\t\t\trole=\"menuitem\"\n\t\t\ttype=\"button\"\n\t\t\t@click=\"onClick\">\n\t\t\t<!-- @slot Manually provide icon -->\n\t\t\t<slot name=\"icon\">\n\t\t\t\t<span :class=\"[isIconUrl ? 'action-button__icon--url' : icon]\"\n\t\t\t\t\t:style=\"{ backgroundImage: isIconUrl ? `url(${icon})` : null }\"\n\t\t\t\t\tclass=\"action-button__icon\" />\n\t\t\t</slot>\n\n\t\t\t<!-- long text with title -->\n\t\t\t<p v-if=\"title\">\n\t\t\t\t<strong class=\"action-button__title\">\n\t\t\t\t\t{{ title }}\n\t\t\t\t</strong>\n\t\t\t\t<br>\n\t\t\t\t<!-- white space is shown on longtext, so we can't\n\t\t\t\t\tput {{ text }} on a new line for code readability -->\n\t\t\t\t<span class=\"action-button__longtext\" v-text=\"text\" />\n\t\t\t</p>\n\n\t\t\t<!-- long text only -->\n\t\t\t<!-- white space is shown on longtext, so we can't\n\t\t\t\tput {{ text }} on a new line for code readability -->\n\t\t\t<p v-else-if=\"isLongText\"\n\t\t\t\tclass=\"action-button__longtext\"\n\t\t\t\tv-text=\"text\" />\n\n\t\t\t<!-- default text display -->\n\t\t\t<span v-else class=\"action-button__text\">{{ text }}</span>\n\n\t\t\t<!-- fake slot to gather inner text -->\n\t\t\t<slot v-if=\"false\" />\n\t\t</button>\n\t</li>\n</template>\n\n<script>\nimport ActionTextMixin from '../../mixins/actionText.js'\n\n/**\n * Button component to be used in Actions\n */\nexport default {\n\tname: 'NcActionButton',\n\n\tmixins: [ActionTextMixin],\n\n\tprops: {\n\t\t/**\n\t\t * disabled state of the action button\n\t\t */\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tcomputed: {\n\t\t/**\n\t\t * determines if the action is focusable\n\t\t *\n\t\t * @return {boolean} is the action focusable ?\n\t\t */\n\t\tisFocusable() {\n\t\t\treturn !this.disabled\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n@import '../../assets/action';\n@include action-active;\n@include action--disabled;\n@include action-item('button');\n</style>\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NcActionButton.vue?vue&type=style&index=0&id=45a871d0&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NcActionButton.vue?vue&type=style&index=0&id=45a871d0&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./NcActionButton.vue?vue&type=template&id=45a871d0&scoped=true&\"\nimport script from \"./NcActionButton.vue?vue&type=script&lang=js&\"\nexport * from \"./NcActionButton.vue?vue&type=script&lang=js&\"\nimport style0 from \"./NcActionButton.vue?vue&type=style&index=0&id=45a871d0&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"45a871d0\",\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./NcActionButton.vue?vue&type=custom&index=0&blockType=docs\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport NcActionButton from './NcActionButton.vue'\n\nexport default NcActionButton\n","<!--\n - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n - @author Marco Ambrosini <marcoambrosini@icloud.com>\n - @author Raimund Schlüßler <raimund.schluessler@mailbox.org>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<!-- Accessibility guidelines:\nhttps://www.w3.org/TR/wai-aria-practices/examples/menu-button/menu-button-actions.html -->\n\n<docs>\n### Single action\n\n```\n<template>\n\t<NcActions>\n\t\t<NcActionButton @click=\"actionDelete\">\n\t\t\t<template #icon>\n\t\t\t\t<Delete :size=\"20\" />\n\t\t\t</template>\n\t\t\tDelete\n\t\t</NcActionButton>\n\t</NcActions>\n</template>\n<script>\nimport Delete from 'vue-material-design-icons/Delete'\n\nexport default {\n\tcomponents: {\n\t\tDelete,\n\t},\n\tmethods: {\n\t\tactionDelete() {\n\t\t\talert('Delete')\n\t\t},\n\t},\n}\n</script>\n```\n\n### Multiple actions\n\n```\n<template>\n\t<NcActions>\n\t\t<NcActionButton @click=\"showMessage('Edit')\">\n\t\t\t<template #icon>\n\t\t\t\t<Pencil :size=\"20\" />\n\t\t\t</template>\n\t\t\tEdit\n\t\t</NcActionButton>\n\t\t<NcActionButton @click=\"showMessage('Delete')\">\n\t\t\t<template #icon>\n\t\t\t\t<Delete :size=\"20\" />\n\t\t\t</template>\n\t\t\tDelete\n\t\t</NcActionButton>\n\t\t<NcActionLink href=\"https://nextcloud.com\">\n\t\t\t<template #icon>\n\t\t\t\t<OpenInNew :size=\"20\" />\n\t\t\t</template>\n\t\t\tLink\n\t\t</NcActionLink>\n\t</NcActions>\n</template>\n<script>\nimport Delete from 'vue-material-design-icons/Delete'\nimport OpenInNew from 'vue-material-design-icons/OpenInNew'\nimport Pencil from 'vue-material-design-icons/Pencil'\n\nexport default {\n\tcomponents: {\n\t\tDelete,\n\t\tOpenInNew,\n\t\tPencil,\n\t},\n\tmethods: {\n\t\tshowMessage(msg) {\n\t\t\talert(msg)\n\t\t},\n\t},\n}\n</script>\n```\n\n### Multiple actions with 2 items inline\n\n```\n<template>\n\t<NcActions :inline=\"2\">\n\t\t<NcActionButton @click=\"showMessage('Add')\">\n\t\t\t<template #icon>\n\t\t\t\t<Plus :size=\"20\" />\n\t\t\t</template>\n\t\t\tAdd\n\t\t</NcActionButton>\n\t\t<NcActionButton @click=\"showMessage('Edit')\">\n\t\t\t<template #icon>\n\t\t\t\t<Pencil :size=\"20\" />\n\t\t\t</template>\n\t\t\tEdit\n\t\t</NcActionButton>\n\t\t<NcActionButton @click=\"showMessage('Delete')\">\n\t\t\t<template #icon>\n\t\t\t\t<Delete :size=\"20\" />\n\t\t\t</template>\n\t\t\tDelete\n\t\t</NcActionButton>\n\t\t<NcActionLink href=\"https://nextcloud.com\">\n\t\t\t<template #icon>\n\t\t\t\t<OpenInNew :size=\"20\" />\n\t\t\t</template>\n\t\t\tLink\n\t\t</NcActionLink>\n\t</NcActions>\n</template>\n<script>\nimport Plus from 'vue-material-design-icons/Plus'\nimport Delete from 'vue-material-design-icons/Delete'\nimport OpenInNew from 'vue-material-design-icons/OpenInNew'\nimport Pencil from 'vue-material-design-icons/Pencil'\n\nexport default {\n\tcomponents: {\n\t\tDelete,\n\t\tOpenInNew,\n\t\tPencil,\n\t\tPlus,\n\t},\n\tmethods: {\n\t\tshowMessage(msg) {\n\t\t\talert(msg)\n\t\t},\n\t},\n}\n</script>\n```\n\n### Multiple actions with custom icon\n\n```\n<template>\n\t<NcActions>\n\t\t<template #icon>\n\t\t\t<Pencil :size=\"20\" />\n\t\t</template>\n\t\t<NcActionButton @click=\"showMessage('Edit')\">\n\t\t\t<template #icon>\n\t\t\t\t<Pencil :size=\"20\" />\n\t\t\t</template>\n\t\t\tEdit\n\t\t</NcActionButton>\n\t\t<NcActionButton @click=\"showMessage('Delete')\">\n\t\t\t<template #icon>\n\t\t\t\t<Delete :size=\"20\" />\n\t\t\t</template>\n\t\t\tDelete\n\t\t</NcActionButton>\n\t\t<NcActionLink href=\"https://nextcloud.com\">\n\t\t\t<template #icon>\n\t\t\t\t<OpenInNew :size=\"20\" />\n\t\t\t</template>\n\t\t\tLink\n\t\t</NcActionLink>\n\t</NcActions>\n</template>\n<script>\nimport Delete from 'vue-material-design-icons/Delete'\nimport OpenInNew from 'vue-material-design-icons/OpenInNew'\nimport Pencil from 'vue-material-design-icons/Pencil'\n\nexport default {\n\tcomponents: {\n\t\tDelete,\n\t\tOpenInNew,\n\t\tPencil,\n\t},\n\tmethods: {\n\t\tshowMessage(msg) {\n\t\t\talert(msg)\n\t\t},\n\t},\n}\n</script>\n```\n\n### With menu title\n\n```\n<template>\n\t<NcActions menu-title=\"Object management\">\n\t\t<template #icon>\n\t\t\t<Pencil :size=\"20\" />\n\t\t</template>\n\t\t<NcActionButton>\n\t\t\t<template #icon>\n\t\t\t\t<Pencil :size=\"20\" />\n\t\t\t</template>\n\t\t\tRename\n\t\t</NcActionButton>\n\t\t<NcActionButton>\n\t\t\t<template #icon>\n\t\t\t\t<Delete :size=\"20\" />\n\t\t\t</template>\n\t\t\tDelete\n\t\t</NcActionButton>\n\t\t<NcActionButton>\n\t\t\t<template #icon>\n\t\t\t\t<ArrowRight :size=\"20\" />\n\t\t\t</template>\n\t\t\tValidate\n\t\t</NcActionButton>\n\t\t<NcActionButton>\n\t\t\t<template #icon>\n\t\t\t\t<Download :size=\"20\" />\n\t\t\t</template>\n\t\t\tDownload\n\t\t</NcActionButton>\n\t</NcActions>\n</template>\n<script>\nimport ArrowRight from 'vue-material-design-icons/ArrowRight'\nimport Delete from 'vue-material-design-icons/Delete'\nimport Download from 'vue-material-design-icons/Download'\nimport Pencil from 'vue-material-design-icons/Pencil'\n\nexport default {\n\tcomponents: {\n\t\tArrowRight,\n\t\tDelete,\n\t\tDownload,\n\t\tPencil,\n\t},\n}\n</script>\n```\n\n### Various icons styles\n```\n<template>\n\t<NcActions :primary=\"true\">\n\t\t<NcActionButton>\n\t\t\t<template #icon>\n\t\t\t\t<Pencil :size=\"20\" />\n\t\t\t</template>\n\t\t\tEdit\n\t\t</NcActionButton>\n\t\t<NcActionButton>\n\t\t\t<template #icon>\n\t\t\t\t<Delete :size=\"20\" />\n\t\t\t</template>\n\t\t\tDelete\n\t\t</NcActionButton>\n\t</NcActions>\n</template>\n<script>\nimport Delete from 'vue-material-design-icons/Delete'\nimport Pencil from 'vue-material-design-icons/Pencil'\n\nexport default {\n\tcomponents: {\n\t\tDelete,\n\t\tPencil,\n\t},\n}\n</script>\n```\n\n```\n<template>\n\t<NcActions :primary=\"true\" menu-title=\"Object management\">\n\t\t<template #icon>\n\t\t\t<Plus :size=\"20\" />\n\t\t</template>\n\t\t<NcActionButton>\n\t\t\t<template #icon>\n\t\t\t\t<Pencil :size=\"20\" />\n\t\t\t</template>\n\t\t\tRename\n\t\t</NcActionButton>\n\t\t<NcActionButton>\n\t\t\t<template #icon>\n\t\t\t\t<Delete :size=\"20\" />\n\t\t\t</template>\n\t\t\tDelete\n\t\t</NcActionButton>\n\t\t<NcActionButton>\n\t\t\t<template #icon>\n\t\t\t\t<ArrowRight :size=\"20\" />\n\t\t\t</template>\n\t\t\tValidate\n\t\t</NcActionButton>\n\t\t<NcActionButton>\n\t\t\t<template #icon>\n\t\t\t\t<Download :size=\"20\" />\n\t\t\t</template>\n\t\t\tDownload\n\t\t</NcActionButton>\n\t</NcActions>\n</template>\n<script>\nimport ArrowRight from 'vue-material-design-icons/ArrowRight'\nimport Delete from 'vue-material-design-icons/Delete'\nimport Download from 'vue-material-design-icons/Download'\nimport Pencil from 'vue-material-design-icons/Pencil'\nimport Plus from 'vue-material-design-icons/Plus'\n\nexport default {\n\tcomponents: {\n\t\tArrowRight,\n\t\tDelete,\n\t\tDownload,\n\t\tPencil,\n\t\tPlus,\n\t},\n}\n</script>\n```\n\n### Custom icon slot\nTo be used with `vue-material-design-icons` only. For icon classes use the `default-icon` slot.\nIt can be used with one or multiple actions.\n```\n<template>\n\t<div style=\"display: flex;align-items: center;\">\n\t\t<NcButton @click=\"toggled = !toggled\">Toggle multiple action</NcButton>\n\t\t<NcActions>\n\t\t\t<template #icon>\n\t\t\t\t<DotsHorizontalCircleOutline :size=\"20\" />\n\t\t\t</template>\n\t\t\t<NcActionButton>\n\t\t\t\t<template #icon>\n\t\t\t\t\t<MicrophoneOff :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\tMute\n\t\t\t</NcActionButton>\n\t\t\t<NcActionButton v-if=\"toggled\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<Delete :size=\"20\" />\n\t\t\t\t</template>\n\t\t\t\tDelete\n\t\t\t</NcActionButton>\n\t\t</NcActions>\n\t</div>\n</template>\n<script>\nimport Delete from 'vue-material-design-icons/Delete'\nimport DotsHorizontalCircleOutline from 'vue-material-design-icons/DotsHorizontalCircleOutline'\nimport MicrophoneOff from 'vue-material-design-icons/MicrophoneOff'\n\nexport default {\n\tcomponents: {\n\t\tDelete,\n\t\tDotsHorizontalCircleOutline,\n\t\tMicrophoneOff,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\ttoggled: false\n\t\t}\n\t}\n}\n</script>\n```\n\n### Custom icon slot in child elements\n```\n<template>\n\t<NcActions :primary=\"true\">\n\t\t<NcActionButton>\n\t\t\t<template #icon>\n\t\t\t\t<Magnify :size=\"20\" />\n\t\t\t</template>\n\t\t\tSearch\n\t\t</NcActionButton>\n\t\t<NcActionButton>\n\t\t\t<template #icon>\n\t\t\t\t<Delete :size=\"20\" />\n\t\t\t</template>\n\t\t\tDelete\n\t\t</NcActionButton>\n\t</NcActions>\n</template>\n<script>\nimport Delete from 'vue-material-design-icons/Delete'\nimport Magnify from 'vue-material-design-icons/Magnify'\n\nexport default {\n\tcomponents: {\n\t\tDelete,\n\t\tMagnify,\n\t},\n}\n</script>\n```\n\n</docs>\n\n<script>\nimport NcButton from '../NcButton/index.js'\nimport NcPopover from '../NcPopover/index.js'\nimport Tooltip from '../../directives/Tooltip/index.js'\nimport GenRandomId from '../../utils/GenRandomId.js'\nimport { t } from '../../l10n.js'\n\nimport Vue from 'vue'\nimport DotsHorizontal from 'vue-material-design-icons/DotsHorizontal.vue'\n\nconst focusableSelector = '.focusable'\n\n/**\n * The Actions component can be used to display one ore more actions.\n * If only a single action is provided, it will be rendered as an inline icon.\n * For more, a menu indicator will be shown and a popovermenu containing the\n * actions will be opened on click.\n *\n * @since 0.10.0\n */\nexport default {\n\tname: 'NcActions',\n\n\tdirectives: {\n\t\ttooltip: Tooltip,\n\t},\n\n\tcomponents: {\n\t\tNcButton,\n\t\tDotsHorizontal,\n\t\tNcPopover,\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * Specify the open state of the popover menu\n\t\t */\n\t\topen: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Force the actions to display in a three dot menu\n\t\t */\n\t\tforceMenu: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Force the title to show for single actions\n\t\t */\n\t\tforceTitle: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Specify the menu title\n\t\t */\n\t\tmenuTitle: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Apply primary styling for this menu\n\t\t */\n\t\tprimary: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Specifies the button type used for trigger and single actions buttons\n\t\t * Accepted values: primary, secondary, tertiary, tertiary-no-background, tertiary-on-primary, error, warning, success. If left empty,\n\t\t * the default button style will be applied.\n\t\t */\n\t\ttype: {\n\t\t\ttype: String,\n\t\t\tvalidator(value) {\n\t\t\t\treturn ['primary', 'secondary', 'tertiary', 'tertiary-no-background', 'tertiary-on-primary', 'error', 'warning', 'success'].indexOf(value) !== -1\n\t\t\t},\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Icon to show for the toggle menu button\n\t\t * when more than one action is inside the actions component.\n\t\t * Only replace the default three-dot icon if really necessary.\n\t\t */\n\t\tdefaultIcon: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\t/**\n\t\t * Aria label for the actions menu\n\t\t */\n\t\tariaLabel: {\n\t\t\ttype: String,\n\t\t\tdefault: t('Actions'),\n\t\t},\n\n\t\t/**\n\t\t * Wanted direction of the menu\n\t\t */\n\t\tplacement: {\n\t\t\ttype: String,\n\t\t\tdefault: 'bottom',\n\t\t},\n\n\t\t/**\n\t\t * DOM element for the actions' popover boundaries\n\t\t */\n\t\tboundariesElement: {\n\t\t\ttype: Element,\n\t\t\tdefault: () => document.querySelector('body'),\n\t\t},\n\n\t\t/**\n\t\t * Selector for the actions' popover container\n\t\t */\n\t\tcontainer: {\n\t\t\ttype: String,\n\t\t\tdefault: 'body',\n\t\t},\n\n\t\t/**\n\t\t * Disabled state of the main button (single action or menu toggle)\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 * Display x items inline out of the dropdown menu\n\t\t * Will be ignored if `forceMenu` is set\n\t\t */\n\t\tinline: {\n\t\t\ttype: Number,\n\t\t\tdefault: 0,\n\t\t},\n\t},\n\n\temits: [\n\t\t'update:open',\n\t\t'open',\n\t\t'update:open',\n\t\t'close',\n\t\t'focus',\n\t\t'blur',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\topened: this.open,\n\t\t\tfocusIndex: 0,\n\t\t\trandomId: `menu-${GenRandomId()}`,\n\t\t}\n\t},\n\n\twatch: {\n\t\t// Watch parent prop\n\t\topen(state) {\n\t\t\tif (state === this.opened) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.opened = state\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Do we have exactly one Action and\n\t\t * is it allowed as a standalone element?\n\t\t *\n\t\t * @param {Array} action The action to check\n\t\t * @return {boolean}\n\t\t */\n\t\tisValidSingleAction(action) {\n\t\t\treturn ['NcActionButton', 'NcActionLink', 'NcActionRouter'].includes(action?.componentOptions?.tag)\n\t\t},\n\n\t\t// MENU STATE MANAGEMENT\n\t\topenMenu(e) {\n\t\t\tif (this.opened) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.opened = true\n\n\t\t\t/**\n\t\t\t * Event emitted when the popover menu open state is changed\n\t\t\t *\n\t\t\t * @type {boolean}\n\t\t\t */\n\t\t\tthis.$emit('update:open', true)\n\n\t\t\t/**\n\t\t\t * Event emitted when the popover menu is opened\n\t\t\t */\n\t\t\tthis.$emit('open')\n\t\t},\n\t\tcloseMenu(returnFocus = true) {\n\t\t\tif (!this.opened) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.opened = false\n\n\t\t\tthis.$refs.popover.clearFocusTrap({ returnFocus })\n\n\t\t\t/**\n\t\t\t * Event emitted when the popover menu open state is changed\n\t\t\t *\n\t\t\t * @type {boolean}\n\t\t\t */\n\t\t\tthis.$emit('update:open', false)\n\n\t\t\t/**\n\t\t\t * Event emitted when the popover menu is closed\n\t\t\t */\n\t\t\tthis.$emit('close')\n\n\t\t\t// close everything\n\t\t\tthis.opened = false\n\t\t\tthis.focusIndex = 0\n\n\t\t\t// focus back the menu button\n\t\t\tthis.$refs.menuButton.$el.focus()\n\t\t},\n\n\t\tonOpen(event) {\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.focusFirstAction(event)\n\t\t\t})\n\t\t},\n\n\t\t// MENU KEYS & FOCUS MANAGEMENT\n\t\t// focus nearest focusable item on mouse move\n\t\t// DO NOT change the focus if the target is already focused\n\t\t// this will prevent issues with input being unfocused\n\t\t// on mouse move\n\t\tonMouseFocusAction(event) {\n\t\t\tif (document.activeElement === event.target) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst menuItem = event.target.closest('li')\n\t\t\tif (menuItem) {\n\t\t\t\tconst focusableItem = menuItem.querySelector(focusableSelector)\n\t\t\t\tif (focusableItem) {\n\t\t\t\t\tconst focusList = this.$refs.menu.querySelectorAll(focusableSelector)\n\t\t\t\t\tconst focusIndex = [...focusList].indexOf(focusableItem)\n\t\t\t\t\tif (focusIndex > -1) {\n\t\t\t\t\t\tthis.focusIndex = focusIndex\n\t\t\t\t\t\tthis.focusAction()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Dispatches the keydown listener to different handlers\n\t\t *\n\t\t * @param {object} event The keydown event\n\t\t */\n\t\tonKeydown(event) {\n\t\t\t// Up or Shift+Tab\n\t\t\tif (event.keyCode === 38 || (event.keyCode === 9 && event.shiftKey)) {\n\t\t\t\tthis.focusPreviousAction(event)\n\t\t\t}\n\t\t\t// Down or Tab\n\t\t\tif (event.keyCode === 40 || (event.keyCode === 9 && !event.shiftKey)) {\n\t\t\t\tthis.focusNextAction(event)\n\t\t\t}\n\t\t\t// Page-Up\n\t\t\tif (event.keyCode === 33) {\n\t\t\t\tthis.focusFirstAction(event)\n\t\t\t}\n\t\t\t// Page-Down\n\t\t\tif (event.keyCode === 34) {\n\t\t\t\tthis.focusLastAction(event)\n\t\t\t}\n\t\t\t// Esc\n\t\t\tif (event.keyCode === 27) {\n\t\t\t\tthis.closeMenu()\n\t\t\t\tevent.preventDefault()\n\t\t\t}\n\t\t},\n\t\tremoveCurrentActive() {\n\t\t\tconst currentActiveElement = this.$refs.menu.querySelector('li.active')\n\t\t\tif (currentActiveElement) {\n\t\t\t\tcurrentActiveElement.classList.remove('active')\n\t\t\t}\n\t\t},\n\t\tfocusAction() {\n\t\t\t// TODO: have a global disabled state for non input elements\n\t\t\tconst focusElement = this.$refs.menu.querySelectorAll(focusableSelector)[this.focusIndex]\n\t\t\tif (focusElement) {\n\t\t\t\tthis.removeCurrentActive()\n\t\t\t\tconst liMenuParent = focusElement.closest('li.action')\n\t\t\t\tfocusElement.focus()\n\t\t\t\tif (liMenuParent) {\n\t\t\t\t\tliMenuParent.classList.add('active')\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tfocusPreviousAction(event) {\n\t\t\tif (this.opened) {\n\t\t\t\tif (this.focusIndex === 0) {\n\t\t\t\t\t// First element overflows to body-navigation (no preventDefault!) and closes Actions-menu\n\t\t\t\t\tthis.closeMenu()\n\t\t\t\t} else {\n\t\t\t\t\tthis.preventIfEvent(event)\n\t\t\t\t\tthis.focusIndex = this.focusIndex - 1\n\t\t\t\t}\n\t\t\t\tthis.focusAction()\n\t\t\t}\n\t\t},\n\t\tfocusNextAction(event) {\n\t\t\tif (this.opened) {\n\t\t\t\tconst indexLength = this.$refs.menu.querySelectorAll(focusableSelector).length - 1\n\t\t\t\tif (this.focusIndex === indexLength) {\n\t\t\t\t\t// Last element overflows to body-navigation (no preventDefault!) and closes Actions-menu\n\t\t\t\t\tthis.closeMenu()\n\t\t\t\t} else {\n\t\t\t\t\tthis.preventIfEvent(event)\n\t\t\t\t\tthis.focusIndex = this.focusIndex + 1\n\t\t\t\t}\n\t\t\t\tthis.focusAction()\n\t\t\t}\n\t\t},\n\t\tfocusFirstAction(event) {\n\t\t\tif (this.opened) {\n\t\t\t\tthis.preventIfEvent(event)\n\t\t\t\tthis.focusIndex = 0\n\t\t\t\tthis.focusAction()\n\t\t\t}\n\t\t},\n\t\tfocusLastAction(event) {\n\t\t\tif (this.opened) {\n\t\t\t\tthis.preventIfEvent(event)\n\t\t\t\tthis.focusIndex = this.$refs.menu.querySelectorAll(focusableSelector).length - 1\n\t\t\t\tthis.focusAction()\n\t\t\t}\n\t\t},\n\t\tpreventIfEvent(event) {\n\t\t\tif (event) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tevent.stopPropagation()\n\t\t\t}\n\t\t},\n\t\tonFocus(event) {\n\t\t\tthis.$emit('focus', event)\n\t\t},\n\t\tonBlur(event) {\n\t\t\tthis.$emit('blur', event)\n\t\t},\n\t},\n\n\t/**\n\t * The render function to display the component\n\t *\n\t * @param {Function} h The function to create VNodes\n\t * @return {VNodes} The created VNodes\n\t */\n\trender(h) {\n\t\t/**\n\t\t * Filter the Actions, so that we only get allowed components.\n\t\t * This also ensure that we don't get 'text' elements, which would\n\t\t * become problematic later on.\n\t\t */\n\t\tconst actions = (this.$slots.default || []).filter(\n\t\t\taction => action?.componentOptions?.tag\n\t\t)\n\n\t\t/**\n\t\t * Filter and list actions that are allowed to be displayed inline\n\t\t */\n\t\tlet inlineActions = actions.filter(this.isValidSingleAction)\n\t\tif (this.forceMenu && inlineActions.length > 0 && this.inline > 0) {\n\t\t\tVue.util.warn('Specifying forceMenu will ignore any inline actions rendering.')\n\t\t\tinlineActions = []\n\t\t}\n\n\t\t// Check that we have at least one action\n\t\tif (actions.length === 0) {\n\t\t\treturn\n\t\t}\n\n\t\t/**\n\t\t * Render the provided action\n\t\t *\n\t\t * @param {VNode} action the action to render\n\t\t * @return {Function} the vue render function\n\t\t */\n\t\tconst renderInlineAction = (action) => {\n\t\t\tconst icon = action?.data?.scopedSlots?.icon()?.[0] || h('span', { class: ['icon', action?.componentOptions?.propsData?.icon] })\n\t\t\tconst title = this.forceTitle ? this.menuTitle : ''\n\t\t\tconst clickListener = action?.componentOptions?.listeners?.click\n\n\t\t\treturn h('NcButton',\n\t\t\t\t{\n\t\t\t\t\tclass: [\n\t\t\t\t\t\t'action-item action-item--single',\n\t\t\t\t\t\taction?.data?.staticClass,\n\t\t\t\t\t\taction?.data?.class,\n\t\t\t\t\t],\n\t\t\t\t\tattrs: {\n\t\t\t\t\t\t'aria-label': action?.componentOptions?.propsData?.ariaLabel || action?.componentOptions?.children?.[0]?.text,\n\t\t\t\t\t},\n\t\t\t\t\tprops: {\n\t\t\t\t\t\t// If it has a title, we use a secondary button\n\t\t\t\t\t\ttype: this.type || (title ? 'secondary' : 'tertiary'),\n\t\t\t\t\t\tdisabled: this.disabled || action?.componentOptions?.propsData?.disabled,\n\t\t\t\t\t\t...action?.componentOptions?.propsData,\n\t\t\t\t\t},\n\t\t\t\t\tdirectives: [{\n\t\t\t\t\t\tname: 'tooltip',\n\t\t\t\t\t\tvalue: action?.componentOptions?.children?.[0]?.text,\n\t\t\t\t\t\tmodifiers: {\n\t\t\t\t\t\t\tauto: true,\n\t\t\t\t\t\t},\n\n\t\t\t\t\t}],\n\t\t\t\t\ton: {\n\t\t\t\t\t\tfocus: this.onFocus,\n\t\t\t\t\t\tblur: this.onBlur,\n\t\t\t\t\t\t// If we have a click listener,\n\t\t\t\t\t\t// we bind it to execute on click and forward the click event\n\t\t\t\t\t\t...(!!clickListener && {\n\t\t\t\t\t\t\tclick: (event) => {\n\t\t\t\t\t\t\t\tif (clickListener) {\n\t\t\t\t\t\t\t\t\tclickListener(event)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t[\n\t\t\t\t\th('template', { slot: 'icon' }, [icon]),\n\t\t\t\t\ttitle,\n\t\t\t\t],\n\t\t\t)\n\t\t}\n\n\t\t/**\n\t\t * Render the actions popover\n\t\t *\n\t\t * @param {VNode} actions the actions to render within\n\t\t * @return {Function} the vue render function\n\t\t */\n\t\tconst renderActionsPopover = (actions) => {\n\t\t\tconst triggerIcon = this.$slots.icon?.[0] || (\n\t\t\t\tthis.defaultIcon\n\t\t\t\t\t? h('span', { class: ['icon', this.defaultIcon] })\n\t\t\t\t\t: h('DotsHorizontal', {\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\tsize: 20,\n\t\t\t\t\t\t},\n\t\t\t\t\t})\n\t\t\t)\n\t\t\treturn h('NcPopover',\n\t\t\t\t{\n\t\t\t\t\tref: 'popover',\n\t\t\t\t\tprops: {\n\t\t\t\t\t\tdelay: 0,\n\t\t\t\t\t\thandleResize: true,\n\t\t\t\t\t\tshown: this.opened,\n\t\t\t\t\t\tplacement: this.placement,\n\t\t\t\t\t\tboundary: this.boundariesElement,\n\t\t\t\t\t\tcontainer: this.container,\n\t\t\t\t\t\tpopoverBaseClass: 'action-item__popper',\n\t\t\t\t\t},\n\t\t\t\t\t// For some reason the popover component\n\t\t\t\t\t// does not react to props given under the 'props' key,\n\t\t\t\t\t// so we use both 'attrs' and 'props'\n\t\t\t\t\tattrs: {\n\t\t\t\t\t\tdelay: 0,\n\t\t\t\t\t\thandleResize: true,\n\t\t\t\t\t\tshown: this.opened,\n\t\t\t\t\t\tplacement: this.placement,\n\t\t\t\t\t\tboundary: this.boundariesElement,\n\t\t\t\t\t\tcontainer: this.container,\n\t\t\t\t\t\tpopoverBaseClass: 'action-item__popper',\n\t\t\t\t\t},\n\t\t\t\t\ton: {\n\t\t\t\t\t\tshow: this.openMenu,\n\t\t\t\t\t\t'after-show': this.onOpen,\n\t\t\t\t\t\thide: this.closeMenu,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t[\n\t\t\t\t\th('NcButton', {\n\t\t\t\t\t\tclass: 'action-item__menutoggle',\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\t// If requested, we use a primary button\n\t\t\t\t\t\t\ttype: this.type || (this.primary\n\t\t\t\t\t\t\t\t? 'primary'\n\t\t\t\t\t\t\t\t// If it has a title, we use a secondary button\n\t\t\t\t\t\t\t\t: this.menuTitle ? 'secondary' : 'tertiary'),\n\t\t\t\t\t\t\tdisabled: this.disabled,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tslot: 'trigger',\n\t\t\t\t\t\tref: 'menuButton',\n\t\t\t\t\t\tattrs: {\n\t\t\t\t\t\t\t'aria-haspopup': 'menu',\n\t\t\t\t\t\t\t'aria-label': this.ariaLabel,\n\t\t\t\t\t\t\t'aria-controls': this.opened ? this.randomId : null,\n\t\t\t\t\t\t\t'aria-expanded': this.opened.toString(),\n\t\t\t\t\t\t},\n\t\t\t\t\t\ton: {\n\t\t\t\t\t\t\tfocus: this.onFocus,\n\t\t\t\t\t\t\tblur: this.onBlur,\n\t\t\t\t\t\t},\n\t\t\t\t\t}, [\n\t\t\t\t\t\th('template', { slot: 'icon' }, [triggerIcon]),\n\t\t\t\t\t\tthis.menuTitle,\n\t\t\t\t\t]),\n\t\t\t\t\th('div', {\n\t\t\t\t\t\tclass: {\n\t\t\t\t\t\t\topen: this.opened,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tattrs: {\n\t\t\t\t\t\t\ttabindex: '-1',\n\t\t\t\t\t\t},\n\t\t\t\t\t\ton: {\n\t\t\t\t\t\t\tkeydown: this.onKeydown,\n\t\t\t\t\t\t\tmousemove: this.onMouseFocusAction,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tref: 'menu',\n\t\t\t\t\t}, [\n\t\t\t\t\t\th('ul', {\n\t\t\t\t\t\t\tattrs: {\n\t\t\t\t\t\t\t\tid: this.randomId,\n\t\t\t\t\t\t\t\ttabindex: '-1',\n\t\t\t\t\t\t\t\trole: 'menu',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}, [\n\t\t\t\t\t\t\tactions,\n\t\t\t\t\t\t]),\n\t\t\t\t\t]),\n\t\t\t\t],\n\t\t\t)\n\t\t}\n\n\t\t/**\n\t\t * If we have a single action only and didn't force a menu,\n\t\t * we render the action as a standalone button\n\t\t */\n\t\tif (actions.length === 1 && inlineActions.length === 1 && !this.forceMenu) {\n\t\t\treturn renderInlineAction(inlineActions[0])\n\t\t}\n\n\t\t/**\n\t\t * If we some inline actions to render, render them, then the menu\n\t\t */\n\t\tif (inlineActions.length > 0 && this.inline > 0) {\n\t\t\tconst renderedInlineActions = inlineActions.slice(0, this.inline)\n\t\t\t// Filter already rendered actions\n\t\t\tconst menuActions = actions.filter(action => !renderedInlineActions.includes(action))\n\t\t\treturn h('div',\n\t\t\t\t{\n\t\t\t\t\tclass: [\n\t\t\t\t\t\t'action-items',\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t\t[\n\t\t\t\t\t// Render inline actions\n\t\t\t\t\t...renderedInlineActions.map(renderInlineAction),\n\t\t\t\t\t// render the rest within the popover menu\n\t\t\t\t\tmenuActions.length > 0\n\t\t\t\t\t\t? h('div',\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tclass: [\n\t\t\t\t\t\t\t\t\t'action-item',\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t'action-item--open': this.opened,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\trenderActionsPopover(menuActions),\n\t\t\t\t\t\t\t])\n\t\t\t\t\t\t: null,\n\t\t\t\t])\n\t\t}\n\n\t\t/**\n\t\t * Otherwise, we render the actions in a popover\n\t\t */\n\t\treturn h('div',\n\t\t\t{\n\t\t\t\tclass: [\n\t\t\t\t\t'action-item',\n\t\t\t\t\t{\n\t\t\t\t\t\t'action-item--open': this.opened,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t\t[\n\t\t\t\trenderActionsPopover(actions),\n\t\t\t])\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.action-items {\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.action-item {\n\tposition: relative;\n\tdisplay: inline-block;\n\n\t&.action-item--open .action-item__menutoggle {\n\t\topacity: $opacity_full;\n\t\tbackground-color: $action-background-hover;\n\t}\n}\n</style>\n\n<style lang=\"scss\">\n// We overwrote the popover base class, so we can style\n// the popover__inner for actions only.\n.v-popper__popper.action-item__popper .v-popper__inner {\n\tborder-radius: var(--border-radius-large);\n\tpadding: 4px;\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NcActions.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!./NcActions.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NcActions.vue?vue&type=style&index=0&id=2e37497d&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NcActions.vue?vue&type=style&index=0&id=2e37497d&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NcActions.vue?vue&type=style&index=1&id=2e37497d&prod&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NcActions.vue?vue&type=style&index=1&id=2e37497d&prod&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","var render, staticRenderFns\nimport script from \"./NcActions.vue?vue&type=script&lang=js&\"\nexport * from \"./NcActions.vue?vue&type=script&lang=js&\"\nimport style0 from \"./NcActions.vue?vue&type=style&index=0&id=2e37497d&prod&lang=scss&scoped=true&\"\nimport style1 from \"./NcActions.vue?vue&type=style&index=1&id=2e37497d&prod&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 \"2e37497d\",\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./NcActions.vue?vue&type=custom&index=0&blockType=docs\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport NcActions from './NcActions.vue'\n\nexport default NcActions\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',_vm._g({directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(_vm.tooltip),expression:\"tooltip\"},{name:\"click-outside\",rawName:\"v-click-outside\",value:(_vm.closeMenu),expression:\"closeMenu\"}],ref:\"main\",staticClass:\"avatardiv popovermenu-wrapper\",class:{\n\t\t'avatardiv--unknown': _vm.userDoesNotExist,\n\t\t'avatardiv--with-menu': _vm.hasMenu\n\t},style:(_vm.avatarStyle),attrs:{\"tabindex\":_vm.hasMenu ? '0' : undefined,\"aria-label\":_vm.avatarAriaLabel,\"role\":_vm.hasMenu ? 'button' : undefined},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.toggleMenu.apply(null, arguments)}}},_vm.hasMenu ? { click: _vm.toggleMenu } : {}),[_vm._t(\"icon\",function(){return [(_vm.iconClass)?_c('div',{staticClass:\"avatar-class-icon\",class:_vm.iconClass}):(_vm.isAvatarLoaded && !_vm.userDoesNotExist)?_c('img',{attrs:{\"src\":_vm.avatarUrlLoaded,\"srcset\":_vm.avatarSrcSetLoaded,\"alt\":\"\"}}):_vm._e()]}),_vm._v(\" \"),(_vm.hasMenu)?_c('NcPopover',{attrs:{\"placement\":\"auto\",\"container\":_vm.menuContainer,\"open\":_vm.contactsMenuOpenState},on:{\"after-show\":_vm.handlePopoverAfterShow,\"after-hide\":_vm.handlePopoverAfterHide},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [(_vm.contactsMenuLoading)?_c('NcLoadingIcon'):_c('DotsHorizontal',{staticClass:\"icon-more\",attrs:{\"size\":20}})]},proxy:true}],null,false,2037777893)},[_c('NcPopoverMenu',{ref:\"popoverMenu\",attrs:{\"menu\":_vm.menu}})],1):_vm._e(),_vm._v(\" \"),(_vm.showUserStatusIconOnAvatar)?_c('div',{staticClass:\"avatardiv__user-status avatardiv__user-status--icon\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.userStatus.icon)+\"\\n\\t\")]):(_vm.canDisplayUserStatus)?_c('div',{staticClass:\"avatardiv__user-status\",class:'avatardiv__user-status--' + _vm.userStatus.status}):_vm._e(),_vm._v(\" \"),(_vm.userDoesNotExist && !(_vm.iconClass || _vm.$slots.icon))?_c('div',{staticClass:\"unknown\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.initials)+\"\\n\\t\")]):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<docs>\n\n### Basic user avatar\n\n```vue\n\t<NcAvatar user=\"janedoe\" display-name=\"Jane Doe\" />\n```\n\n### Avatar with image\n\n```vue\n\t<NcAvatar url=\"https://nextcloud.com/wp-content/themes/next/assets/img/common/nextcloud-square-logo.png\" />\n```\n\n### Avatar with material design icon\n\n```\n <template>\n\t<NcAvatar>\n\t\t<template #icon>\n\t\t\t<AccountMultiple :size=\"20\" />\n\t\t</template>\n\t</NcAvatar>\n </template>\n <script>\n import AccountMultiple from 'vue-material-design-icons/AccountMultiple'\n\n export default {\n\tcomponents: {\n\t\tAccountMultiple,\n\t},\n }\n </script>\n```\n\n</docs>\n<template>\n\t<div ref=\"main\"\n\t\tv-tooltip=\"tooltip\"\n\t\tv-click-outside=\"closeMenu\"\n\t\t:class=\"{\n\t\t\t'avatardiv--unknown': userDoesNotExist,\n\t\t\t'avatardiv--with-menu': hasMenu\n\t\t}\"\n\t\t:style=\"avatarStyle\"\n\t\tclass=\"avatardiv popovermenu-wrapper\"\n\t\t:tabindex=\"hasMenu ? '0' : undefined\"\n\t\t:aria-label=\"avatarAriaLabel\"\n\t\t:role=\"hasMenu ? 'button' : undefined\"\n\t\tv-on=\"hasMenu ? { click: toggleMenu } : {}\"\n\t\t@keydown.enter=\"toggleMenu\">\n\t\t<!-- @slot Icon slot -->\n\t\t<slot name=\"icon\">\n\t\t\t<!-- Avatar icon or image -->\n\t\t\t<div v-if=\"iconClass\" :class=\"iconClass\" class=\"avatar-class-icon\" />\n\t\t\t<img v-else-if=\"isAvatarLoaded && !userDoesNotExist\"\n\t\t\t\t:src=\"avatarUrlLoaded\"\n\t\t\t\t:srcset=\"avatarSrcSetLoaded\"\n\t\t\t\talt=\"\">\n\t\t</slot>\n\n\t\t<!-- Contact menu -->\n\t\t<NcPopover v-if=\"hasMenu\"\n\t\t\tplacement=\"auto\"\n\t\t\t:container=\"menuContainer\"\n\t\t\t:open=\"contactsMenuOpenState\"\n\t\t\t@after-show=\"handlePopoverAfterShow\"\n\t\t\t@after-hide=\"handlePopoverAfterHide\">\n\t\t\t<NcPopoverMenu ref=\"popoverMenu\" :menu=\"menu\" />\n\t\t\t<template #trigger>\n\t\t\t\t<NcLoadingIcon v-if=\"contactsMenuLoading\" />\n\t\t\t\t<DotsHorizontal v-else\n\t\t\t\t\t:size=\"20\"\n\t\t\t\t\tclass=\"icon-more\" />\n\t\t\t</template>\n\t\t</NcPopover>\n\n\t\t<!-- Avatar status -->\n\t\t<div v-if=\"showUserStatusIconOnAvatar\" class=\"avatardiv__user-status avatardiv__user-status--icon\">\n\t\t\t{{ userStatus.icon }}\n\t\t</div>\n\t\t<div v-else-if=\"canDisplayUserStatus\"\n\t\t\tclass=\"avatardiv__user-status\"\n\t\t\t:class=\"'avatardiv__user-status--' + userStatus.status\" />\n\n\t\t<!-- Show the letter if no avatar nor icon class -->\n\t\t<div v-if=\"userDoesNotExist && !(iconClass || $slots.icon)\" class=\"unknown\">\n\t\t\t{{ initials }}\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport NcPopover from '../NcPopover/index.js'\nimport NcPopoverMenu from '../NcPopoverMenu/index.js'\nimport NcLoadingIcon from '../NcLoadingIcon/index.js'\nimport Tooltip from '../../directives/Tooltip/index.js'\nimport usernameToColor from '../../functions/usernameToColor/index.js'\nimport { userStatus } from '../../mixins/index.js'\nimport { t } from '../../l10n.js'\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport { subscribe, unsubscribe } from '@nextcloud/event-bus'\nimport { getBuilder } from '@nextcloud/browser-storage'\nimport { generateUrl } from '@nextcloud/router'\n\nimport DotsHorizontal from 'vue-material-design-icons/DotsHorizontal.vue'\n\nimport { directive as ClickOutside } from 'v-click-outside'\n\nconst browserStorage = getBuilder('nextcloud').persist().build()\n\n/**\n * @param {string} userId The id of the user\n */\nfunction getUserHasAvatar(userId) {\n\tconst flag = browserStorage.getItem('user-has-avatar.' + userId)\n\tif (typeof flag === 'string') {\n\t\treturn Boolean(flag)\n\t}\n\treturn null\n}\n\n/**\n * @param {string} userId The id of the user\n * @param {boolean} flag Has the user an avatar\n */\nfunction setUserHasAvatar(userId, flag) {\n\tif (userId) {\n\t\tbrowserStorage.setItem('user-has-avatar.' + userId, flag)\n\t}\n}\n\nexport default {\n\tname: 'NcAvatar',\n\n\tdirectives: {\n\t\tClickOutside,\n\t\ttooltip: Tooltip,\n\t},\n\tcomponents: {\n\t\tDotsHorizontal,\n\t\tNcLoadingIcon,\n\t\tNcPopover,\n\t\tNcPopoverMenu,\n\t},\n\tmixins: [userStatus],\n\tprops: {\n\t\t/**\n\t\t * Set a custom url to the avatar image\n\t\t * either the url, user or displayName property must be defined\n\t\t */\n\t\turl: {\n\t\t\ttype: String,\n\t\t\tdefault: undefined,\n\t\t},\n\t\t/**\n\t\t * Set a css icon-class for an icon to be used instead of the avatar.\n\t\t */\n\t\ticonClass: {\n\t\t\ttype: String,\n\t\t\tdefault: undefined,\n\t\t},\n\t\t/**\n\t\t * Set the user id to fetch the avatar\n\t\t * either the url, user or displayName property must be defined\n\t\t */\n\t\tuser: {\n\t\t\ttype: String,\n\t\t\tdefault: undefined,\n\t\t},\n\t\t/**\n\t\t * Whether or not to display the user-status\n\t\t */\n\t\tshowUserStatus: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\t/**\n\t\t * Whether or not to the status-icon should be used instead of online/away\n\t\t */\n\t\tshowUserStatusCompact: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\t/**\n\t\t * When the user status was preloaded via another source it can be handed in with this property to save the request.\n\t\t * If this property is not set the status will be fetched automatically.\n\t\t * If a preloaded no-status is available provide this object with properties \"status\", \"icon\" and \"message\" set to null.\n\t\t */\n\t\tpreloadedUserStatus: {\n\t\t\ttype: Object,\n\t\t\tdefault: undefined,\n\t\t},\n\t\t/**\n\t\t * Is the user a guest user (then we have to user a different endpoint)\n\t\t */\n\t\tisGuest: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t/**\n\t\t * Set a display name that will be rendered as a tooltip\n\t\t * either the url, user or displayName property must be defined\n\t\t * specify just the displayname to generate a placeholder avatar without\n\t\t * trying to fetch the avatar based on the user id\n\t\t */\n\t\tdisplayName: {\n\t\t\ttype: String,\n\t\t\tdefault: undefined,\n\t\t},\n\t\t/**\n\t\t * Set a size in px for the rendered avatar\n\t\t */\n\t\tsize: {\n\t\t\ttype: Number,\n\t\t\tdefault: 32,\n\t\t},\n\t\t/**\n\t\t * Placeholder avatars will be automatically generated when this is set to true\n\t\t */\n\t\tallowPlaceholder: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\t/**\n\t\t * Disable the tooltip\n\t\t */\n\t\tdisableTooltip: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t/**\n\t\t * Disable the menu\n\t\t */\n\t\tdisableMenu: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t/**\n\t\t * Declares a custom tooltip when not null\n\t\t * Fallback will be the displayName\n\t\t *\n\t\t * requires disableTooltip not to be set to true\n\t\t */\n\t\ttooltipMessage: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * Declares username is not a user's name, when true.\n\t\t * Prevents loading user's avatar from server and forces generating colored initials,\n\t\t * i.e. if the user is a group\n\t\t */\n\t\tisNoUser: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Choose the avatar menu alignment.\n\t\t * Possible values are `left`, `center`, `right`.\n\t\t */\n\t\tmenuPosition: {\n\t\t\ttype: String,\n\t\t\tdefault: 'center',\n\t\t},\n\n\t\t/**\n\t\t * Selector for the popover menu container\n\t\t */\n\t\tmenuContainer: {\n\t\t\ttype: String,\n\t\t\tdefault: 'body',\n\t\t},\n\n\t\tariaLabel: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tavatarUrlLoaded: null,\n\t\t\tavatarSrcSetLoaded: null,\n\t\t\tuserDoesNotExist: false,\n\t\t\tisAvatarLoaded: false,\n\t\t\tisMenuLoaded: false,\n\t\t\tcontactsMenuLoading: false,\n\t\t\tcontactsMenuActions: [],\n\t\t\tcontactsMenuOpenState: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tavatarAriaLabel() {\n\t\t\tif (this.ariaLabel !== null) {\n\t\t\t\treturn this.ariaLabel\n\t\t\t}\n\n\t\t\tif (this.hasStatus && this.showUserStatus && this.showUserStatusCompact) {\n\t\t\t\treturn t('Avatar of {displayName}, {status}', { displayName: this.displayName || this.userId, status: this.userStatus.status })\n\t\t\t}\n\t\t\treturn t('Avatar of {displayName}', { displayName: this.displayName || this.userId })\n\t\t},\n\n\t\tcanDisplayUserStatus() {\n\t\t\treturn this.showUserStatus\n\t\t\t\t&& this.hasStatus\n\t\t\t\t&& ['online', 'away', 'dnd'].includes(this.userStatus.status)\n\t\t},\n\t\tshowUserStatusIconOnAvatar() {\n\t\t\treturn this.showUserStatus\n\t\t\t\t&& this.showUserStatusCompact\n\t\t\t\t&& this.hasStatus\n\t\t\t\t&& this.userStatus.status !== 'dnd'\n\t\t\t\t&& this.userStatus.icon\n\t\t},\n\t\tgetUserIdentifier() {\n\t\t\tif (this.isDisplayNameDefined) {\n\t\t\t\treturn this.displayName\n\t\t\t}\n\t\t\tif (this.isUserDefined) {\n\t\t\t\treturn this.user\n\t\t\t}\n\t\t\treturn ''\n\t\t},\n\t\tisUserDefined() {\n\t\t\treturn typeof this.user !== 'undefined'\n\t\t},\n\t\tisDisplayNameDefined() {\n\t\t\treturn typeof this.displayName !== 'undefined'\n\t\t},\n\t\tisUrlDefined() {\n\t\t\treturn typeof this.url !== 'undefined'\n\t\t},\n\t\thasMenu() {\n\t\t\tif (this.disableMenu) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif (this.isMenuLoaded) {\n\t\t\t\treturn this.menu.length > 0\n\t\t\t}\n\t\t\treturn !(this.user === getCurrentUser()?.uid || this.userDoesNotExist || this.url)\n\t\t},\n\t\tshouldShowPlaceholder() {\n\t\t\treturn this.allowPlaceholder && (\n\t\t\t\tthis.userDoesNotExist)\n\t\t},\n\t\tavatarStyle() {\n\t\t\tconst style = {\n\t\t\t\t'--size': this.size + 'px',\n\t\t\t\tlineHeight: this.size + 'px',\n\t\t\t\tfontSize: Math.round(this.size * 0.55) + 'px',\n\t\t\t}\n\n\t\t\tif (!this.iconClass && !this.avatarSrcSetLoaded) {\n\t\t\t\tconst rgb = usernameToColor(this.getUserIdentifier)\n\t\t\t\tstyle.backgroundColor = 'rgb(' + rgb.r + ', ' + rgb.g + ', ' + rgb.b + ')'\n\t\t\t}\n\t\t\treturn style\n\t\t},\n\t\ttooltip() {\n\t\t\tif (this.disableTooltip) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif (this.tooltipMessage) {\n\t\t\t\treturn this.tooltipMessage\n\t\t\t}\n\n\t\t\treturn this.displayName\n\t\t},\n\t\tinitials() {\n\t\t\tlet initials\n\t\t\tif (this.shouldShowPlaceholder) {\n\t\t\t\tconst user = this.getUserIdentifier\n\t\t\t\tconst idx = user.indexOf(' ')\n\t\t\t\tif (user === '') {\n\t\t\t\t\tinitials = '?'\n\t\t\t\t} else {\n\t\t\t\t\tinitials = String.fromCodePoint(user.codePointAt(0))\n\t\t\t\t\tif (idx !== -1) {\n\t\t\t\t\t\tinitials = initials.concat(String.fromCodePoint(user.codePointAt(idx + 1)))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn initials.toUpperCase()\n\t\t},\n\t\tmenu() {\n\t\t\tconst actions = this.contactsMenuActions.map((item) => {\n\t\t\t\treturn {\n\t\t\t\t\thref: item.hyperlink,\n\t\t\t\t\ticon: item.icon,\n\t\t\t\t\tlongtext: item.title,\n\t\t\t\t}\n\t\t\t})\n\n\t\t\t/**\n\t\t\t * @param {string} html The HTML to escape\n\t\t\t */\n\t\t\tfunction escape(html) {\n\t\t\t\tconst text = document.createTextNode(html)\n\t\t\t\tconst p = document.createElement('p')\n\t\t\t\tp.appendChild(text)\n\t\t\t\treturn p.innerHTML\n\t\t\t}\n\n\t\t\tif (this.showUserStatus && (this.userStatus.icon || this.userStatus.message)) {\n\t\t\t\treturn [{\n\t\t\t\t\thref: '#',\n\t\t\t\t\ticon: `data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg'><text x='0' y='14' font-size='14'>${escape(this.userStatus.icon)}</text></svg>`,\n\t\t\t\t\ttext: `${this.userStatus.message}`,\n\t\t\t\t}].concat(actions)\n\t\t\t}\n\n\t\t\treturn actions\n\t\t},\n\t},\n\n\twatch: {\n\t\turl() {\n\t\t\tthis.userDoesNotExist = false\n\t\t\tthis.loadAvatarUrl()\n\t\t},\n\t\tuser() {\n\t\t\tthis.userDoesNotExist = false\n\t\t\tthis.isMenuLoaded = false\n\t\t\tthis.loadAvatarUrl()\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.loadAvatarUrl()\n\t\tif (this.showUserStatus && this.user && !this.isNoUser) {\n\t\t\tif (!this.preloadedUserStatus) {\n\t\t\t\tthis.fetchUserStatus(this.user)\n\t\t\t} else {\n\t\t\t\tthis.userStatus.status = this.preloadedUserStatus.status || ''\n\t\t\t\tthis.userStatus.message = this.preloadedUserStatus.message || ''\n\t\t\t\tthis.userStatus.icon = this.preloadedUserStatus.icon || ''\n\t\t\t\tthis.hasStatus = this.preloadedUserStatus.status !== null\n\t\t\t}\n\t\t\tsubscribe('user_status:status.updated', this.handleUserStatusUpdated)\n\t\t}\n\t},\n\n\tbeforeDestroy() {\n\t\tif (this.showUserStatus && this.user && !this.isNoUser) {\n\t\t\tunsubscribe('user_status:status.updated', this.handleUserStatusUpdated)\n\t\t}\n\t},\n\n\tmethods: {\n\t\thandlePopoverAfterShow() {\n\t\t\tconst links = this.$refs.popoverMenu.$el.getElementsByTagName('a')\n\t\t\tif (links.length) {\n\t\t\t\tlinks[0].focus()\n\t\t\t}\n\t\t},\n\t\thandlePopoverAfterHide() {\n\t\t\t// bring focus back to the trigger\n\t\t\tthis.$refs.main.focus()\n\t\t},\n\t\thandleUserStatusUpdated(state) {\n\t\t\tif (this.user === state.userId) {\n\t\t\t\tthis.userStatus = {\n\t\t\t\t\tstatus: state.status,\n\t\t\t\t\ticon: state.icon,\n\t\t\t\t\tmessage: state.message,\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tasync toggleMenu() {\n\t\t\tif (!this.hasMenu) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif (!this.contactsMenuOpenState) {\n\t\t\t\tawait this.fetchContactsMenu()\n\t\t\t}\n\t\t\tthis.contactsMenuOpenState = !this.contactsMenuOpenState\n\t\t},\n\t\tcloseMenu() {\n\t\t\tthis.contactsMenuOpenState = false\n\t\t},\n\t\tasync fetchContactsMenu() {\n\t\t\tthis.contactsMenuLoading = true\n\t\t\ttry {\n\t\t\t\tconst user = encodeURIComponent(this.user)\n\t\t\t\tconst { data } = await axios.post(generateUrl('contactsmenu/findOne'), `shareType=0&shareWith=${user}`)\n\t\t\t\tthis.contactsMenuActions = data.topAction ? [data.topAction].concat(data.actions) : data.actions\n\t\t\t} catch (e) {\n\t\t\t\tthis.contactsMenuOpenState = false\n\t\t\t}\n\t\t\tthis.contactsMenuLoading = false\n\t\t\tthis.isMenuLoaded = true\n\t\t},\n\n\t\t/**\n\t\t * Handle avatar loading if user or url defined\n\t\t */\n\t\tloadAvatarUrl() {\n\t\t\tthis.isAvatarLoaded = false\n\n\t\t\t/** Only run avatar image loading if either user or url property is defined */\n\t\t\tif (!this.isUrlDefined && (!this.isUserDefined || this.isNoUser)) {\n\t\t\t\tthis.isAvatarLoaded = true\n\t\t\t\tthis.userDoesNotExist = true\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Directly use the url if defined\n\t\t\tif (this.isUrlDefined) {\n\t\t\t\tthis.updateImageIfValid(this.url)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this.size <= 64) {\n\t\t\t\tconst avatarUrl = this.avatarUrlGenerator(this.user, 64)\n\t\t\t\tconst srcset = [\n\t\t\t\t\tavatarUrl + ' 1x',\n\t\t\t\t\tthis.avatarUrlGenerator(this.user, 512) + ' 8x',\n\t\t\t\t].join(', ')\n\n\t\t\t\tthis.updateImageIfValid(avatarUrl, srcset)\n\t\t\t} else {\n\t\t\t\tconst avatarUrl = this.avatarUrlGenerator(this.user, 512)\n\t\t\t\tthis.updateImageIfValid(avatarUrl)\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Generate an avatar url from the server's avatar endpoint\n\t\t *\n\t\t * @param {string} user the user id\n\t\t * @param {number} size the desired size\n\t\t * @return {string}\n\t\t */\n\t\tavatarUrlGenerator(user, size) {\n\t\t\tlet url = '/avatar/{user}/{size}'\n\t\t\tif (this.isGuest) {\n\t\t\t\turl = '/avatar/guest/{user}/{size}'\n\t\t\t}\n\n\t\t\tlet avatarUrl = generateUrl(\n\t\t\t\turl,\n\t\t\t\t{\n\t\t\t\t\tuser,\n\t\t\t\t\tsize,\n\t\t\t\t})\n\n\t\t\t// eslint-disable-next-line camelcase\n\t\t\tif (user === getCurrentUser()?.uid && typeof oc_userconfig !== 'undefined') {\n\t\t\t\tavatarUrl += '?v=' + oc_userconfig.avatar.version\n\t\t\t}\n\n\t\t\treturn avatarUrl\n\t\t},\n\n\t\t/**\n\t\t * Check if the provided url is valid and update Avatar if so\n\t\t *\n\t\t * @param {string} url the avatar url\n\t\t * @param {Array} srcset the avatar srcset\n\t\t */\n\t\tupdateImageIfValid(url, srcset = null) {\n\t\t\t// skip loading\n\t\t\tconst userHasAvatar = getUserHasAvatar(this.user)\n\t\t\tif (this.isUserDefined && typeof userHasAvatar === 'boolean') {\n\t\t\t\tthis.isAvatarLoaded = true\n\t\t\t\tthis.avatarUrlLoaded = url\n\t\t\t\tif (srcset) {\n\t\t\t\t\tthis.avatarSrcSetLoaded = srcset\n\t\t\t\t}\n\t\t\t\tif (userHasAvatar === false) {\n\t\t\t\t\tthis.userDoesNotExist = true\n\t\t\t\t}\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst img = new Image()\n\t\t\timg.onload = () => {\n\t\t\t\tthis.avatarUrlLoaded = url\n\t\t\t\tif (srcset) {\n\t\t\t\t\tthis.avatarSrcSetLoaded = srcset\n\t\t\t\t}\n\t\t\t\tthis.isAvatarLoaded = true\n\t\t\t\t// re-get to avoid concurrent access\n\t\t\t\tsetUserHasAvatar(this.user, true)\n\t\t\t}\n\t\t\timg.onerror = () => {\n\t\t\t\tconsole.debug('Invalid avatar url', url)\n\t\t\t\t// Avatar is invalid, reset\n\t\t\t\tthis.avatarUrlLoaded = null\n\t\t\t\tthis.avatarSrcSetLoaded = null\n\n\t\t\t\tthis.userDoesNotExist = true\n\t\t\t\tthis.isAvatarLoaded = false\n\t\t\t\tsetUserHasAvatar(this.user, false)\n\t\t\t}\n\n\t\t\tif (srcset) {\n\t\t\t\timg.srcset = srcset\n\t\t\t}\n\t\t\timg.src = url\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.avatardiv {\n\tposition: relative;\n\tdisplay: inline-block;\n\twidth: var(--size);\n\theight: var(--size);\n\n\t&--unknown {\n\t\tposition: relative;\n\t\tbackground-color: var(--color-text-maxcontrast);\n\t}\n\n\t&:not(&--unknown) {\n\t\t// White background for avatars with transparency\n\t\tbackground-color: #fff !important;\n\t\tbody.theme--dark & {\n\t\t\t// And black background in dark mode, as it shines through on hover of the menu\n\t\t\tbackground-color: #000 !important;\n\t\t}\n\t\tbox-shadow: 0 0 5px rgba(0, 0, 0, 0.05) inset;\n\t}\n\n\t&--with-menu {\n\t\tcursor: pointer;\n\t\t:deep(.v-popper) {\n\t\t\tposition: absolute;\n\t\t\ttop: 0;\n\t\t\tleft: 0;\n\t\t}\n\t\t.icon-more {\n\t\t\tcursor: pointer;\n\t\t\topacity: 0;\n\t\t}\n\t\t&:focus,\n\t\t&:hover {\n\t\t\t.icon-more {\n\t\t\t\topacity: 1;\n\t\t\t}\n\t\t\timg {\n\t\t\t\topacity: 0.3;\n\t\t\t}\n\t\t}\n\t\t.icon-more,\n\t\timg {\n\t\t\ttransition: opacity var(--animation-quick);\n\t\t}\n\t}\n\n\t> .unknown {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\ttext-align: center;\n\t\tfont-weight: normal;\n\t\tcolor: var(--color-main-background);\n\t}\n\n\timg {\n\t\t// Cover entire area\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\t// Keep ratio\n\t\tobject-fit: cover;\n\t}\n\n\t.material-design-icon {\n\t\twidth: var(--size);\n\t\theight: var(--size);\n\t}\n\n\t.avatardiv__user-status {\n\t\tposition: absolute;\n\t\tright: -4px;\n\t\tbottom: -4px;\n\t\tmax-height: 18px;\n\t\tmax-width: 18px;\n\t\theight: 40%;\n\t\twidth: 40%;\n\t\tline-height: 15px;\n\t\tfont-size: var(--default-font-size);\n\t\tborder: 2px solid var(--color-main-background);\n\t\tbackground-color: var(--color-main-background);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-size: 16px;\n\t\tbackground-position: center;\n\t\tborder-radius: 50%;\n\n\t\t.acli:hover & {\n\t\t\tborder-color: var(--color-background-hover);\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t}\n\t\t.acli.active & {\n\t\t\tborder-color: var(--color-primary-light);\n\t\t\tbackground-color: var(--color-primary-light);\n\t\t}\n\n\t\t&--online{\n\t\t\tbackground-image: url('../../assets/status-icons/user-status-online.svg');\n\t\t}\n\t\t&--dnd{\n\t\t\tbackground-image: url('../../assets/status-icons/user-status-dnd.svg');\n\t\t\tbackground-color: #ffffff;\n\t\t}\n\t\t&--away{\n\t\t\tbackground-image: url('../../assets/status-icons/user-status-away.svg');\n\t\t}\n\t\t&--icon {\n\t\t\tborder: none;\n\t\t\tbackground-color: transparent;\n\t\t}\n\t}\n\n\t.popovermenu-wrapper {\n\t\tposition: relative;\n\t\tdisplay: inline-block;\n\t}\n}\n\n.avatar-class-icon {\n\tborder-radius: 50%;\n\tbackground-color: var(--color-background-darker);\n\theight: 100%;\n}\n\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NcAvatar.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!./NcAvatar.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NcAvatar.vue?vue&type=style&index=0&id=406df22d&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NcAvatar.vue?vue&type=style&index=0&id=406df22d&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./NcAvatar.vue?vue&type=template&id=406df22d&scoped=true&\"\nimport script from \"./NcAvatar.vue?vue&type=script&lang=js&\"\nexport * from \"./NcAvatar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./NcAvatar.vue?vue&type=style&index=0&id=406df22d&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"406df22d\",\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./NcAvatar.vue?vue&type=custom&index=0&blockType=docs\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","/**\n * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport NcAvatar from './NcAvatar.vue'\n\nexport default NcAvatar\n","<!--\n - @copyright Copyright (c) 2020 Marco Ambrosini <marcoambrosini@icloud.com>\n -\n - @author Marco Ambrosini <marcoambrosini@icloud.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<docs>\n\n### General description\nGeneral purpose button component. See props for different options.\n[Use material design icons only for icons](https://www.npmjs.com/package/vue-material-design-icons) and remember to set their size to 20.\n\n### Usage\n### Custom icon slot\nTo be used with `vue-material-design-icons` only. For icon classes use the `default-icon` slot.\nIt can be used with one or multiple actions.\n```\n<template>\n<div class=\"wrapper\">\n\t<!-- Style selector -->\n\t<div class=\"grid\">\n\t\t<NcCheckboxRadioSwitch :checked.sync=\"style\" value=\"text\" name=\"style\" type=\"radio\">Text only</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch :checked.sync=\"style\" value=\"icon\" name=\"style\" type=\"radio\">Icon only</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch :checked.sync=\"style\" value=\"icontext\" name=\"style\" type=\"radio\">Icon and text</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch :checked.sync=\"disabled\" type=\"checkbox\">Disabled</NcCheckboxRadioSwitch>\n\t\t<!--<NcCheckboxRadioSwitch :checked.sync=\"readonly\" type=\"checkbox\">Read-only</NcCheckboxRadioSwitch>-->\n\t</div>\n\n\t<h5>Standard buttons</h5>\n\t<div class=\"grid\">\n\t\t<p>Tertiary, no background</p>\n\t\t<p>Tertiary</p>\n\t\t<p>Secondary</p>\n\t\t<p>Primary</p>\n\t\t<NcButton\n\t\t\t:disabled=\"disabled\"\n\t\t\t:readonly=\"readonly\"\n\t\t\ttype=\"tertiary-no-background\">\n\t\t\t<template v-if=\"style.indexOf('icon') !== -1\" #icon>\n\t\t\t\t<Video\n\t\t\t\t\t:size=\"20\" />\n\t\t\t</template>\n\t\t\t<template v-if=\"style.indexOf('text') !== -1\">Example text</template>\n\t\t</NcButton>\n\t\t<NcButton\n\t\t\t:disabled=\"disabled\"\n\t\t\t:readonly=\"readonly\"\n\t\t\ttype=\"tertiary\">\n\t\t\t<template v-if=\"style.indexOf('icon') !== -1\" #icon>\n\t\t\t\t<Video\n\t\t\t\t\t:size=\"20\" />\n\t\t\t</template>\n\t\t\t<template v-if=\"style.indexOf('text') !== -1\">Example text</template>\n\t\t</NcButton>\n\t\t<NcButton\n\t\t\t:disabled=\"disabled\"\n\t\t\t:readonly=\"readonly\">\n\t\t\t<template v-if=\"style.indexOf('icon') !== -1\" #icon>\n\t\t\t\t<Video\n\t\t\t\t\ttitle=\"\"\n\t\t\t\t\t:size=\"20\" />\n\t\t\t</template>\n\t\t\t<template v-if=\"style.indexOf('text') !== -1\">Example text</template>\n\t\t</NcButton>\n\t\t<NcButton\n\t\t\t:disabled=\"disabled\"\n\t\t\t:readonly=\"readonly\"\n\t\t\ttype=\"primary\">\n\t\t\t<template v-if=\"style.indexOf('icon') !== -1\" #icon>\n\t\t\t\t<Video\n\t\t\t\t\t:size=\"20\" />\n\t\t\t</template>\n\t\t\t<template v-if=\"style.indexOf('text') !== -1\">Example text</template>\n\t\t</NcButton>\n\t</div>\n\n\t<!-- Wide button -->\n\t<h5>Wide button</h5>\n\t<NcButton\n\t\t:disabled=\"disabled\"\n\t\t:readonly=\"readonly\"\n\t\t:wide=\"true\"\n\t\ttext=\"Example text\">\n\t\t<template #icon>\n\t\t\t<Video\n\t\t\t\ttitle=\"\"\n\t\t\t\t:size=\"20\" />\n\t\t</template>\n\t\tExample text\n\t</NcButton>\n\n\t<!-- Special buttons -->\n\t<h5>Special buttons</h5>\n\t<div class=\"grid\">\n\t\t<p>Success</p>\n\t\t<p>Warning</p>\n\t\t<p>Error</p>\n\t\t<p> - </p>\n\t\t<NcButton\n\t\t\t:disabled=\"disabled\"\n\t\t\t:readonly=\"readonly\"\n\t\t\ttype=\"success\">\n\t\t\t<template #icon>\n\t\t\t\t<Video\n\t\t\t\t\t:size=\"20\" />\n\t\t\t</template>\n\t\t\tExample text\n\t\t</NcButton>\n\t\t<NcButton\n\t\t\t:disabled=\"disabled\"\n\t\t\t:readonly=\"readonly\"\n\t\t\ttype=\"warning\">\n\t\t\t<template #icon>\n\t\t\t\t<Video\n\t\t\t\t\ttitle=\"\"\n\t\t\t\t\t:size=\"20\" />\n\t\t\t</template>\n\t\t\tExample text\n\t\t</NcButton>\n\t\t<NcButton\n\t\t\t:disabled=\"disabled\"\n\t\t\t:readonly=\"readonly\"\n\t\t\ttype=\"error\">\n\t\t\t<template #icon>\n\t\t\t\t<Video\n\t\t\t\t\t:size=\"20\" />\n\t\t\t</template>\n\t\t\tExample text\n\t\t</NcButton>\n\t\t<p> - </p>\n\t</div>\n</div>\n\n</template>\n<script>\nimport Video from 'vue-material-design-icons/Video'\n\nexport default {\n\tcomponents: {\n\t\tVideo,\n\t},\n\tdata() {\n\t\treturn {\n\t\t\ttoggled: false,\n\t\t\tdisabled: false,\n\t\t\treadonly: false,\n\t\t\tstyle: 'icontext',\n\t\t}\n\t}\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.wrapper {\n\tpadding: 0 12px;\n}\n\n.grid {\n\tdisplay: grid;\n\tgrid-template-columns: 1fr 1fr 1fr 1fr;\n\tgrid-template-rows: repeat(auto-fill, auto);\n\tposition: relative;\n\tmargin: 12px 0;\n}\n\nh5 {\n\tfont-weight: bold;\n\tmargin: 40px 0 20px 0;\n}\n\np {\n\ttext-align: center;\n\tmargin: 4px 0 12px 0;\n\tcolor: var(--color-text-lighter)\n}\n\nbutton {\n\tmargin: auto;\n}\n</style>\n```\n</docs>\n\n<template>\n\t<root-element class=\"button-vue\"\n\t\tv-bind=\"rootElement\"\n\t\t:class=\"buttonClassObject\"\n\t\t:aria-label=\"ariaLabel\"\n\t\t:type=\"nativeType\"\n\t\t:disabled=\"disabled\"\n\t\tv-on=\"$listeners\"\n\t\t@keydown.enter=\"makeActive\"\n\t\t@keyup.enter=\"makeInactive\"\n\t\t@click=\"handleClick\"\n\t\t@blur=\"handleBlur\"\n\t\t@keyup.tab.exact=\"handleTabUp\"\n\t\t@keyup.shift.tab=\"handleTabUp\">\n\t\t<span class=\"button-vue__wrapper\">\n\t\t\t<span v-if=\"hasIcon\" class=\"button-vue__icon\">\n\t\t\t\t<!-- @slot The material design icon slot -->\n\t\t\t\t<slot name=\"icon\" />\n\t\t\t</span>\n\t\t\t<span v-if=\"hasText\" class=\"button-vue__text\">\n\t\t\t\t<slot />\n\t\t\t</span>\n\t\t</span>\n\t</root-element>\n</template>\n<script>\n\nexport default {\n\tname: 'NcButton',\n\n\tprops: {\n\t\t/**\n\t\t * Toggles the disabled state of the button on and off.\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 * Specifies the button type\n\t\t * Accepted values: primary, secondary, tertiary, tertiary-no-background, tertiary-on-primary, error, warning, success. If left empty,\n\t\t * the default button style will be applied.\n\t\t */\n\t\ttype: {\n\t\t\ttype: String,\n\t\t\tvalidator(value) {\n\t\t\t\treturn ['primary', 'secondary', 'tertiary', 'tertiary-no-background', 'tertiary-on-primary', 'error', 'warning', 'success'].indexOf(value) !== -1\n\t\t\t},\n\t\t\tdefault: 'secondary',\n\t\t},\n\n\t\t/**\n\t\t * Specifies the button native type\n\t\t * Accepted values: submit, reset, button. If left empty,\n\t\t * the default \"button\" type will be used.\n\t\t */\n\t\tnativeType: {\n\t\t\ttype: String,\n\t\t\tvalidator(value) {\n\t\t\t\treturn ['submit', 'reset', 'button'].indexOf(value) !== -1\n\t\t\t},\n\t\t\tdefault: 'button',\n\t\t},\n\n\t\t/**\n\t\t * Specifies whether the button should span all the available width.\n\t\t * By default, buttons span the whole width of the container.\n\t\t */\n\t\twide: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Always try to provide an aria-label to your button. Make it more\n\t\t * specific than the button's title by provide some more context. E.g. if\n\t\t * the title of the button is \"send\" in the Mail app, the aria label could\n\t\t * be \"Send email\".\n\t\t */\n\t\tariaLabel: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Providing the href attribute turns the button component into an `a`\n\t\t * element.\n\t\t */\n\t\thref: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Providing the to attribute turns the button component into a `router-link`\n\t\t * element. Takes precedence over the href attribute.\n\t\t */\n\t\tto: {\n\t\t\ttype: [String, Object],\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Pass in `true` if you want the matching behaviour of `router-link` to\n\t\t * be non-inclusive: https://router.vuejs.org/api/#exact\n\t\t */\n\t\texact: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * Keeps track of whether the element's focus status is due to having\n\t\t\t * tabbed to it. We use this to display a thick 'focus outline' only\n\t\t\t * when the user is navigating with the keyboard.\n\t\t\t */\n\t\t\ttabbed: false,\n\n\t\t\t/**\n\t\t\t * Making sure the slots are reactive\n\t\t\t */\n\t\t\tslots: this.$slots,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t// Determines whether the root element is an a,\n\t\t// a router-link or a button\n\t\trootElement() {\n\t\t\tif (this.to) {\n\t\t\t\treturn {\n\t\t\t\t\tis: 'router-link',\n\t\t\t\t\ttag: 'button',\n\t\t\t\t\tto: this.to,\n\t\t\t\t\texact: this.exact,\n\t\t\t\t\t...this.$attrs,\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.href) {\n\t\t\t\treturn {\n\t\t\t\t\tis: 'a',\n\t\t\t\t\thref: this.href,\n\t\t\t\t\t...this.$attrs,\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tis: 'button',\n\t\t\t\t...this.$attrs,\n\t\t\t}\n\t\t},\n\n\t\thasText() {\n\t\t\treturn this.slots?.default !== undefined\n\t\t\t\t&& this.slots?.default[0]?.text\n\t\t},\n\n\t\thasIcon() {\n\t\t\treturn this.slots.icon !== undefined\n\t\t},\n\n\t\ticonOnly() {\n\t\t\treturn this.hasIcon && !this.hasText\n\t\t},\n\n\t\ttextOnly() {\n\t\t\treturn !this.hasIcon && this.hasText\n\t\t},\n\n\t\ticonAndText() {\n\t\t\treturn this.hasIcon && this.hasText\n\t\t},\n\n\t\ttext() {\n\t\t\treturn this.hasText ? this.slots.default[0].text.trim() : null\n\t\t},\n\n\t\t// Classes applied to the button element\n\t\tbuttonClassObject() {\n\t\t\treturn {\n\t\t\t\t// If icon only, some additional css rules are required\n\t\t\t\t'button-vue--icon-only': this.iconOnly,\n\t\t\t\t'button-vue--text-only': this.textOnly,\n\t\t\t\t'button-vue--icon-and-text': this.iconAndText,\n\t\t\t\t[`button-vue--vue-${this.type}`]: this.type,\n\t\t\t\t'button-vue--wide': this.wide,\n\t\t\t\t'button-vue--tabbed': this.tabbed,\n\t\t\t}\n\t\t},\n\t},\n\n\tbeforeUpdate() {\n\t\t// $slots is not reactive, this make sure we are able to detect changes\n\t\tthis.slots = this.$slots\n\t},\n\n\tmounted() {\n\t\t/**\n\t\t * Always fill either the text prop or the ariaLabel one.\n\t\t */\n\t\tif (!this.text && !this.ariaLabel) {\n\t\t\tconsole.warn('You need to fill either the text or the ariaLabel props in the button component.', {\n\t\t\t\ttext: this.text,\n\t\t\t\tariaLabel: this.ariaLabel,\n\t\t\t},\n\t\t\tthis)\n\t\t}\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Removes the tabbed state of the button.\n\t\t */\n\t\thandleClick() {\n\t\t\tthis.tabbed = false\n\t\t},\n\n\t\t/**\n\t\t * When the tab key is lifted, the button has been \"tabbed in\",\n\t\t * see comments on the `tabbed` variable declared in the data.\n\t\t */\n\t\thandleTabUp() {\n\t\t\tthis.tabbed = true\n\t\t},\n\n\t\t/**\n\t\t * Everytime the button is blurred, we remove the tabbed state.\n\t\t */\n\t\thandleBlur() {\n\t\t\tthis.tabbed = false\n\t\t},\n\n\t\t/**\n\t\t * When the button is reached via keyboard navigation and pressed using\n\t\t * the enter key, we slightly change the styles to provide an \"active-like\"\n\t\t * feedback. When using the mouse this is achieved with the ripple effect.\n\t\t */\n\t\tmakeActive() {\n\t\t\tthis.tabbed = false\n\t\t},\n\n\t\tmakeInactive() {\n\t\t\tthis.tabbed = true\n\t\t},\n\t},\n}\n\n</script>\n\n<style lang=\"scss\" scoped>\n\n.button-vue {\n\tposition: relative;\n\twidth: fit-content;\n\toverflow: hidden;\n\tborder: 0;\n\tpadding: 0;\n\tfont-size: var(--default-font-size);\n\tfont-weight: bold;\n\tmin-height: $clickable-area;\n\tmin-width: $clickable-area;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\n\t// Cursor pointer on element and all children\n\tcursor: pointer;\n\t& * {\n\t\tcursor: pointer;\n\t}\n\tborder-radius: math.div($clickable-area, 2);\n\ttransition: background-color 0.1s linear !important;\n\ttransition: border 0.1s linear;\n\n\t// No outline feedback for focus. Handled with a toggled class in js (see data)\n\t&:focus {\n\t\toutline: none;\n\t}\n\n\t&:disabled {\n\t\tcursor: default;\n\t\t& * {\n\t\t\tcursor: default;\n\t\t}\n\t\topacity: $opacity_disabled;\n\t\t// Gives a wash out effect\n\t\tfilter: saturate($opacity_normal);\n\t}\n\n\t// Default button type\n\tbackground-color: var(--color-primary-element-lighter);\n\tcolor: var(--color-primary-light-text);\n\t&:hover:not(:disabled) {\n\t\tbackground-color: var(--color-primary-light-hover);\n\t}\n\n\t// Back to the default color for this button when active\n\t// TODO: add ripple effect\n\t&:active {\n\t\tbackground-color: var(--color-primary-element-lighter);\n\t}\n\n\t&__wrapper {\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tjustify-content: space-around;\n\t}\n\n\t&__icon {\n\t\theight: $clickable-area;\n\t\twidth: $clickable-area;\n\t\tmin-height: $clickable-area;\n\t\tmin-width: $clickable-area;\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t}\n\n\t&__text {\n\t\tfont-weight: bold;\n\t\tmargin-bottom: 1px;\n\t\tpadding: 2px 0;\n\t}\n\n\t// Icon-only button\n\t&--icon-only {\n\t\twidth: $clickable-area !important;\n\t}\n\n\t// Text-only button\n\t&--text-only {\n\t\tpadding: 0 12px;\n\t\t& .button-vue__text {\n\t\t\tmargin-left: 4px;\n\t\t\tmargin-right: 4px;\n\t\t}\n\t}\n\n\t// Icon and text button\n\t&--icon-and-text {\n\t\tpadding: 0 16px 0 4px;\n\t}\n\n\t// Wide button spans the whole width of the container\n\t&--wide {\n\t\twidth: 100%;\n\t}\n\n\t// We use box-shadow around our buttons instead of an outline, so that the added \"border\"\n\t// coincides with the border of the element. It's not possible to add a border-radius to\n\t// the outline\n\t&--tabbed, &:focus-visible {\n\t\tbox-shadow: 0 0 0 2px var(--color-main-text);\n\t\tbackground-color: var(--color-primary-light-hover);\n\t\t&.button-vue--vue-primary {\n\t\t\tbackground-color: var(--color-primary-hover);\n\t\t}\n\t\t&.button-vue--vue-secondary {\n\t\t\tbox-shadow: 0 0 0 2px var(--color-main-text);\n\t\t}\n\t\t&.button-vue--vue-tertiary-no-background {\n\t\t\topacity: 1;\n\t\t}\n\t\t&.button-vue--vue-tertiary-on-primary {\n\t\t\tbox-shadow: 0 0 0 2px var(--color-primary-text);\n\t\t\tborder-radius: var(--border-radius);\n\t\t\topacity: 1;\n\t\t\tbackground-color: transparent;\n\t\t}\n\t\t&.button-vue--vue-success {\n\t\t\tbackground-color: var(--color-success-hover);\n\t\t}\n\t\t&.button-vue--vue-warning {\n\t\t\tbackground-color: var(--color-warning-hover);\n\t\t}\n\t\t&.button-vue--vue-error {\n\t\t\tbackground-color: var(--color-error-hover);\n\t\t}\n\t}\n\n\t// Button types\n\n\t// Primary\n\t&--vue-primary {\n\t\tbackground-color: var(--color-primary-element);\n\t\tcolor: var(--color-primary-text);\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: var(--color-primary-element-hover);\n\t\t}\n\t\t// Back to the default color for this button when active\n\t\t// TODO: add ripple effect\n\t\t&:active {\n\t\t\tbackground-color: var(--color-primary-element);\n\t\t}\n\t}\n\n\t// Secondary\n\t&--vue-secondary {\n\t\tcolor: var(--color-main-text);\n\t\tbackground-color: var(--color-background-dark);\n\t\tbox-shadow: 0 0 0 2px var(--color-border-dark);\n\t\t&:hover:not(:disabled) {\n\t\t\tcolor: var(--color-main-text);\n\t\t\tbackground-color: var(--color-background-dark);\n\t\t\tbox-shadow: 0 0 0 2px var(--color-primary-element);\n\t\t}\n\t}\n\n\t// Tertiary\n\t&--vue-tertiary {\n\t\tcolor: var(--color-main-text);\n\t\tbackground-color: transparent;\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: var(--color);\n\t\t\tbackground-color: var(--color-background-hover);\n\t\t}\n\t}\n\n\t// Tertiary, no background\n\t&--vue-tertiary-no-background {\n\t\tcolor: var(--color-main-text);\n\t\tbackground-color: transparent;\n\t\topacity: .7;\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: transparent;\n\t\t\topacity: 1;\n\t\t}\n\t}\n\n\t// Tertiary on primary color (like the header)\n\t&--vue-tertiary-on-primary {\n\t\tcolor: var(--color-primary-text);\n\t\tbackground-color: transparent;\n\t\topacity: .7;\n\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: transparent;\n\t\t\topacity: 1;\n\t\t}\n\t}\n\n\t// Success\n\t&--vue-success {\n\t\tbackground-color: var(--color-success);\n\t\tcolor: white;\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: var(--color-success-hover);\n\t\t}\n\t\t// Back to the default color for this button when active\n\t\t// : add ripple effect\n\t\t&:active {\n\t\t\tbackground-color: var(--color-success);\n\t\t}\n\t}\n\n\t// Warning\n\t&--vue-warning {\n\t\tbackground-color: var(--color-warning);\n\t\tcolor: white;\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: var(--color-warning-hover);\n\t\t}\n\t\t// Back to the default color for this button when active\n\t\t// TODO: add ripple effect\n\t\t&:active {\n\t\t\tbackground-color: var(--color-warning);\n\t\t}\n\t}\n\n\t// Error\n\t&--vue-error {\n\t\tbackground-color: var(--color-error);\n\t\tcolor: white;\n\t\t&:hover:not(:disabled) {\n\t\t\tbackground-color: var(--color-error-hover);\n\t\t}\n\t\t// Back to the default color for this button when active\n\t\t// TODO: add ripple effect\n\t\t&:active {\n\t\t\tbackground-color: var(--color-error);\n\t\t}\n\t}\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!./NcButton.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!./NcButton.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NcButton.vue?vue&type=style&index=0&id=daf9a39c&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NcButton.vue?vue&type=style&index=0&id=daf9a39c&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./NcButton.vue?vue&type=template&id=daf9a39c&scoped=true&\"\nimport script from \"./NcButton.vue?vue&type=script&lang=js&\"\nexport * from \"./NcButton.vue?vue&type=script&lang=js&\"\nimport style0 from \"./NcButton.vue?vue&type=style&index=0&id=daf9a39c&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"daf9a39c\",\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./NcButton.vue?vue&type=custom&index=0&blockType=docs\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('root-element',_vm._g(_vm._b({staticClass:\"button-vue\",class:_vm.buttonClassObject,attrs:{\"aria-label\":_vm.ariaLabel,\"type\":_vm.nativeType,\"disabled\":_vm.disabled},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.makeActive.apply(null, arguments)},\"keyup\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.makeInactive.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"tab\",9,$event.key,\"Tab\"))return null;if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey)return null;return _vm.handleTabUp.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"tab\",9,$event.key,\"Tab\"))return null;if(!$event.shiftKey)return null;return _vm.handleTabUp.apply(null, arguments)}],\"click\":_vm.handleClick,\"blur\":_vm.handleBlur}},'root-element',_vm.rootElement,false),_vm.$listeners),[_c('span',{staticClass:\"button-vue__wrapper\"},[(_vm.hasIcon)?_c('span',{staticClass:\"button-vue__icon\"},[_vm._t(\"icon\")],2):_vm._e(),_vm._v(\" \"),(_vm.hasText)?_c('span',{staticClass:\"button-vue__text\"},[_vm._t(\"default\")],2):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 Marco Ambrosini <marcoambrosini@icloud.com>\n *\n * @author Marco Ambrosini <marcoambrosini@icloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport NcButton from './NcButton.vue'\n\nexport default NcButton\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{on:{\"mouseover\":function($event){_vm.hovered = true},\"mouseleave\":function($event){_vm.hovered = false}}},[_c(_vm.targetUrl ? 'a' : 'div',{tag:\"component\",class:{ 'item-list__entry': true, 'item-list__entry--has-actions-menu': _vm.gotMenu },attrs:{\"href\":_vm.targetUrl,\"target\":_vm.targetUrl ? '_blank' : undefined},on:{\"click\":_vm.onLinkClick}},[_vm._t(\"avatar\",function(){return [_c('NcAvatar',{staticClass:\"item-avatar\",attrs:{\"size\":44,\"url\":_vm.avatarUrl,\"user\":_vm.avatarUsername,\"is-no-user\":_vm.avatarIsNoUser,\"show-user-status\":!_vm.gotOverlayIcon}})]},{\"avatarUrl\":_vm.avatarUrl,\"avatarUsername\":_vm.avatarUsername}),_vm._v(\" \"),(_vm.overlayIconUrl)?_c('img',{staticClass:\"item-icon\",attrs:{\"alt\":\"\",\"src\":_vm.overlayIconUrl}}):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"item__details\"},[_c('h3',{attrs:{\"title\":_vm.mainText}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.mainText)+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('p',{staticClass:\"message\",attrs:{\"title\":_vm.subText}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.subText)+\"\\n\\t\\t\\t\")])]),_vm._v(\" \"),(_vm.gotMenu)?_c('NcActions',{attrs:{\"force-menu\":_vm.forceMenu,\"menu-align\":\"right\"}},[_vm._t(\"actions\",function(){return _vm._l((_vm.itemMenu),function(m,menuItemId){return _c('NcActionButton',{key:menuItemId,attrs:{\"icon\":m.icon,\"close-after-click\":true},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.$emit(menuItemId, _vm.item)}}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(m.text)+\"\\n\\t\\t\\t\\t\")])})})],2):_vm._e()],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NcDashboardWidgetItem.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!./NcDashboardWidgetItem.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2020 Julien Veyssier <eneiluj@posteo.net>\n -\n - @author Julien Veyssier <eneiluj@posteo.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<docs>\n\n### General description\n\nThis component is meant to be used inside a DashboardWidget component.\n\n</docs>\n\n<template>\n\t<div @mouseover=\"hovered = true\" @mouseleave=\"hovered = false\">\n\t\t<component :is=\"targetUrl ? 'a' : 'div'\"\n\t\t\t:href=\"targetUrl\"\n\t\t\t:target=\"targetUrl ? '_blank' : undefined\"\n\t\t\t:class=\"{ 'item-list__entry': true, 'item-list__entry--has-actions-menu': gotMenu }\"\n\t\t\t@click=\"onLinkClick\">\n\t\t\t<!-- @slot Slot for passing a user avatar. -->\n\t\t\t<slot name=\"avatar\" :avatar-url=\"avatarUrl\" :avatar-username=\"avatarUsername\">\n\t\t\t\t<NcAvatar class=\"item-avatar\"\n\t\t\t\t\t:size=\"44\"\n\t\t\t\t\t:url=\"avatarUrl\"\n\t\t\t\t\t:user=\"avatarUsername\"\n\t\t\t\t\t:is-no-user=\"avatarIsNoUser\"\n\t\t\t\t\t:show-user-status=\"!gotOverlayIcon\" />\n\t\t\t</slot>\n\t\t\t<img v-if=\"overlayIconUrl\"\n\t\t\t\tclass=\"item-icon\"\n\t\t\t\talt=\"\"\n\t\t\t\t:src=\"overlayIconUrl\">\n\t\t\t<div class=\"item__details\">\n\t\t\t\t<h3 :title=\"mainText\">\n\t\t\t\t\t{{ mainText }}\n\t\t\t\t</h3>\n\t\t\t\t<p class=\"message\" :title=\"subText\">\n\t\t\t\t\t{{ subText }}\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t\t<NcActions v-if=\"gotMenu\" :force-menu=\"forceMenu\" menu-align=\"right\">\n\t\t\t\t<!-- @slot This slot can be used to provide actions for each dashboard widget item. -->\n\t\t\t\t<slot name=\"actions\">\n\t\t\t\t\t<NcActionButton v-for=\"(m, menuItemId) in itemMenu\"\n\t\t\t\t\t\t:key=\"menuItemId\"\n\t\t\t\t\t\t:icon=\"m.icon\"\n\t\t\t\t\t\t:close-after-click=\"true\"\n\t\t\t\t\t\t@click.prevent.stop=\"$emit(menuItemId, item)\">\n\t\t\t\t\t\t{{ m.text }}\n\t\t\t\t\t</NcActionButton>\n\t\t\t\t</slot>\n\t\t\t</NcActions>\n\t\t</component>\n\t</div>\n</template>\n\n<script>\nimport NcAvatar from '../NcAvatar/index.js'\nimport NcActions from '../NcActions/index.js'\nimport NcActionButton from '../NcActionButton/index.js'\n\nexport default {\n\tname: 'NcDashboardWidgetItem',\n\tcomponents: {\n\t\tNcAvatar,\n\t\tNcActions,\n\t\tNcActionButton,\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * The item id (optional)\n\t\t */\n\t\tid: {\n\t\t\ttype: [String, Number],\n\t\t\tdefault: undefined,\n\t\t},\n\t\t/**\n\t\t * The item element is a link to this URL (optional)\n\t\t */\n\t\ttargetUrl: {\n\t\t\ttype: String,\n\t\t\tdefault: undefined,\n\t\t},\n\t\t/**\n\t\t * Where to get the avatar image. (optional) Used if avatarUsername is not defined.\n\t\t */\n\t\tavatarUrl: {\n\t\t\ttype: String,\n\t\t\tdefault: undefined,\n\t\t},\n\t\t/**\n\t\t * Name to provide to the Avatar. (optional) Used if avatarUrl is not defined.\n\t\t */\n\t\tavatarUsername: {\n\t\t\ttype: String,\n\t\t\tdefault: undefined,\n\t\t},\n\t\t/**\n\t\t * Is the avatarUsername not a user's name? (optional, false by default)\n\t\t */\n\t\tavatarIsNoUser: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t/**\n\t\t * Small icon to display on the bottom-right corner of the avatar (optional)\n\t\t */\n\t\toverlayIconUrl: {\n\t\t\ttype: String,\n\t\t\tdefault: undefined,\n\t\t},\n\t\t/**\n\t\t * Item main text (mandatory)\n\t\t */\n\t\tmainText: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\t/**\n\t\t * Item subline text (optional)\n\t\t */\n\t\tsubText: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * An object containing context menu entries that will be displayed for each items (optional)\n\t\t */\n\t\titemMenu: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => { return {} },\n\t\t},\n\n\t\t/**\n\t\t * Specify whether the 3 dot menu is forced when only one action is present\n\t\t */\n\t\tforceMenu: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\thovered: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\titem() {\n\t\t\treturn {\n\t\t\t\tid: this.id,\n\t\t\t\ttargetUrl: this.targetUrl,\n\t\t\t\tavatarUrl: this.avatarUrl,\n\t\t\t\tavatarUsername: this.avatarUsername,\n\t\t\t\toverlayIconUrl: this.overlayIconUrl,\n\t\t\t\tmainText: this.mainText,\n\t\t\t\tsubText: this.subText,\n\t\t\t}\n\t\t},\n\t\tgotMenu() {\n\t\t\treturn Object.keys(this.itemMenu).length !== 0 || !!this.$slots.actions\n\t\t},\n\t\tgotOverlayIcon() {\n\t\t\treturn this.overlayIconUrl && this.overlayIconUrl !== ''\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonLinkClick(event) {\n\t\t\tif (event.target.closest('.action-item')) {\n\t\t\t\tevent.preventDefault()\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.item-list__entry {\n\tdisplay: flex;\n\talign-items: flex-start;\n\tposition: relative;\n\tpadding: 8px;\n\n\t&:hover,\n\t&:focus {\n\t\tbackground-color: var(--color-background-hover);\n\t\tborder-radius: var(--border-radius-large);\n\t}\n\t.item-avatar {\n\t\tposition: relative;\n\t\tmargin-top: auto;\n\t\tmargin-bottom: auto;\n\t}\n\t.item__details {\n\t\tpadding-left: 8px;\n\t\tmax-height: 44px;\n\t\tflex-grow: 1;\n\t\toverflow: hidden;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\n\t\th3,\n\t\t.message {\n\t\t\twhite-space: nowrap;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t}\n\t\t.message span {\n\t\t\twidth: 10px;\n\t\t\tdisplay: inline-block;\n\t\t\tmargin-bottom: -3px;\n\t\t}\n\t\th3 {\n\t\t\tfont-size: 100%;\n\t\t\tmargin: 0;\n\t\t}\n\t\t.message {\n\t\t\twidth: 100%;\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t}\n\t}\n\n\t.item-icon {\n\t\tposition: relative;\n\t\twidth: 14px;\n\t\theight: 14px;\n\t\tmargin: 27px -3px 0px -7px;\n\t}\n\n\tbutton.primary {\n\t\tpadding: 21px;\n\t\tmargin: 0;\n\t}\n}\n/*\n.content-popover {\n\theight: 0px;\n\twidth: 0px;\n\tmargin-left: auto;\n\tmargin-right: auto;\n}\n.popover-container {\n\twidth: 100%;\n\theight: 0px;\n}\n*/\n</style>\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NcDashboardWidgetItem.vue?vue&type=style&index=0&id=333a3450&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NcDashboardWidgetItem.vue?vue&type=style&index=0&id=333a3450&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./NcDashboardWidgetItem.vue?vue&type=template&id=333a3450&scoped=true&\"\nimport script from \"./NcDashboardWidgetItem.vue?vue&type=script&lang=js&\"\nexport * from \"./NcDashboardWidgetItem.vue?vue&type=script&lang=js&\"\nimport style0 from \"./NcDashboardWidgetItem.vue?vue&type=style&index=0&id=333a3450&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"333a3450\",\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./NcDashboardWidgetItem.vue?vue&type=custom&index=0&blockType=docs\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","import NcDashboardWidgetItem from './NcDashboardWidgetItem.vue'\n\nexport default NcDashboardWidgetItem\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"empty-content\",attrs:{\"role\":\"note\"}},[(_vm.hasIcon)?_c('div',{staticClass:\"empty-content__icon\"},[_vm._t(\"icon\")],2):_vm._e(),_vm._v(\" \"),(_vm.hasTitle)?_c('h2',{staticClass:\"empty-content__title\"},[_vm._t(\"default\")],2):_vm._e(),_vm._v(\" \"),(_vm.hasDescription)?_c('p',[_vm._t(\"desc\")],2):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NcEmptyContent.vue?vue&type=style&index=0&id=cd2d9e14&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NcEmptyContent.vue?vue&type=style&index=0&id=cd2d9e14&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./NcEmptyContent.vue?vue&type=template&id=cd2d9e14&scoped=true&\"\nimport script from \"./NcEmptyContent.vue?vue&type=script&lang=js&\"\nexport * from \"./NcEmptyContent.vue?vue&type=script&lang=js&\"\nimport style0 from \"./NcEmptyContent.vue?vue&type=style&index=0&id=cd2d9e14&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"cd2d9e14\",\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./NcEmptyContent.vue?vue&type=custom&index=0&blockType=docs\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","<!--\n - @copyright Copyright (c) 2020 Greta Doci <gretadoci@gmail.com>\n -\n - @author 2020 Greta Doci <gretadoci@gmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<docs>\n### Basic use\n\nUse this component to display a message about an empty content.\nProviding an icon, title, and a description is strongly advised.\n\n```\n<NcEmptyContent>\n\tNo comments\n\t<template #icon>\n\t\t<Comment />\n\t</template>\n\t<template #desc>No comments in here</template>\n</NcEmptyContent>\n```\n```\n<template>\n\t<NcEmptyContent>\n\t\tNetwork error\n\t\t<template #icon>\n\t\t\t<Airplane />\n\t\t</template>\n\t\t<template #desc>Unable to load the list</template>\n\t</NcEmptyContent>\n</template>\n\n<script>\nimport Airplane from 'vue-material-design-icons/Airplane'\nimport Comment from 'vue-material-design-icons/Comment'\n\nexport default {\n\tcomponents: {\n\t\tAirplane,\n\t\tComment,\n\t}\n}\n</script>\n\n```\n</docs>\n\n<template>\n\t<div class=\"empty-content\" role=\"note\">\n\t\t<div v-if=\"hasIcon\" class=\"empty-content__icon\">\n\t\t\t<!-- @slot Optional material design icon -->\n\t\t\t<slot name=\"icon\" />\n\t\t</div>\n\t\t<h2 v-if=\"hasTitle\" class=\"empty-content__title\">\n\t\t\t<!-- @slot Optional title -->\n\t\t\t<slot />\n\t\t</h2>\n\t\t<p v-if=\"hasDescription\">\n\t\t\t<!-- @slot Optional description -->\n\t\t\t<slot name=\"desc\" />\n\t\t</p>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tname: 'NcEmptyContent',\n\n\tdata() {\n\t\treturn {\n\t\t\t/**\n\t\t\t * Making sure the slots are reactive\n\t\t\t */\n\t\t\tslots: this.$slots,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\thasIcon() {\n\t\t\treturn this.slots.icon !== undefined\n\t\t},\n\n\t\thasTitle() {\n\t\t\treturn this.slots?.default !== undefined\n\t\t\t\t&& this.slots?.default[0]?.text\n\t\t},\n\n\t\thasDescription() {\n\t\t\treturn this.slots?.desc !== undefined\n\t\t\t\t&& this.slots?.desc[0]?.text\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.empty-content {\n\tdisplay: flex;\n\talign-items: center;\n\tflex-direction: column;\n\tmargin-top: 20vh;\n\n\t&__icon {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\twidth: 64px;\n\t\theight: 64px;\n\t\tmargin: 0 auto 15px;\n\t\topacity: .4;\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: center;\n\t\tbackground-size: 64px;\n\n\t\t:deep(svg) {\n\t\t\twidth: 64px;\n\t\t\theight: 64px;\n\t\t}\n\t}\n\n\t&__title {\n\t\tmargin-bottom: 10px;\n\t\ttext-align: center;\n\t}\n}\n</style>\n","/**\n * @copyright Copyright (c) 2020 Greta Doci <gretadoci@gmail.com>\n *\n * @author 2020 Greta Doci <gretadoci@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport NcEmptyContent from './NcEmptyContent.vue'\n\nexport default NcEmptyContent\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',{staticClass:\"material-design-icon loading-icon\",attrs:{\"aria-label\":_vm.title,\"role\":\"img\"}},[_c('svg',{attrs:{\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"fill\":_vm.colors[0],\"d\":\"M12,4V2A10,10 0 1,0 22,12H20A8,8 0 1,1 12,4Z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"fill\":_vm.colors[1],\"d\":\"M12,4V2A10,10 0 0,1 22,12H20A8,8 0 0,0 12,4Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NcLoadingIcon.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!./NcLoadingIcon.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2022 Raimund Schlüßler <raimund.schluessler@mailbox.org>\n -\n - @author Raimund Schlüßler <raimund.schluessler@mailbox.org>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<docs>\n# Usage\n\n```\n<div>\n\t<NcLoadingIcon />\n</div>\n<div style=\"background-color: #171717;\">\n\t<NcLoadingIcon :size=\"64\" appearance=\"light\" title=\"Loading on dark background\" />\n</div>\n<div style=\"background-color: #fff;\">\n\t<NcLoadingIcon :size=\"64\" appearance=\"dark\" title=\"Loading on light background\" />\n</div>\n```\n</docs>\n\n<template>\n\t<span :aria-label=\"title\"\n\t\trole=\"img\"\n\t\tclass=\"material-design-icon loading-icon\">\n\t\t<svg :width=\"size\"\n\t\t\t:height=\"size\"\n\t\t\tviewBox=\"0 0 24 24\">\n\t\t\t<path :fill=\"colors[0]\" d=\"M12,4V2A10,10 0 1,0 22,12H20A8,8 0 1,1 12,4Z\" />\n\t\t\t<path :fill=\"colors[1]\" d=\"M12,4V2A10,10 0 0,1 22,12H20A8,8 0 0,0 12,4Z\">\n\t\t\t\t<title v-if=\"title\">{{ title }}</title>\n\t\t\t</path>\n\t\t</svg>\n\t</span>\n</template>\n\n<script>\nexport default {\n\tname: 'NcLoadingIcon',\n\tprops: {\n\t\t/**\n\t\t * Specify the size of the loading icon.\n\t\t */\n\t\tsize: {\n\t\t\ttype: Number,\n\t\t\tdefault: 20,\n\t\t},\n\t\t/**\n\t\t * The appearance of the loading icon.\n\t\t * 'auto' adjusts to the Nextcloud color scheme,\n\t\t * 'light' and 'dark' are static.\n\t\t */\n\t\tappearance: {\n\t\t\ttype: String,\n\t\t\tvalidator(value) {\n\t\t\t\treturn ['auto', 'light', 'dark'].includes(value)\n\t\t\t},\n\t\t\tdefault: 'auto',\n\t\t},\n\t\t/**\n\t\t * Specify what is loading.\n\t\t */\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tcomputed: {\n\t\tcolors() {\n\t\t\tconst colors = ['#777', '#CCC']\n\t\t\tif (this.appearance === 'light') {\n\t\t\t\treturn colors\n\t\t\t} else if (this.appearance === 'dark') {\n\t\t\t\treturn colors.reverse()\n\t\t\t}\n\t\t\treturn ['var(--color-loading-light)', 'var(--color-loading-dark)']\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.loading-icon svg{\n\tanimation: rotate var(--animation-duration, 0.8s) linear infinite;\n}\n</style>\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NcLoadingIcon.vue?vue&type=style&index=0&id=c4a9cada&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NcLoadingIcon.vue?vue&type=style&index=0&id=c4a9cada&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./NcLoadingIcon.vue?vue&type=template&id=c4a9cada&scoped=true&\"\nimport script from \"./NcLoadingIcon.vue?vue&type=script&lang=js&\"\nexport * from \"./NcLoadingIcon.vue?vue&type=script&lang=js&\"\nimport style0 from \"./NcLoadingIcon.vue?vue&type=style&index=0&id=c4a9cada&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c4a9cada\",\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./NcLoadingIcon.vue?vue&type=custom&index=0&blockType=docs\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","/**\n * @copyright Copyright (c) 2022 Raimund Schlüßler <raimund.schluessler@mailbox.org>\n *\n * @author Raimund Schlüßler <raimund.schluessler@mailbox.org>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport NcLoadingIcon from './NcLoadingIcon.vue'\n\nexport default NcLoadingIcon\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('Dropdown',_vm._g(_vm._b({ref:\"popover\",attrs:{\"distance\":10,\"arrow-padding\":10,\"popper-class\":_vm.popoverBaseClass},scopedSlots:_vm._u([{key:\"popper\",fn:function(){return [_vm._t(\"default\")]},proxy:true}],null,true)},'Dropdown',_vm.$attrs,false),_vm.$listeners),[_vm._t(\"trigger\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2019 Marco Ambrosini <marcoambrosini@icloud.com>\n -\n - @author Marco Ambrosini <marcoambrosini@icloud.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n-->\n\n<docs>\n\n### General description\n\nThis component is just a wrapper for the floating-vue plugin by Akryum,\nplease refer to this documentation for customization:\nhttps://github.com/Akryum/floating-vue\n\nThis components has two slots:\n* 'trigger' which can be any html element and it will trigger the popover\nthis slot is optional since you can toggle the popover also by updating the\nopen prop on this component;\n\n* a default slot that is for the content of the popover.\n\n### Examples\n\n#### With a `<button>` as a trigger:\n\n```vue\n<template>\n\t<NcPopover>\n\t\t<template #trigger>\n\t\t\t<ButtonVue> I am the trigger </ButtonVue>\n\t\t</template>\n\t\t<template>\n\t\t\t<form tabindex=\"0\" @submit.prevent>\n\t\t\t\t<h2>this is some content</h2>\n\t\t\t\t<p>\n\t\t\t\t\tLorem ipsum dolor sit amet, consectetur adipiscing elit. </br>\n\t\t\t\t\tVestibulum eget placerat velit.\n\t\t\t\t</p>\n\t\t\t\t<label>\n\t\t\t\t\tLabel element\n\t\t\t\t\t<input type=\"text\" placehold=\"input element\" />\n\t\t\t\t</label>\n\t\t\t</form>\n\t\t</template>\n\t</NcPopover>\n</template>\n```\n\n#### Without focus trap:\n\nThe [`focus-trap`](https://github.com/focus-trap/focus-trap) emits an error when used in a non-focusable element tree.\n\nThe prop `:focus-trap=\"false\"` help to prevent it when the default behavior is not relevant.\n\n```vue\n<template>\n\t<NcPopover :focus-trap=\"false\">\n\t\t<template #trigger>\n\t\t\t<ButtonVue> Click me! </ButtonVue>\n\t\t</template>\n\t\t<template>\n\t\t\tHi! 🚀\n\t\t</template>\n\t</NcPopover>\n</template>\n```\n</docs>\n\n<template>\n\t<Dropdown ref=\"popover\"\n\t\t:distance=\"10\"\n\t\t:arrow-padding=\"10\"\n\t\tv-bind=\"$attrs\"\n\t\t:popper-class=\"popoverBaseClass\"\n\t\tv-on=\"$listeners\">\n\t\t<!-- This will be the popover target (for the events and position) -->\n\t\t<slot name=\"trigger\" />\n\t\t<!-- This will be the content of the popover -->\n\t\t<template #popper>\n\t\t\t<slot />\n\t\t</template>\n\t</Dropdown>\n</template>\n\n<script>\nimport { Dropdown } from 'floating-vue'\nimport { createFocusTrap } from 'focus-trap'\n\nexport default {\n\tname: 'NcPopover',\n\tcomponents: {\n\t\tDropdown,\n\t},\n\n\tprops: {\n\t\tpopoverBaseClass: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * Enable popover focus trap\n\t\t */\n\t\tfocusTrap: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\n\temits: [\n\t\t'after-show',\n\t\t'after-hide',\n\t],\n\n\tmounted() {\n\t\tthis.$watch(\n\t\t\t() => {\n\t\t\t\t// required because v-tooltip doesn't provide events\n\t\t\t\t// and @show is too early\n\t\t\t\t// see https://github.com/Akryum/v-tooltip/issues/661\n\t\t\t\treturn this.$refs.popover.$refs.popper.isShown\n\t\t\t},\n\t\t\t(val) => {\n\t\t\t\tif (val) {\n\t\t\t\t\tthis.afterShow()\n\t\t\t\t} else {\n\t\t\t\t\tthis.afterHide()\n\t\t\t\t}\n\t\t\t}\n\t\t)\n\t},\n\n\tbeforeDestroy() {\n\t\tthis.clearFocusTrap()\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Add focus trap for accessibility.\n\t\t */\n\t\tasync useFocusTrap() {\n\t\t\tawait this.$nextTick()\n\n\t\t\tif (!this.focusTrap) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst el = this.$refs.popover?.$refs.popperContent?.$el\n\n\t\t\tif (!el) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.$focusTrap = createFocusTrap(el, {\n\t\t\t\t// Prevents to lose focus using esc key\n\t\t\t\t// Focus will be release when popover be hide\n\t\t\t\tescapeDeactivates: false,\n\t\t\t\tallowOutsideClick: true,\n\t\t\t})\n\t\t\tthis.$focusTrap.activate()\n\t\t},\n\t\t/**\n\t\t * Remove focus trap\n\t\t *\n\t\t * @param {object} options The configuration options for focusTrap\n\t\t */\n\t\tclearFocusTrap(options = {}) {\n\t\t\ttry {\n\t\t\t\tthis.$focusTrap?.deactivate(options)\n\t\t\t\tthis.$focusTrap = null\n\t\t\t} catch (err) {\n\t\t\t\tconsole.warn(err)\n\t\t\t}\n\t\t},\n\t\tafterShow() {\n\t\t\t/**\n\t\t\t * Triggered after the tooltip was visually displayed.\n\t\t\t *\n\t\t\t * This is different from the 'show' and 'apply-show' which\n\t\t\t * run earlier than this where there is no guarantee that the\n\t\t\t * tooltip is already visible and in the DOM.\n\t\t\t */\n\t\t\tthis.$emit('after-show')\n\t\t\tthis.useFocusTrap()\n\t\t},\n\t\tafterHide() {\n\t\t\t/**\n\t\t\t * Triggered after the tooltip was visually hidden.\n\t\t\t */\n\t\t\tthis.$emit('after-hide')\n\t\t\tthis.clearFocusTrap()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n\n.resize-observer {\n\tposition:absolute;\n\ttop:0;\n\tleft:0;\n\tz-index:-1;\n\twidth:100%;\n\theight:100%;\n\tborder:none;\n\tbackground-color:transparent;\n\tpointer-events:none;\n\tdisplay:block;\n\toverflow:hidden;\n\topacity:0\n}\n\n.resize-observer object {\n\tdisplay:block;\n\tposition:absolute;\n\ttop:0;\n\tleft:0;\n\theight:100%;\n\twidth:100%;\n\toverflow:hidden;\n\tpointer-events:none;\n\tz-index:-1\n}\n\n$arrow-width: 10px;\n\n.v-popper--theme-dropdown {\n\t&.v-popper__popper {\n\t\tz-index: 100000;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tdisplay: block !important;\n\n\t\tfilter: drop-shadow(0 1px 10px var(--color-box-shadow));\n\n\t\t.v-popper__inner {\n\t\t\tpadding: 0;\n\t\t\tcolor: var(--color-main-text);\n\t\t\tborder-radius: var(--border-radius);\n\t\t\toverflow: hidden;\n\t\t\tbackground: var(--color-main-background);\n\t\t}\n\n\t\t.v-popper__arrow-container {\n\t\t\tposition: absolute;\n\t\t\tz-index: 1;\n\t\t\twidth: 0;\n\t\t\theight: 0;\n\t\t\tborder-style: solid;\n\t\t\tborder-color: transparent;\n\t\t\tborder-width: $arrow-width;\n\t\t}\n\n\t\t&[data-popper-placement^='top'] .v-popper__arrow-container {\n\t\t\tbottom: -$arrow-width;\n\t\t\tborder-bottom-width: 0;\n\t\t\tborder-top-color: var(--color-main-background);\n\t\t}\n\n\t\t&[data-popper-placement^='bottom'] .v-popper__arrow-container {\n\t\t\ttop: -$arrow-width;\n\t\t\tborder-top-width: 0;\n\t\t\tborder-bottom-color: var(--color-main-background);\n\t\t}\n\n\t\t&[data-popper-placement^='right'] .v-popper__arrow-container {\n\t\t\tleft: -$arrow-width;\n\t\t\tborder-left-width: 0;\n\t\t\tborder-right-color: var(--color-main-background);\n\t\t}\n\n\t\t&[data-popper-placement^='left'] .v-popper__arrow-container {\n\t\t\tright: -$arrow-width;\n\t\t\tborder-right-width: 0;\n\t\t\tborder-left-color: var(--color-main-background);\n\t\t}\n\n\t\t&[aria-hidden='true'] {\n\t\t\tvisibility: hidden;\n\t\t\ttransition: opacity var(--animation-quick), visibility var(--animation-quick);\n\t\t\topacity: 0;\n\t\t}\n\n\t\t&[aria-hidden='false'] {\n\t\t\tvisibility: visible;\n\t\t\ttransition: opacity var(--animation-quick);\n\t\t\topacity: 1;\n\t\t}\n\t}\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!./NcPopover.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!./NcPopover.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NcPopover.vue?vue&type=style&index=0&id=0875f306&prod&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NcPopover.vue?vue&type=style&index=0&id=0875f306&prod&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./NcPopover.vue?vue&type=template&id=0875f306&\"\nimport script from \"./NcPopover.vue?vue&type=script&lang=js&\"\nexport * from \"./NcPopover.vue?vue&type=script&lang=js&\"\nimport style0 from \"./NcPopover.vue?vue&type=style&index=0&id=0875f306&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./NcPopover.vue?vue&type=custom&index=0&blockType=docs\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","/**\n * @copyright Copyright (c) 2019 Marco Ambrosini <marcoambrosini@icloud.com>\n *\n * @author Marco Ambrosini <marcoambrosini@icloud.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport NcPopover from './NcPopover.vue'\n\nexport default NcPopover\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('ul',{staticClass:\"popover__menu\"},_vm._l((_vm.menu),function(item,key){return _c('NcPopoverMenuItem',{key:key,attrs:{\"item\":item}})}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NcPopoverMenuItem.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!./NcPopoverMenuItem.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<li class=\"popover__menuitem\">\n\t\t<!-- If item.href is set, a link will be directly used -->\n\t\t<a v-if=\"item.href\"\n\t\t\t:href=\"(item.href) ? item.href : '#' \"\n\t\t\t:target=\"(item.target) ? item.target : '' \"\n\t\t\t:download=\"item.download\"\n\t\t\tclass=\"focusable\"\n\t\t\trel=\"nofollow noreferrer noopener\"\n\t\t\t@click=\"action\">\n\t\t\t<span v-if=\"!iconIsUrl\" :class=\"item.icon\" />\n\t\t\t<img v-else :src=\"item.icon\">\n\t\t\t<p v-if=\"item.text && item.longtext\">\n\t\t\t\t<strong class=\"menuitem-text\">\n\t\t\t\t\t{{ item.text }}\n\t\t\t\t</strong><br>\n\t\t\t\t<span class=\"menuitem-text-detail\">\n\t\t\t\t\t{{ item.longtext }}\n\t\t\t\t</span>\n\t\t\t</p>\n\t\t\t<span v-else-if=\"item.text\">\n\t\t\t\t{{ item.text }}\n\t\t\t</span>\n\t\t\t<p v-else-if=\"item.longtext\">\n\t\t\t\t{{ item.longtext }}\n\t\t\t</p>\n\t\t</a>\n\n\t\t<!-- If item.input is set instead, an put will be used -->\n\t\t<span v-else-if=\"item.input\" class=\"menuitem\" :class=\"{active: item.active}\">\n\t\t\t<!-- does not show if input is checkbox -->\n\t\t\t<span v-if=\"item.input !== 'checkbox'\" :class=\"item.icon\" />\n\n\t\t\t<!-- only shows if input is text -->\n\t\t\t<form v-if=\"item.input === 'text'\"\n\t\t\t\t:class=\"item.input\"\n\t\t\t\t@submit.prevent=\"item.action\">\n\t\t\t\t<input :type=\"item.input\"\n\t\t\t\t\t:value=\"item.value\"\n\t\t\t\t\t:placeholder=\"item.text\"\n\t\t\t\t\trequired>\n\t\t\t\t<input type=\"submit\" value=\"\" class=\"icon-confirm\">\n\t\t\t</form>\n\n\t\t\t<!-- checkbox -->\n\t\t\t<template v-else>\n\t\t\t\t<!-- eslint-disable-next-line -->\n\t\t\t\t<input :id=\"key\" v-model=\"item.model\"\n\t\t\t\t\t:type=\"item.input\"\n\t\t\t\t\t:class=\"item.input\"\n\t\t\t\t\t@change=\"item.action\">\n\t\t\t\t<label :for=\"key\" @click.stop.prevent=\"item.action\">\n\t\t\t\t\t{{ item.text }}\n\t\t\t\t</label>\n\t\t\t</template>\n\t\t</span>\n\n\t\t<!-- If item.action is set instead, a button will be used -->\n\t\t<button v-else-if=\"item.action\"\n\t\t\tclass=\"menuitem focusable\"\n\t\t\t:class=\"{active: item.active}\"\n\t\t\t:disabled=\"item.disabled\"\n\t\t\ttype=\"button\"\n\t\t\t@click.stop.prevent=\"item.action\">\n\t\t\t<span :class=\"item.icon\" />\n\t\t\t<p v-if=\"item.text && item.longtext\">\n\t\t\t\t<strong class=\"menuitem-text\">\n\t\t\t\t\t{{ item.text }}\n\t\t\t\t</strong><br>\n\t\t\t\t<span class=\"menuitem-text-detail\">\n\t\t\t\t\t{{ item.longtext }}\n\t\t\t\t</span>\n\t\t\t</p>\n\t\t\t<span v-else-if=\"item.text\">\n\t\t\t\t{{ item.text }}\n\t\t\t</span>\n\t\t\t<p v-else-if=\"item.longtext\">\n\t\t\t\t{{ item.longtext }}\n\t\t\t</p>\n\t\t</button>\n\n\t\t<!-- If item.longtext is set AND the item does not have an action -->\n\t\t<span v-else class=\"menuitem\" :class=\"{active: item.active}\">\n\t\t\t<span :class=\"item.icon\" />\n\t\t\t<p v-if=\"item.text && item.longtext\">\n\t\t\t\t<strong class=\"menuitem-text\">\n\t\t\t\t\t{{ item.text }}\n\t\t\t\t</strong><br>\n\t\t\t\t<span class=\"menuitem-text-detail\">\n\t\t\t\t\t{{ item.longtext }}\n\t\t\t\t</span>\n\t\t\t</p>\n\t\t\t<span v-else-if=\"item.text\">\n\t\t\t\t{{ item.text }}\n\t\t\t</span>\n\t\t\t<p v-else-if=\"item.longtext\">\n\t\t\t\t{{ item.longtext }}\n\t\t\t</p>\n\t\t</span>\n\t</li>\n</template>\n\n<script>\nexport default {\n\tname: 'NcPopoverMenuItem',\n\tprops: {\n\t\titem: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t\tdefault: () => {\n\t\t\t\treturn {\n\t\t\t\t\tkey: 'nextcloud-link',\n\t\t\t\t\thref: 'https://nextcloud.com',\n\t\t\t\t\ticon: 'icon-links',\n\t\t\t\t\ttext: 'Nextcloud',\n\t\t\t\t}\n\t\t\t},\n\t\t\t// check the input types\n\t\t\t// TODO: add more validation of types\n\t\t\tvalidator: item => {\n\t\t\t\t// TODO: support radio\n\t\t\t\tif (item.input) {\n\t\t\t\t\treturn ['text', 'checkbox'].indexOf(item.input) !== -1\n\t\t\t\t}\n\t\t\t\treturn true\n\t\t\t},\n\t\t},\n\t},\n\tcomputed: {\n\t\t// random key for inputs binding if not provided\n\t\tkey() {\n\t\t\treturn this.item.key\n\t\t\t\t? this.item.key\n\t\t\t\t: Math.round(Math.random() * 16 * 1000000).toString(16)\n\t\t},\n\t\ticonIsUrl() {\n\t\t\ttry {\n\t\t\t\t// eslint-disable-next-line no-new\n\t\t\t\tnew URL(this.item.icon)\n\t\t\t\treturn true\n\t\t\t} catch (_) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\t// allow us to use both link and an action on `a`\n\t\t// we still need to make sure item.action exists\n\t\taction(event) {\n\t\t\tif (this.item.action) {\n\t\t\t\tthis.item.action(event)\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style scoped>\n\tbutton.menuitem {\n\t\ttext-align: left;\n\t}\n\n\tbutton.menuitem * {\n\t\tcursor: pointer;\n\t}\n\n\tbutton.menuitem:disabled {\n\t\topacity: 0.5 !important;\n\t\tcursor: default;\n\t}\n\n\tbutton.menuitem:disabled * {\n\t\tcursor: default;\n\t}\n\n\t.menuitem.active {\n\t\tbox-shadow: inset 2px 0 var(--color-primary);\n\t\tborder-radius: 0;\n\t}\n</style>\n\n<style lang=\"scss\" scoped>\nli {\n\tdisplay: flex;\n\tflex: 0 0 auto;\n\n\t&.hidden {\n\t\tdisplay: none;\n\t}\n\n\t> button,\n\t> a,\n\t> .menuitem {\n\t\tcursor: pointer;\n\t\tline-height: $clickable-area;\n\t\tborder: 0;\n\t\tborder-radius: 0; // otherwise Safari will cut the border-radius area\n\t\tbackground-color: transparent;\n\t\tdisplay: flex;\n\t\talign-items: flex-start;\n\t\theight: auto;\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\tfont-weight: normal;\n\t\tbox-shadow: none;\n\t\twidth: 100%;\n\t\tcolor: var(--color-main-text);\n\t\twhite-space: nowrap;\n\t\topacity: $opacity_normal;\n\n\t\t// TODO split into individual components for readability\n\t\tspan[class^='icon-'],\n\t\tspan[class*=' icon-'],\n\t\t&[class^='icon-'],\n\t\t&[class*=' icon-'] {\n\t\t\tmin-width: 0; /* Overwrite icons*/\n\t\t\tmin-height: 0;\n\t\t\tbackground-position: #{$icon-margin} center;\n\t\t\tbackground-size: $icon-size;\n\t\t}\n\n\t\tspan[class^='icon-'],\n\t\tspan[class*=' icon-'] {\n\t\t\t/* Keep padding to define the width to\n\t\t\t\tassure correct position of a possible text */\n\t\t\tpadding: #{math.div($clickable-area, 2)} 0 #{math.div($clickable-area, 2)} $clickable-area;\n\t\t}\n\n\t\t// If no icons set, force left margin to align\n\t\t&:not([class^='icon-']):not([class*='icon-']) {\n\t\t\t> span,\n\t\t\t> input,\n\t\t\t> form {\n\t\t\t\t&:not([class^='icon-']):not([class*='icon-']):first-child {\n\t\t\t\t\tmargin-left: $clickable-area;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&[class^='icon-'],\n\t\t&[class*=' icon-'] {\n\t\t\tpadding: 0 $icon-margin 0 $clickable-area;\n\t\t}\n\n\t\t&:not(:disabled):hover,\n\t\t&:not(:disabled):focus,\n\t\t&:not(:disabled).active {\n\t\t\topacity: $opacity_full !important;\n\t\t}\n\n\t\t/* prevent .action class to break the design */\n\t\t&.action {\n\t\t\tpadding: inherit !important;\n\t\t}\n\n\t\t> span {\n\t\t\tcursor: pointer;\n\t\t\twhite-space: nowrap;\n\t\t}\n\n\t\t// long text area\n\t\t> p {\n\t\t\twidth: 150px;\n\t\t\tline-height: 1.6em;\n\t\t\tpadding: 8px 0;\n\t\t\twhite-space: normal;\n\n\t\t\t// in case there are no spaces like long email addresses\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t}\n\n\t\t// TODO: do we really supports it?\n\t\t> select {\n\t\t\tmargin: 0;\n\t\t\tmargin-left: 6px;\n\t\t}\n\n\t\t/* Add padding if contains icon+text */\n\t\t&:not(:empty) {\n\t\t\tpadding-right: $icon-margin !important;\n\t\t}\n\n\t\t/* DEPRECATED! old img in popover fallback\n\t\t\t* TODO: to remove */\n\t\t> img {\n\t\t\twidth: $icon-size;\n\t\t\theight: $icon-size;\n\t\t\tmargin: $icon-margin;\n\t\t}\n\n\t\t/* checkbox/radio fixes */\n\t\t> input.radio + label,\n\t\t> input.checkbox + label {\n\t\t\tpadding: 0 !important;\n\t\t\twidth: 100%;\n\t\t}\n\t\t> input.checkbox + label::before {\n\t\t\tmargin: -2px 13px 0;\n\t\t}\n\t\t> input.radio + label::before {\n\t\t\tmargin: -2px 12px 0;\n\t\t}\n\t\t> input:not([type=radio]):not([type=checkbox]):not([type=image]) {\n\t\t\twidth: 150px;\n\t\t}\n\n\t\t// Forms & text inputs\n\t\tform {\n\t\t\tdisplay: flex;\n\t\t\tflex: 1 1 auto;\n\t\t\t/* put a small space between text and form\n\t\t\t\tif there is an element before */\n\t\t\t&:not(:first-child) {\n\t\t\t\tmargin-left: 5px;\n\t\t\t}\n\t\t}\n\t\t/* no margin if hidden span before */\n\t\t> span.hidden + form,\n\t\t> span[style*='display:none'] + form {\n\t\t\tmargin-left: 0;\n\t\t}\n\t\t/* Inputs inside popover supports text, submit & reset */\n\t\tinput {\n\t\t\tmin-width: $clickable-area;\n\t\t\tmax-height: #{$clickable-area - 4px}; /* twice the element margin-y */\n\t\t\tmargin: 2px 0;\n\t\t\tflex: 1 1 auto;\n\t\t\t// space between inline inputs\n\t\t\t&:not(:first-child) {\n\t\t\t\tmargin-left: 5px;\n\t\t\t}\n\t\t}\n\t}\n\n\t// TODO: do that in js, should be cleaner\n\t/* css hack, only first not hidden */\n\t&:not(.hidden):not([style*='display:none']) {\n\t\t&:first-of-type {\n\t\t\t> button, > a, > .menuitem {\n\t\t\t\t> form, > input {\n\t\t\t\t\tmargin-top: $icon-margin - 2px; // minus the input margin\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t&:last-of-type {\n\t\t\t> button, > a, > .menuitem {\n\t\t\t\t> form, > input {\n\t\t\t\t\tmargin-bottom: $icon-margin - 2px; // minus the input margin\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t> button {\n\t\tpadding: 0;\n\t\tspan {\n\t\t\topacity: $opacity_full;\n\t\t}\n\t}\n}\n</style>\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NcPopoverMenuItem.vue?vue&type=style&index=0&id=695aef77&prod&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NcPopoverMenuItem.vue?vue&type=style&index=0&id=695aef77&prod&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NcPopoverMenuItem.vue?vue&type=style&index=1&id=695aef77&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NcPopoverMenuItem.vue?vue&type=style&index=1&id=695aef77&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./NcPopoverMenuItem.vue?vue&type=template&id=695aef77&scoped=true&\"\nimport script from \"./NcPopoverMenuItem.vue?vue&type=script&lang=js&\"\nexport * from \"./NcPopoverMenuItem.vue?vue&type=script&lang=js&\"\nimport style0 from \"./NcPopoverMenuItem.vue?vue&type=style&index=0&id=695aef77&prod&scoped=true&lang=css&\"\nimport style1 from \"./NcPopoverMenuItem.vue?vue&type=style&index=1&id=695aef77&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"695aef77\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('li',{staticClass:\"popover__menuitem\"},[(_vm.item.href)?_c('a',{staticClass:\"focusable\",attrs:{\"href\":(_vm.item.href) ? _vm.item.href : '#',\"target\":(_vm.item.target) ? _vm.item.target : '',\"download\":_vm.item.download,\"rel\":\"nofollow noreferrer noopener\"},on:{\"click\":_vm.action}},[(!_vm.iconIsUrl)?_c('span',{class:_vm.item.icon}):_c('img',{attrs:{\"src\":_vm.item.icon}}),_vm._v(\" \"),(_vm.item.text && _vm.item.longtext)?_c('p',[_c('strong',{staticClass:\"menuitem-text\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.item.text)+\"\\n\\t\\t\\t\")]),_c('br'),_vm._v(\" \"),_c('span',{staticClass:\"menuitem-text-detail\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.item.longtext)+\"\\n\\t\\t\\t\")])]):(_vm.item.text)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.item.text)+\"\\n\\t\\t\")]):(_vm.item.longtext)?_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.item.longtext)+\"\\n\\t\\t\")]):_vm._e()]):(_vm.item.input)?_c('span',{staticClass:\"menuitem\",class:{active: _vm.item.active}},[(_vm.item.input !== 'checkbox')?_c('span',{class:_vm.item.icon}):_vm._e(),_vm._v(\" \"),(_vm.item.input === 'text')?_c('form',{class:_vm.item.input,on:{\"submit\":function($event){$event.preventDefault();return _vm.item.action.apply(null, arguments)}}},[_c('input',{attrs:{\"type\":_vm.item.input,\"placeholder\":_vm.item.text,\"required\":\"\"},domProps:{\"value\":_vm.item.value}}),_vm._v(\" \"),_c('input',{staticClass:\"icon-confirm\",attrs:{\"type\":\"submit\",\"value\":\"\"}})]):[((_vm.item.input)==='checkbox')?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.item.model),expression:\"item.model\"}],class:_vm.item.input,attrs:{\"id\":_vm.key,\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.item.model)?_vm._i(_vm.item.model,null)>-1:(_vm.item.model)},on:{\"change\":[function($event){var $$a=_vm.item.model,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(_vm.item, \"model\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(_vm.item, \"model\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(_vm.item, \"model\", $$c)}},_vm.item.action]}}):((_vm.item.input)==='radio')?_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.item.model),expression:\"item.model\"}],class:_vm.item.input,attrs:{\"id\":_vm.key,\"type\":\"radio\"},domProps:{\"checked\":_vm._q(_vm.item.model,null)},on:{\"change\":[function($event){return _vm.$set(_vm.item, \"model\", null)},_vm.item.action]}}):_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.item.model),expression:\"item.model\"}],class:_vm.item.input,attrs:{\"id\":_vm.key,\"type\":_vm.item.input},domProps:{\"value\":(_vm.item.model)},on:{\"change\":_vm.item.action,\"input\":function($event){if($event.target.composing)return;_vm.$set(_vm.item, \"model\", $event.target.value)}}}),_vm._v(\" \"),_c('label',{attrs:{\"for\":_vm.key},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.item.action.apply(null, arguments)}}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.item.text)+\"\\n\\t\\t\\t\")])]],2):(_vm.item.action)?_c('button',{staticClass:\"menuitem focusable\",class:{active: _vm.item.active},attrs:{\"disabled\":_vm.item.disabled,\"type\":\"button\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.item.action.apply(null, arguments)}}},[_c('span',{class:_vm.item.icon}),_vm._v(\" \"),(_vm.item.text && _vm.item.longtext)?_c('p',[_c('strong',{staticClass:\"menuitem-text\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.item.text)+\"\\n\\t\\t\\t\")]),_c('br'),_vm._v(\" \"),_c('span',{staticClass:\"menuitem-text-detail\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.item.longtext)+\"\\n\\t\\t\\t\")])]):(_vm.item.text)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.item.text)+\"\\n\\t\\t\")]):(_vm.item.longtext)?_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.item.longtext)+\"\\n\\t\\t\")]):_vm._e()]):_c('span',{staticClass:\"menuitem\",class:{active: _vm.item.active}},[_c('span',{class:_vm.item.icon}),_vm._v(\" \"),(_vm.item.text && _vm.item.longtext)?_c('p',[_c('strong',{staticClass:\"menuitem-text\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.item.text)+\"\\n\\t\\t\\t\")]),_c('br'),_vm._v(\" \"),_c('span',{staticClass:\"menuitem-text-detail\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.item.longtext)+\"\\n\\t\\t\\t\")])]):(_vm.item.text)?_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.item.text)+\"\\n\\t\\t\")]):(_vm.item.longtext)?_c('p',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.item.longtext)+\"\\n\\t\\t\")]):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NcPopoverMenu.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!./NcPopoverMenu.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<docs>\n\tThis component is deprecated. Please use the [Actions](#/Components?id=actions-1) component instead.\n</docs>\n\n<template>\n\t<ul class=\"popover__menu\">\n\t\t<NcPopoverMenuItem v-for=\"(item, key) in menu\" :key=\"key\" :item=\"item\" />\n\t</ul>\n</template>\n\n<script>\nimport NcPopoverMenuItem from './NcPopoverMenuItem.vue'\n\nexport default {\n\tname: 'NcPopoverMenu',\n\tcomponents: {\n\t\tNcPopoverMenuItem,\n\t},\n\tprops: {\n\t\tmenu: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => {\n\t\t\t\treturn [{\n\t\t\t\t\thref: 'https://nextcloud.com',\n\t\t\t\t\ticon: 'icon-links',\n\t\t\t\t\ttext: 'Nextcloud',\n\t\t\t\t}]\n\t\t\t},\n\t\t\trequired: true,\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\nul {\n\tdisplay: flex;\n\tflex-direction: column;\n}\n</style>\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NcPopoverMenu.vue?vue&type=style&index=0&id=a98594e4&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NcPopoverMenu.vue?vue&type=style&index=0&id=a98594e4&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./NcPopoverMenu.vue?vue&type=template&id=a98594e4&scoped=true&\"\nimport script from \"./NcPopoverMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./NcPopoverMenu.vue?vue&type=script&lang=js&\"\nimport style0 from \"./NcPopoverMenu.vue?vue&type=style&index=0&id=a98594e4&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a98594e4\",\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./NcPopoverMenu.vue?vue&type=custom&index=0&blockType=docs\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport NcPopoverMenu from './NcPopoverMenu.vue'\n\nexport default NcPopoverMenu\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./index.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!./index.scss\";\n export default content && content.locals ? content.locals : undefined;\n","/**\n * @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { VTooltip, options } from 'floating-vue'\nimport './index.scss'\n\noptions.themes.tooltip.html = false\noptions.themes.tooltip.delay = { show: 500, hide: 200 }\noptions.themes.tooltip.distance = 10\noptions.themes.tooltip['arrow-padding'] = 3\n\nexport default VTooltip\nexport { options }\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"md5\");","/**\n * @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport usernameToColor from './usernameToColor.js'\n\nexport default usernameToColor\n","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport GenColors from '../../utils/GenColors.js'\n\nimport md5 from 'md5'\n\n/**\n * Originally taken from https://github.com/nextcloud/server/blob/master/core/js/placeholder.js\n *\n * @param {string} username Display name or user id to generate from\n * @return {object} the rgb colors as {r:255, g:255, b:255}\n */\nconst usernameToColor = function(username) {\n\t// Normalize hash\n\tlet hash = username.toLowerCase()\n\n\t// Already a md5 hash?\n\tif (hash.match(/^([0-9a-f]{4}-?){8}$/) === null) {\n\t\thash = md5(hash)\n\t}\n\n\thash = hash.replace(/[^0-9a-f]/g, '')\n\n\tconst steps = 6\n\tconst finalPalette = GenColors(steps)\n\n\t/**\n\t * Convert a string to an integer evenly\n\t *\n\t * @param {string} hash The hash to convert\n\t * @param {number} maximum Largest number allowed\n\t */\n\tfunction hashToInt(hash, maximum) {\n\t\tlet finalInt = 0\n\t\tconst result = []\n\n\t\t// Splitting evenly the string\n\t\tfor (let i = 0; i < hash.length; i++) {\n\t\t\t// chars in md5 goes up to f, hex:16\n\t\t\tresult.push(parseInt(hash.charAt(i), 16) % 16)\n\t\t}\n\n\t\t// Adds up all results\n\t\tfor (const j in result) {\n\t\t\tfinalInt += result[j]\n\t\t}\n\n\t\t// chars in md5 goes up to f, hex:16\n\t\t// make sure we're always using int in our operation\n\t\treturn parseInt(parseInt(finalInt, 10) % maximum, 10)\n\t}\n\treturn finalPalette[hashToInt(hash, steps * 3)]\n}\n\nexport default usernameToColor\n","import { getGettextBuilder } from '@nextcloud/l10n/dist/gettext.js'\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","\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport Vue from 'vue'\n\nexport default {\n\tbefore() {\n\t\t// all actions requires a valid text content\n\t\t// if none, forbid the component mount and throw error\n\t\tif (!this.$slots.default || this.text.trim() === '') {\n\t\t\tVue.util.warn(`${this.$options.name} cannot be empty and requires a meaningful text content`, this)\n\t\t\tthis.$destroy()\n\t\t\tthis.$el.remove()\n\t\t}\n\t},\n\n\tbeforeUpdate() {\n\t\tthis.text = this.getText()\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\t// $slots are not reactive.\n\t\t\t// We need to update the content manually\n\t\t\ttext: this.getText(),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisLongText() {\n\t\t\treturn this.text && this.text.trim().length > 20\n\t\t},\n\t},\n\n\tmethods: {\n\t\tgetText() {\n\t\t\treturn this.$slots.default ? this.$slots.default[0].text.trim() : ''\n\t\t},\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 AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport actionGlobal from './actionGlobal.js'\nimport GetParent from '../utils/GetParent.js'\n\nexport default {\n\tmixins: [actionGlobal],\n\tprops: {\n\t\t/**\n\t\t * Icon to show with the action, can be either a CSS class or an URL\n\t\t */\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * Title to show next to the icon\n\t\t */\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * Whether we close the Actions menu after the click\n\t\t */\n\t\tcloseAfterClick: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t/**\n\t\t * Aria label for the button. Not needed if the button has text.\n\t\t */\n\t\tariaLabel: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\n\temits: [\n\t\t'click',\n\t],\n\n\tcomputed: {\n\t\tisIconUrl() {\n\t\t\ttry {\n\t\t\t\treturn new URL(this.icon)\n\t\t\t} catch (error) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonClick(event) {\n\t\t\t/**\n\t\t\t * Emitted when the action is clicked\n\t\t\t *\n\t\t\t * @type {Event}\n\t\t\t */\n\t\t\tthis.$emit('click', event)\n\n\t\t\tif (this.closeAfterClick) {\n\t\t\t\tconst parent = GetParent(this, 'NcActions')\n\t\t\t\tif (parent && parent.closeMenu) {\n\t\t\t\t\tparent.closeMenu(false)\n\t\t\t\t}\n\t\t\t}\n\t\t},\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 AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/**\n * Get the first parent component matching the provided name\n *\n * @param {object} context the context to search from (usualy this)\n * @param {string} name the parent name\n * @return {object} the parent component\n */\nconst GetParent = function(context, name) {\n\tlet parent = context.$parent\n\twhile (parent) {\n\t\tif (parent.$options.name === name) {\n\t\t\treturn parent\n\t\t}\n\t\tparent = parent.$parent\n\t}\n}\n\nexport default GetParent\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@nextcloud/capabilities\");","/**\n * @copyright Copyright (c) 2020 Georg Ehrke <georg-nextcloud@ehrke.email>\n *\n * @author Georg Ehrke <georg-nextcloud@ehrke.email>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport { getCapabilities } from '@nextcloud/capabilities'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\thasStatus: false,\n\t\t\tuserStatus: {\n\t\t\t\tstatus: null,\n\t\t\t\tmessage: null,\n\t\t\t\ticon: null,\n\t\t\t},\n\t\t}\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Fetches the user-status from the server\n\t\t *\n\t\t * @param {string} userId UserId of the user to fetch the status for\n\t\t *\n\t\t * @return {Promise<void>}\n\t\t */\n\t\tasync fetchUserStatus(userId) {\n\t\t\tif (!userId) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst capabilities = getCapabilities()\n\t\t\tif (!Object.prototype.hasOwnProperty.call(capabilities, 'user_status') || !capabilities.user_status.enabled) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// User status endpoint is not available for guests.\n\t\t\tif (!getCurrentUser()) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst { data } = await axios.get(generateOcsUrl('apps/user_status/api/v1/statuses/{userId}', { userId }))\n\t\t\t\tconst {\n\t\t\t\t\tstatus,\n\t\t\t\t\tmessage,\n\t\t\t\t\ticon,\n\t\t\t\t} = data.ocs.data\n\t\t\t\tthis.userStatus.status = status\n\t\t\t\tthis.userStatus.message = message || ''\n\t\t\t\tthis.userStatus.icon = icon || ''\n\t\t\t\tthis.hasStatus = true\n\t\t\t} catch (e) {\n\t\t\t\tif (e.response.status === 404 && e.response.data.ocs?.data?.length === 0) {\n\t\t\t\t\t// User just has no status set, so don't log it\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tconsole.error(e)\n\t\t\t}\n\t\t},\n\t},\n}\n","/**\n * @copyright Copyright (c) 2019 Kristof Hamann, Paul Schwörer\n *\n * @author Kristof Hamann\n * @author Paul Schwörer\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\n\nexport const IsMobileState = new Vue({\n\tdata() {\n\t\treturn {\n\t\t\tisMobile: false,\n\t\t}\n\t},\n\twatch: {\n\t\tisMobile(val) {\n\t\t\tthis.$emit('changed', val)\n\t\t},\n\t},\n\tcreated() {\n\t\twindow.addEventListener('resize', this.handleWindowResize)\n\t\tthis.handleWindowResize()\n\t},\n\tbeforeDestroy() {\n\t\twindow.removeEventListener('resize', this.handleWindowResize)\n\t},\n\tmethods: {\n\t\thandleWindowResize() {\n\t\t\tthis.isMobile = document.documentElement.clientWidth < 1024\n\t\t},\n\t},\n})\n","var render = function render(){var _vm=this,_c=_vm._self._c;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))])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NcMentionBubble.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!./NcMentionBubble.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: 'NcMentionBubble',\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: math.div($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: math.div($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","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NcMentionBubble.vue?vue&type=style&index=0&id=32fccbe9&prod&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NcMentionBubble.vue?vue&type=style&index=0&id=32fccbe9&prod&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./NcMentionBubble.vue?vue&type=template&id=32fccbe9&scoped=true&\"\nimport script from \"./NcMentionBubble.vue?vue&type=script&lang=js&\"\nexport * from \"./NcMentionBubble.vue?vue&type=script&lang=js&\"\nimport style0 from \"./NcMentionBubble.vue?vue&type=style&index=0&id=32fccbe9&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"32fccbe9\",\n null\n \n)\n\nexport default component.exports","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"escape-html\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"striptags\");","/**\n * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport NcMentionBubble from '../../components/NcRichContenteditable/NcMentionBubble.vue'\nimport Linkify from '../../utils/Linkify.js'\n\nimport escapeHtml from 'escape-html'\nimport stripTags from 'striptags'\nimport Vue from 'vue'\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 * @return {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 * @return {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 * @return {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, NcMentionBubble).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 * @return {string} the rendered html\n\t\t */\n\t\trenderComponentHtml(propsData, component) {\n\t\t\tconst View = Vue.extend(component)\n\t\t\tconst Item = new View({\n\t\t\t\tpropsData,\n\t\t\t})\n\n\t\t\t// Prepare mountpoint\n\t\t\tconst wrapper = document.createElement('div')\n\t\t\tconst mount = document.createElement('div')\n\t\t\twrapper.style.display = 'none'\n\t\t\twrapper.appendChild(mount)\n\t\t\tdocument.body.appendChild(wrapper)\n\n\t\t\t// Mount and get raw html\n\t\t\tItem.$mount(mount)\n\t\t\tconst renderedHtml = wrapper.innerHTML\n\n\t\t\t// Destroy\n\t\t\tItem.$destroy()\n\t\t\twrapper.remove()\n\n\t\t\treturn renderedHtml\n\t\t},\n\t},\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\n/**\n * Originally taken from https://github.com/nextcloud/server/blob/master/core/js/placeholder.js\n */\n\n/**\n * @param {number} r The red value\n * @param {number} g The green value\n * @param {number} b The blue value\n */\nfunction Color(r, g, b) {\n\tthis.r = r\n\tthis.g = g\n\tthis.b = b\n}\n\n/**\n * Calculate the number of steps\n *\n * @param {number} steps The number of steps\n * @param {Array} ends The ends\n * @return {Array} Array containing the number of steps per color\n */\nfunction stepCalc(steps, ends) {\n\tconst step = new Array(3)\n\tstep[0] = (ends[1].r - ends[0].r) / steps\n\tstep[1] = (ends[1].g - ends[0].g) / steps\n\tstep[2] = (ends[1].b - ends[0].b) / steps\n\treturn step\n}\n\n/**\n * Create a color palette from two colors\n *\n * @param {number} steps The number of steps the palette has\n * @param {string} color1 The first color\n * @param {string} color2 The second color\n * @return {Array} The created palette array\n */\nfunction mixPalette(steps, color1, color2) {\n\tconst palette = []\n\tpalette.push(color1)\n\tconst step = stepCalc(steps, [color1, color2])\n\tfor (let i = 1; i < steps; i++) {\n\t\tconst r = parseInt(color1.r + step[0] * i, 10)\n\t\tconst g = parseInt(color1.g + step[1] * i, 10)\n\t\tconst b = parseInt(color1.b + step[2] * i, 10)\n\t\tpalette.push(new Color(r, g, b))\n\t}\n\treturn palette\n}\n\n/**\n * Generate colors from the official nextcloud color\n * You can provide how many colors you want (multiplied by 3)\n * if step = 6\n * 3 colors * 6 will result in 18 generated colors\n *\n * @param {number} [steps=6] Number of steps to go from a color to another\n * @return {object[]}\n */\nfunction GenColors(steps) {\n\tif (!steps) {\n\t\tsteps = 6\n\t}\n\n\tconst red = new Color(182, 70, 157)\n\tconst yellow = new Color(221, 203, 85)\n\tconst blue = new Color(0, 130, 201) // Nextcloud blue\n\n\tconst palette1 = mixPalette(steps, red, yellow)\n\tconst palette2 = mixPalette(steps, yellow, blue)\n\tconst palette3 = mixPalette(steps, blue, red)\n\n\treturn palette1.concat(palette2).concat(palette3)\n}\n\nexport default GenColors\n","\n/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nconst GenRandomId = (length) => {\n\treturn Math.random()\n\t\t.toString(36)\n\t\t.replace(/[^a-z]+/g, '')\n\t\t.slice(0, length || 5)\n}\n\nexport default GenRandomId\n","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"linkify-string\");","/**\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 AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport linkifyStr from 'linkify-string'\n\n/**\n * Linkify text\n *\n * @param {string} text The text to linkify\n * @return {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","// 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}.v-popper--theme-tooltip.v-popper__popper{position:absolute;z-index:100000;top:0;right:auto;left:auto;display:block;margin:0;padding:0;text-align:left;text-align:start;opacity:0;line-height:1.6;line-break:auto;filter:drop-shadow(0 1px 10px var(--color-box-shadow))}.v-popper--theme-tooltip.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-container{bottom:-10px;border-bottom-width:0;border-top-color:var(--color-main-background)}.v-popper--theme-tooltip.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-container{top:-10px;border-top-width:0;border-bottom-color:var(--color-main-background)}.v-popper--theme-tooltip.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-container{right:100%;border-left-width:0;border-right-color:var(--color-main-background)}.v-popper--theme-tooltip.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-container{left:100%;border-right-width:0;border-left-color:var(--color-main-background)}.v-popper--theme-tooltip.v-popper__popper[aria-hidden=true]{visibility:hidden;transition:opacity .15s,visibility .15s;opacity:0}.v-popper--theme-tooltip.v-popper__popper[aria-hidden=false]{visibility:visible;transition:opacity .15s;opacity:1}.v-popper--theme-tooltip .v-popper__inner{max-width:350px;padding:5px 8px;text-align:center;color:var(--color-main-text);border-radius:var(--border-radius);background-color:var(--color-main-background)}.v-popper--theme-tooltip .v-popper__arrow-container{position:absolute;z-index:1;width:0;height:0;margin:0;border-style:solid;border-color:rgba(0,0,0,0);border-width:10px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/assets/material-icons.css\",\"webpack://./src/directives/Tooltip/index.scss\"],\"names\":[],\"mappings\":\"AAGA,sBACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCQA,0CACC,iBAAA,CACA,cAAA,CACA,KAAA,CACA,UAAA,CACA,SAAA,CACA,aAAA,CACA,QAAA,CACA,SAAA,CACA,eAAA,CACA,gBAAA,CACA,SAAA,CACA,eAAA,CAEA,eAAA,CACA,sDAAA,CAGA,iGACC,YAAA,CACA,qBAAA,CACA,6CAAA,CAID,oGACC,SAAA,CACA,kBAAA,CACA,gDAAA,CAID,mGACC,UAAA,CACA,mBAAA,CACA,+CAAA,CAID,kGACC,SAAA,CACA,oBAAA,CACA,8CAAA,CAID,4DACC,iBAAA,CACA,uCAAA,CACA,SAAA,CAED,6DACC,kBAAA,CACA,uBAAA,CACA,SAAA,CAKF,0CACC,eAAA,CACA,eAAA,CACA,iBAAA,CACA,4BAAA,CACA,kCAAA,CACA,6CAAA,CAID,oDACC,iBAAA,CACA,SAAA,CACA,OAAA,CACA,QAAA,CACA,QAAA,CACA,kBAAA,CACA,0BAAA,CACA,iBAhFY\",\"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\",\"@use 'sass:math'; $scope_version:\\\"c5df3e0\\\"; @import 'variables'; @import 'material-icons';\\n/**\\n* @copyright Copyright (c) 2016, John Molakvoæ <skjnldsv@protonmail.com>\\n* @copyright Copyright (c) 2016, Robin Appelman <robin@icewind.nl>\\n* @copyright Copyright (c) 2016, Jan-Christoph Borchardt <hey@jancborchardt.net>\\n* @copyright Copyright (c) 2016, Erik Pellikka <erik@pellikka.org>\\n* @copyright Copyright (c) 2015, Vincent Petry <pvince81@owncloud.com>\\n*\\n* Bootstrap v3.3.5 (http://getbootstrap.com)\\n* Copyright 2011-2015 Twitter, Inc.\\n* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\\n*/\\n\\n$arrow-width: 10px;\\n\\n.v-popper--theme-tooltip {\\n\\t&.v-popper__popper {\\n\\t\\tposition: absolute;\\n\\t\\tz-index: 100000;\\n\\t\\ttop: 0;\\n\\t\\tright: auto;\\n\\t\\tleft: auto;\\n\\t\\tdisplay: block;\\n\\t\\tmargin: 0;\\n\\t\\tpadding: 0;\\n\\t\\ttext-align: left;\\n\\t\\ttext-align: start;\\n\\t\\topacity: 0;\\n\\t\\tline-height: 1.6;\\n\\n\\t\\tline-break: auto;\\n\\t\\tfilter: drop-shadow(0 1px 10px var(--color-box-shadow));\\n\\n\\t\\t// TOP\\n\\t\\t&[data-popper-placement^='top'] .v-popper__arrow-container {\\n\\t\\t\\tbottom: -$arrow-width;\\n\\t\\t\\tborder-bottom-width: 0;\\n\\t\\t\\tborder-top-color: var(--color-main-background);\\n\\t\\t}\\n\\n\\t\\t// BOTTOM\\n\\t\\t&[data-popper-placement^='bottom'] .v-popper__arrow-container {\\n\\t\\t\\ttop: -$arrow-width;\\n\\t\\t\\tborder-top-width: 0;\\n\\t\\t\\tborder-bottom-color: var(--color-main-background);\\n\\t\\t}\\n\\n\\t\\t// RIGHT\\n\\t\\t&[data-popper-placement^='right'] .v-popper__arrow-container {\\n\\t\\t\\tright: 100%;\\n\\t\\t\\tborder-left-width: 0;\\n\\t\\t\\tborder-right-color: var(--color-main-background);\\n\\t\\t}\\n\\n\\t\\t// LEFT\\n\\t\\t&[data-popper-placement^='left'] .v-popper__arrow-container {\\n\\t\\t\\tleft: 100%;\\n\\t\\t\\tborder-right-width: 0;\\n\\t\\t\\tborder-left-color: var(--color-main-background);\\n\\t\\t}\\n\\n\\t\\t// HIDDEN / SHOWN\\n\\t\\t&[aria-hidden='true'] {\\n\\t\\t\\tvisibility: hidden;\\n\\t\\t\\ttransition: opacity .15s, visibility .15s;\\n\\t\\t\\topacity: 0;\\n\\t\\t}\\n\\t\\t&[aria-hidden='false'] {\\n\\t\\t\\tvisibility: visible;\\n\\t\\t\\ttransition: opacity .15s;\\n\\t\\t\\topacity: 1;\\n\\t\\t}\\n\\t}\\n\\n\\t// CONTENT\\n\\t.v-popper__inner {\\n\\t\\tmax-width: 350px;\\n\\t\\tpadding: 5px 8px;\\n\\t\\ttext-align: center;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t}\\n\\n\\t// ARROW\\n\\t.v-popper__arrow-container {\\n\\t\\tposition: absolute;\\n\\t\\tz-index: 1;\\n\\t\\twidth: 0;\\n\\t\\theight: 0;\\n\\t\\tmargin: 0;\\n\\t\\tborder-style: solid;\\n\\t\\tborder-color: transparent;\\n\\t\\tborder-width: $arrow-width;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/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-45a871d0]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}li.active[data-v-45a871d0]{background-color:var(--color-background-hover);border-radius:6px;padding:0}.action--disabled[data-v-45a871d0]{pointer-events:none;opacity:.5}.action--disabled[data-v-45a871d0]:hover,.action--disabled[data-v-45a871d0]:focus{cursor:default;opacity:.5}.action--disabled *[data-v-45a871d0]{opacity:1 !important}.action-button[data-v-45a871d0]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-right:14px;box-sizing:border-box;cursor:pointer;white-space:nowrap;opacity:.7;color:var(--color-main-text);border:0;border-radius:0;background-color:rgba(0,0,0,0);box-shadow:none;font-weight:normal;font-size:var(--default-font-size);line-height:44px}.action-button[data-v-45a871d0]:hover,.action-button[data-v-45a871d0]:focus{opacity:1}.action-button>span[data-v-45a871d0]{cursor:pointer;white-space:nowrap}.action-button__icon[data-v-45a871d0]{width:44px;height:44px;opacity:1;background-position:14px center;background-size:16px;background-repeat:no-repeat}.action-button[data-v-45a871d0] .material-design-icon{width:44px;height:44px;opacity:1}.action-button[data-v-45a871d0] .material-design-icon .material-design-icon__svg{vertical-align:middle}.action-button p[data-v-45a871d0]{max-width:220px;line-height:1.6em;padding:10.8px 0;cursor:pointer;text-align:left;overflow:hidden;text-overflow:ellipsis}.action-button__longtext[data-v-45a871d0]{cursor:pointer;white-space:pre-wrap}.action-button__title[data-v-45a871d0]{font-weight:bold;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:100%;display:inline-block}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/assets/material-icons.css\",\"webpack://./src/assets/action.scss\",\"webpack://./src/assets/variables.scss\"],\"names\":[],\"mappings\":\"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCiBC,2BACC,8CAAA,CACA,iBAAA,CACA,SAAA,CAMF,mCACC,mBAAA,CACA,UCMiB,CDLjB,kFACC,cAAA,CACA,UCGgB,CDDjB,qCACC,oBAAA,CAOF,gCACC,YAAA,CACA,sBAAA,CAEA,UAAA,CACA,WAAA,CACA,QAAA,CACA,SAAA,CACA,kBCxBY,CDyBZ,qBAAA,CAEA,cAAA,CACA,kBAAA,CAEA,UCpBe,CDqBf,4BAAA,CACA,QAAA,CACA,eAAA,CACA,8BAAA,CACA,eAAA,CAEA,kBAAA,CACA,kCAAA,CACA,gBC/Ce,CDiDf,4EAEC,SChCY,CDmCb,qCACC,cAAA,CACA,kBAAA,CAGD,sCACC,UC5Dc,CD6Dd,WC7Dc,CD8Dd,SC3CY,CD4CZ,+BAAA,CACA,oBC5DS,CD6DT,2BAAA,CAGD,sDACC,UCrEc,CDsEd,WCtEc,CDuEd,SCpDY,CDsDZ,iFACC,qBAAA,CAKF,kCACC,eAAA,CACA,iBAAA,CAGA,gBAAA,CAEA,cAAA,CACA,eAAA,CAGA,eAAA,CACA,sBAAA,CAGD,0CACC,cAAA,CAEA,oBAAA,CAGD,uCACC,gBAAA,CACA,sBAAA,CACA,eAAA,CACA,kBAAA,CACA,cAAA,CACA,oBAAA\",\"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\",\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n * @author Marco Ambrosini <marcoambrosini@icloud.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n@mixin action-active {\\n\\tli {\\n\\t\\t&.active {\\n\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t\\tborder-radius: 6px;\\n\\t\\t\\tpadding: 0;\\n\\t\\t}\\n\\t}\\n}\\n\\n@mixin action--disabled {\\n\\t.action--disabled {\\n\\t\\tpointer-events: none;\\n\\t\\topacity: $opacity_disabled;\\n\\t\\t&:hover, &:focus {\\n\\t\\t\\tcursor: default;\\n\\t\\t\\topacity: $opacity_disabled;\\n\\t\\t}\\n\\t\\t& * {\\n\\t\\t\\topacity: 1 !important;\\n\\t\\t}\\n\\t}\\n}\\n\\n\\n@mixin action-item($name) {\\n\\t.action-#{$name} {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: flex-start;\\n\\n\\t\\twidth: 100%;\\n\\t\\theight: auto;\\n\\t\\tmargin: 0;\\n\\t\\tpadding: 0;\\n\\t\\tpadding-right: $icon-margin;\\n\\t\\tbox-sizing: border-box; // otherwise router-link overflows in Firefox\\n\\n\\t\\tcursor: pointer;\\n\\t\\twhite-space: nowrap;\\n\\n\\t\\topacity: $opacity_normal;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tborder: 0;\\n\\t\\tborder-radius: 0; // otherwise Safari will cut the border-radius area\\n\\t\\tbackground-color: transparent;\\n\\t\\tbox-shadow: none;\\n\\n\\t\\tfont-weight: normal;\\n\\t\\tfont-size: var(--default-font-size);\\n\\t\\tline-height: $clickable-area;\\n\\n\\t\\t&:hover,\\n\\t\\t&:focus {\\n\\t\\t\\topacity: $opacity_full;\\n\\t\\t}\\n\\n\\t\\t& > span {\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t}\\n\\n\\t\\t&__icon {\\n\\t\\t\\twidth: $clickable-area;\\n\\t\\t\\theight: $clickable-area;\\n\\t\\t\\topacity: $opacity_full;\\n\\t\\t\\tbackground-position: $icon-margin center;\\n\\t\\t\\tbackground-size: $icon-size;\\n\\t\\t\\tbackground-repeat: no-repeat;\\n\\t\\t}\\n\\n\\t\\t&::v-deep .material-design-icon {\\n\\t\\t\\twidth: $clickable-area;\\n\\t\\t\\theight: $clickable-area;\\n\\t\\t\\topacity: $opacity_full;\\n\\n\\t\\t\\t.material-design-icon__svg {\\n\\t\\t\\t\\tvertical-align: middle;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// long text area\\n\\t\\tp {\\n\\t\\t\\tmax-width: 220px;\\n\\t\\t\\tline-height: 1.6em;\\n\\n\\t\\t\\t// 14px are currently 1em line-height. Mixing units as '44px - 1.6em' does not work.\\n\\t\\t\\tpadding: #{math.div($clickable-area - 1.6 * 14px, 2)} 0;\\n\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\ttext-align: left;\\n\\n\\t\\t\\t// in case there are no spaces like long email addresses\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t}\\n\\n\\t\\t&__longtext {\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\t// allow the use of `\\\\n`\\n\\t\\t\\twhite-space: pre-wrap;\\n\\t\\t}\\n\\n\\t\\t&__title {\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\tmax-width: 100%;\\n\\t\\t\\tdisplay: inline-block;\\n\\t\\t}\\n\\t}\\n}\\n\",\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\\n// recommended is 48px\\n// 44px is what we choose and have very good visual-to-usability ratio\\n$clickable-area: 44px;\\n\\n// background icon size\\n// also used for the scss icon font\\n$icon-size: 16px;\\n\\n// icon padding for a $clickable-area width and a $icon-size icon\\n// ( 44px - 16px ) / 2\\n$icon-margin: math.div($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\\n// top-bar spacing\\n$topbar-margin: 4px;\\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-2e37497d]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.action-items[data-v-2e37497d]{display:flex;align-items:center}.action-item[data-v-2e37497d]{position:relative;display:inline-block}.action-item.action-item--open .action-item__menutoggle[data-v-2e37497d]{opacity:1;background-color:rgba(127,127,127,.25)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/assets/material-icons.css\",\"webpack://./src/components/NcActions/NcActions.vue\",\"webpack://./src/assets/variables.scss\"],\"names\":[],\"mappings\":\"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCND,+BACC,YAAA,CACA,kBAAA,CAGD,8BACC,iBAAA,CACA,oBAAA,CAEA,yEACC,SCgCa,CD/Bb,sCCmCwB\",\"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\",\"@use 'sass:math'; $scope_version:\\\"c5df3e0\\\"; @import 'variables'; @import 'material-icons';\\n\\n.action-items {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n}\\n\\n.action-item {\\n\\tposition: relative;\\n\\tdisplay: inline-block;\\n\\n\\t&.action-item--open .action-item__menutoggle {\\n\\t\\topacity: $opacity_full;\\n\\t\\tbackground-color: $action-background-hover;\\n\\t}\\n}\\n\",\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\\n// recommended is 48px\\n// 44px is what we choose and have very good visual-to-usability ratio\\n$clickable-area: 44px;\\n\\n// background icon size\\n// also used for the scss icon font\\n$icon-size: 16px;\\n\\n// icon padding for a $clickable-area width and a $icon-size icon\\n// ( 44px - 16px ) / 2\\n$icon-margin: math.div($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\\n// top-bar spacing\\n$topbar-margin: 4px;\\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}.v-popper__popper.action-item__popper .v-popper__inner{border-radius:var(--border-radius-large);padding:4px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/assets/material-icons.css\",\"webpack://./src/components/NcActions/NcActions.vue\"],\"names\":[],\"mappings\":\"AAGA,sBACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCJD,uDACC,wCAAA,CACA,WAAA\",\"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\",\"@use 'sass:math'; $scope_version:\\\"c5df3e0\\\"; @import 'variables'; @import 'material-icons';\\n\\n// We overwrote the popover base class, so we can style\\n// the popover__inner for actions only.\\n.v-popper__popper.action-item__popper .v-popper__inner {\\n\\tborder-radius: var(--border-radius-large);\\n\\tpadding: 4px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/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-406df22d]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.avatardiv[data-v-406df22d]{position:relative;display:inline-block;width:var(--size);height:var(--size)}.avatardiv--unknown[data-v-406df22d]{position:relative;background-color:var(--color-text-maxcontrast)}.avatardiv[data-v-406df22d]:not(.avatardiv--unknown){background-color:#fff !important;box-shadow:0 0 5px rgba(0,0,0,.05) inset}body.theme--dark .avatardiv[data-v-406df22d]:not(.avatardiv--unknown){background-color:#000 !important}.avatardiv--with-menu[data-v-406df22d]{cursor:pointer}.avatardiv--with-menu[data-v-406df22d] .v-popper{position:absolute;top:0;left:0}.avatardiv--with-menu .icon-more[data-v-406df22d]{cursor:pointer;opacity:0}.avatardiv--with-menu:focus .icon-more[data-v-406df22d],.avatardiv--with-menu:hover .icon-more[data-v-406df22d]{opacity:1}.avatardiv--with-menu:focus img[data-v-406df22d],.avatardiv--with-menu:hover img[data-v-406df22d]{opacity:.3}.avatardiv--with-menu .icon-more[data-v-406df22d],.avatardiv--with-menu img[data-v-406df22d]{transition:opacity var(--animation-quick)}.avatardiv>.unknown[data-v-406df22d]{position:absolute;top:0;left:0;display:block;width:100%;text-align:center;font-weight:normal;color:var(--color-main-background)}.avatardiv img[data-v-406df22d]{width:100%;height:100%;object-fit:cover}.avatardiv .material-design-icon[data-v-406df22d]{width:var(--size);height:var(--size)}.avatardiv .avatardiv__user-status[data-v-406df22d]{position:absolute;right:-4px;bottom:-4px;max-height:18px;max-width:18px;height:40%;width:40%;line-height:15px;font-size:var(--default-font-size);border:2px solid var(--color-main-background);background-color:var(--color-main-background);background-repeat:no-repeat;background-size:16px;background-position:center;border-radius:50%}.acli:hover .avatardiv .avatardiv__user-status[data-v-406df22d]{border-color:var(--color-background-hover);background-color:var(--color-background-hover)}.acli.active .avatardiv .avatardiv__user-status[data-v-406df22d]{border-color:var(--color-primary-light);background-color:var(--color-primary-light)}.avatardiv .avatardiv__user-status--online[data-v-406df22d]{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_0___ + \")}.avatardiv .avatardiv__user-status--dnd[data-v-406df22d]{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_1___ + \");background-color:#fff}.avatardiv .avatardiv__user-status--away[data-v-406df22d]{background-image:url(\" + ___CSS_LOADER_URL_REPLACEMENT_2___ + \")}.avatardiv .avatardiv__user-status--icon[data-v-406df22d]{border:none;background-color:rgba(0,0,0,0)}.avatardiv .popovermenu-wrapper[data-v-406df22d]{position:relative;display:inline-block}.avatar-class-icon[data-v-406df22d]{border-radius:50%;background-color:var(--color-background-darker);height:100%}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/assets/material-icons.css\",\"webpack://./src/components/NcAvatar/NcAvatar.vue\"],\"names\":[],\"mappings\":\"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCND,4BACC,iBAAA,CACA,oBAAA,CACA,iBAAA,CACA,kBAAA,CAEA,qCACC,iBAAA,CACA,8CAAA,CAGD,qDAEC,gCAAA,CAKA,wCAAA,CAJA,sEAEC,gCAAA,CAKF,uCACC,cAAA,CACA,iDACC,iBAAA,CACA,KAAA,CACA,MAAA,CAED,kDACC,cAAA,CACA,SAAA,CAIA,gHACC,SAAA,CAED,kGACC,UAAA,CAGF,6FAEC,yCAAA,CAIF,qCACC,iBAAA,CACA,KAAA,CACA,MAAA,CACA,aAAA,CACA,UAAA,CACA,iBAAA,CACA,kBAAA,CACA,kCAAA,CAGD,gCAEC,UAAA,CACA,WAAA,CAEA,gBAAA,CAGD,kDACC,iBAAA,CACA,kBAAA,CAGD,oDACC,iBAAA,CACA,UAAA,CACA,WAAA,CACA,eAAA,CACA,cAAA,CACA,UAAA,CACA,SAAA,CACA,gBAAA,CACA,kCAAA,CACA,6CAAA,CACA,6CAAA,CACA,2BAAA,CACA,oBAAA,CACA,0BAAA,CACA,iBAAA,CAEA,gEACC,0CAAA,CACA,8CAAA,CAED,iEACC,uCAAA,CACA,2CAAA,CAGD,4DACC,wDAAA,CAED,yDACC,wDAAA,CACA,qBAAA,CAED,0DACC,wDAAA,CAED,0DACC,WAAA,CACA,8BAAA,CAIF,iDACC,iBAAA,CACA,oBAAA,CAIF,oCACC,iBAAA,CACA,+CAAA,CACA,WAAA\",\"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\",\"@use 'sass:math'; $scope_version:\\\"c5df3e0\\\"; @import 'variables'; @import 'material-icons';\\n\\n.avatardiv {\\n\\tposition: relative;\\n\\tdisplay: inline-block;\\n\\twidth: var(--size);\\n\\theight: var(--size);\\n\\n\\t&--unknown {\\n\\t\\tposition: relative;\\n\\t\\tbackground-color: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t&:not(&--unknown) {\\n\\t\\t// White background for avatars with transparency\\n\\t\\tbackground-color: #fff !important;\\n\\t\\tbody.theme--dark & {\\n\\t\\t\\t// And black background in dark mode, as it shines through on hover of the menu\\n\\t\\t\\tbackground-color: #000 !important;\\n\\t\\t}\\n\\t\\tbox-shadow: 0 0 5px rgba(0, 0, 0, 0.05) inset;\\n\\t}\\n\\n\\t&--with-menu {\\n\\t\\tcursor: pointer;\\n\\t\\t:deep(.v-popper) {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tleft: 0;\\n\\t\\t}\\n\\t\\t.icon-more {\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\topacity: 0;\\n\\t\\t}\\n\\t\\t&:focus,\\n\\t\\t&:hover {\\n\\t\\t\\t.icon-more {\\n\\t\\t\\t\\topacity: 1;\\n\\t\\t\\t}\\n\\t\\t\\timg {\\n\\t\\t\\t\\topacity: 0.3;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t.icon-more,\\n\\t\\timg {\\n\\t\\t\\ttransition: opacity var(--animation-quick);\\n\\t\\t}\\n\\t}\\n\\n\\t> .unknown {\\n\\t\\tposition: absolute;\\n\\t\\ttop: 0;\\n\\t\\tleft: 0;\\n\\t\\tdisplay: block;\\n\\t\\twidth: 100%;\\n\\t\\ttext-align: center;\\n\\t\\tfont-weight: normal;\\n\\t\\tcolor: var(--color-main-background);\\n\\t}\\n\\n\\timg {\\n\\t\\t// Cover entire area\\n\\t\\twidth: 100%;\\n\\t\\theight: 100%;\\n\\t\\t// Keep ratio\\n\\t\\tobject-fit: cover;\\n\\t}\\n\\n\\t.material-design-icon {\\n\\t\\twidth: var(--size);\\n\\t\\theight: var(--size);\\n\\t}\\n\\n\\t.avatardiv__user-status {\\n\\t\\tposition: absolute;\\n\\t\\tright: -4px;\\n\\t\\tbottom: -4px;\\n\\t\\tmax-height: 18px;\\n\\t\\tmax-width: 18px;\\n\\t\\theight: 40%;\\n\\t\\twidth: 40%;\\n\\t\\tline-height: 15px;\\n\\t\\tfont-size: var(--default-font-size);\\n\\t\\tborder: 2px solid var(--color-main-background);\\n\\t\\tbackground-color: var(--color-main-background);\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\tbackground-size: 16px;\\n\\t\\tbackground-position: center;\\n\\t\\tborder-radius: 50%;\\n\\n\\t\\t.acli:hover & {\\n\\t\\t\\tborder-color: var(--color-background-hover);\\n\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t}\\n\\t\\t.acli.active & {\\n\\t\\t\\tborder-color: var(--color-primary-light);\\n\\t\\t\\tbackground-color: var(--color-primary-light);\\n\\t\\t}\\n\\n\\t\\t&--online{\\n\\t\\t\\tbackground-image: url('../../assets/status-icons/user-status-online.svg');\\n\\t\\t}\\n\\t\\t&--dnd{\\n\\t\\t\\tbackground-image: url('../../assets/status-icons/user-status-dnd.svg');\\n\\t\\t\\tbackground-color: #ffffff;\\n\\t\\t}\\n\\t\\t&--away{\\n\\t\\t\\tbackground-image: url('../../assets/status-icons/user-status-away.svg');\\n\\t\\t}\\n\\t\\t&--icon {\\n\\t\\t\\tborder: none;\\n\\t\\t\\tbackground-color: transparent;\\n\\t\\t}\\n\\t}\\n\\n\\t.popovermenu-wrapper {\\n\\t\\tposition: relative;\\n\\t\\tdisplay: inline-block;\\n\\t}\\n}\\n\\n.avatar-class-icon {\\n\\tborder-radius: 50%;\\n\\tbackground-color: var(--color-background-darker);\\n\\theight: 100%;\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// 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-daf9a39c]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.button-vue[data-v-daf9a39c]{position:relative;width:fit-content;overflow:hidden;border:0;padding:0;font-size:var(--default-font-size);font-weight:bold;min-height:44px;min-width:44px;display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:22px;transition:background-color .1s linear !important;transition:border .1s linear;background-color:var(--color-primary-element-lighter);color:var(--color-primary-light-text)}.button-vue *[data-v-daf9a39c]{cursor:pointer}.button-vue[data-v-daf9a39c]:focus{outline:none}.button-vue[data-v-daf9a39c]:disabled{cursor:default;opacity:.5;filter:saturate(0.7)}.button-vue:disabled *[data-v-daf9a39c]{cursor:default}.button-vue[data-v-daf9a39c]:hover:not(:disabled){background-color:var(--color-primary-light-hover)}.button-vue[data-v-daf9a39c]:active{background-color:var(--color-primary-element-lighter)}.button-vue__wrapper[data-v-daf9a39c]{display:inline-flex;align-items:center;justify-content:space-around}.button-vue__icon[data-v-daf9a39c]{height:44px;width:44px;min-height:44px;min-width:44px;display:flex;justify-content:center;align-items:center}.button-vue__text[data-v-daf9a39c]{font-weight:bold;margin-bottom:1px;padding:2px 0}.button-vue--icon-only[data-v-daf9a39c]{width:44px !important}.button-vue--text-only[data-v-daf9a39c]{padding:0 12px}.button-vue--text-only .button-vue__text[data-v-daf9a39c]{margin-left:4px;margin-right:4px}.button-vue--icon-and-text[data-v-daf9a39c]{padding:0 16px 0 4px}.button-vue--wide[data-v-daf9a39c]{width:100%}.button-vue--tabbed[data-v-daf9a39c],.button-vue[data-v-daf9a39c]:focus-visible{box-shadow:0 0 0 2px var(--color-main-text);background-color:var(--color-primary-light-hover)}.button-vue--tabbed.button-vue--vue-primary[data-v-daf9a39c],.button-vue:focus-visible.button-vue--vue-primary[data-v-daf9a39c]{background-color:var(--color-primary-hover)}.button-vue--tabbed.button-vue--vue-secondary[data-v-daf9a39c],.button-vue:focus-visible.button-vue--vue-secondary[data-v-daf9a39c]{box-shadow:0 0 0 2px var(--color-main-text)}.button-vue--tabbed.button-vue--vue-tertiary-no-background[data-v-daf9a39c],.button-vue:focus-visible.button-vue--vue-tertiary-no-background[data-v-daf9a39c]{opacity:1}.button-vue--tabbed.button-vue--vue-tertiary-on-primary[data-v-daf9a39c],.button-vue:focus-visible.button-vue--vue-tertiary-on-primary[data-v-daf9a39c]{box-shadow:0 0 0 2px var(--color-primary-text);border-radius:var(--border-radius);opacity:1;background-color:rgba(0,0,0,0)}.button-vue--tabbed.button-vue--vue-success[data-v-daf9a39c],.button-vue:focus-visible.button-vue--vue-success[data-v-daf9a39c]{background-color:var(--color-success-hover)}.button-vue--tabbed.button-vue--vue-warning[data-v-daf9a39c],.button-vue:focus-visible.button-vue--vue-warning[data-v-daf9a39c]{background-color:var(--color-warning-hover)}.button-vue--tabbed.button-vue--vue-error[data-v-daf9a39c],.button-vue:focus-visible.button-vue--vue-error[data-v-daf9a39c]{background-color:var(--color-error-hover)}.button-vue--vue-primary[data-v-daf9a39c]{background-color:var(--color-primary-element);color:var(--color-primary-text)}.button-vue--vue-primary[data-v-daf9a39c]:hover:not(:disabled){background-color:var(--color-primary-element-hover)}.button-vue--vue-primary[data-v-daf9a39c]:active{background-color:var(--color-primary-element)}.button-vue--vue-secondary[data-v-daf9a39c]{color:var(--color-main-text);background-color:var(--color-background-dark);box-shadow:0 0 0 2px var(--color-border-dark)}.button-vue--vue-secondary[data-v-daf9a39c]:hover:not(:disabled){color:var(--color-main-text);background-color:var(--color-background-dark);box-shadow:0 0 0 2px var(--color-primary-element)}.button-vue--vue-tertiary[data-v-daf9a39c]{color:var(--color-main-text);background-color:rgba(0,0,0,0)}.button-vue--vue-tertiary[data-v-daf9a39c]:hover:not(:disabled){background-color:var(--color);background-color:var(--color-background-hover)}.button-vue--vue-tertiary-no-background[data-v-daf9a39c]{color:var(--color-main-text);background-color:rgba(0,0,0,0);opacity:.7}.button-vue--vue-tertiary-no-background[data-v-daf9a39c]:hover:not(:disabled){background-color:rgba(0,0,0,0);opacity:1}.button-vue--vue-tertiary-on-primary[data-v-daf9a39c]{color:var(--color-primary-text);background-color:rgba(0,0,0,0);opacity:.7}.button-vue--vue-tertiary-on-primary[data-v-daf9a39c]:hover:not(:disabled){background-color:rgba(0,0,0,0);opacity:1}.button-vue--vue-success[data-v-daf9a39c]{background-color:var(--color-success);color:#fff}.button-vue--vue-success[data-v-daf9a39c]:hover:not(:disabled){background-color:var(--color-success-hover)}.button-vue--vue-success[data-v-daf9a39c]:active{background-color:var(--color-success)}.button-vue--vue-warning[data-v-daf9a39c]{background-color:var(--color-warning);color:#fff}.button-vue--vue-warning[data-v-daf9a39c]:hover:not(:disabled){background-color:var(--color-warning-hover)}.button-vue--vue-warning[data-v-daf9a39c]:active{background-color:var(--color-warning)}.button-vue--vue-error[data-v-daf9a39c]{background-color:var(--color-error);color:#fff}.button-vue--vue-error[data-v-daf9a39c]:hover:not(:disabled){background-color:var(--color-error-hover)}.button-vue--vue-error[data-v-daf9a39c]:active{background-color:var(--color-error)}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/assets/material-icons.css\",\"webpack://./src/components/NcButton/NcButton.vue\",\"webpack://./src/assets/variables.scss\"],\"names\":[],\"mappings\":\"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCLD,6BACC,iBAAA,CACA,iBAAA,CACA,eAAA,CACA,QAAA,CACA,SAAA,CACA,kCAAA,CACA,gBAAA,CACA,eCcgB,CDbhB,cCagB,CDZhB,YAAA,CACA,kBAAA,CACA,sBAAA,CAGA,cAAA,CAIA,kBAAA,CACA,iDAAA,CACA,4BAAA,CAkBA,qDAAA,CACA,qCAAA,CAxBA,+BACC,cAAA,CAOD,mCACC,YAAA,CAGD,sCACC,cAAA,CAIA,UCMiB,CDJjB,oBAAA,CALA,wCACC,cAAA,CAUF,kDACC,iDAAA,CAKD,oCACC,qDAAA,CAGD,sCACC,mBAAA,CACA,kBAAA,CACA,4BAAA,CAGD,mCACC,WCpCe,CDqCf,UCrCe,CDsCf,eCtCe,CDuCf,cCvCe,CDwCf,YAAA,CACA,sBAAA,CACA,kBAAA,CAGD,mCACC,gBAAA,CACA,iBAAA,CACA,aAAA,CAID,wCACC,qBAAA,CAID,wCACC,cAAA,CACA,0DACC,eAAA,CACA,gBAAA,CAKF,4CACC,oBAAA,CAID,mCACC,UAAA,CAMD,gFACC,2CAAA,CACA,iDAAA,CACA,gIACC,2CAAA,CAED,oIACC,2CAAA,CAED,8JACC,SAAA,CAED,wJACC,8CAAA,CACA,kCAAA,CACA,SAAA,CACA,8BAAA,CAED,gIACC,2CAAA,CAED,gIACC,2CAAA,CAED,4HACC,yCAAA,CAOF,0CACC,6CAAA,CACA,+BAAA,CACA,+DACC,mDAAA,CAID,iDACC,6CAAA,CAKF,4CACC,4BAAA,CACA,6CAAA,CACA,6CAAA,CACA,iEACC,4BAAA,CACA,6CAAA,CACA,iDAAA,CAKF,2CACC,4BAAA,CACA,8BAAA,CACA,gEACC,6BAAA,CACA,8CAAA,CAKF,yDACC,4BAAA,CACA,8BAAA,CACA,UAAA,CACA,8EACC,8BAAA,CACA,SAAA,CAKF,sDACC,+BAAA,CACA,8BAAA,CACA,UAAA,CAEA,2EACC,8BAAA,CACA,SAAA,CAKF,0CACC,qCAAA,CACA,UAAA,CACA,+DACC,2CAAA,CAID,iDACC,qCAAA,CAKF,0CACC,qCAAA,CACA,UAAA,CACA,+DACC,2CAAA,CAID,iDACC,qCAAA,CAKF,wCACC,mCAAA,CACA,UAAA,CACA,6DACC,yCAAA,CAID,+CACC,mCAAA\",\"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\",\"@use 'sass:math'; $scope_version:\\\"c5df3e0\\\"; @import 'variables'; @import 'material-icons';\\n\\n\\n.button-vue {\\n\\tposition: relative;\\n\\twidth: fit-content;\\n\\toverflow: hidden;\\n\\tborder: 0;\\n\\tpadding: 0;\\n\\tfont-size: var(--default-font-size);\\n\\tfont-weight: bold;\\n\\tmin-height: $clickable-area;\\n\\tmin-width: $clickable-area;\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n\\n\\t// Cursor pointer on element and all children\\n\\tcursor: pointer;\\n\\t& * {\\n\\t\\tcursor: pointer;\\n\\t}\\n\\tborder-radius: math.div($clickable-area, 2);\\n\\ttransition: background-color 0.1s linear !important;\\n\\ttransition: border 0.1s linear;\\n\\n\\t// No outline feedback for focus. Handled with a toggled class in js (see data)\\n\\t&:focus {\\n\\t\\toutline: none;\\n\\t}\\n\\n\\t&:disabled {\\n\\t\\tcursor: default;\\n\\t\\t& * {\\n\\t\\t\\tcursor: default;\\n\\t\\t}\\n\\t\\topacity: $opacity_disabled;\\n\\t\\t// Gives a wash out effect\\n\\t\\tfilter: saturate($opacity_normal);\\n\\t}\\n\\n\\t// Default button type\\n\\tbackground-color: var(--color-primary-element-lighter);\\n\\tcolor: var(--color-primary-light-text);\\n\\t&:hover:not(:disabled) {\\n\\t\\tbackground-color: var(--color-primary-light-hover);\\n\\t}\\n\\n\\t// Back to the default color for this button when active\\n\\t// TODO: add ripple effect\\n\\t&:active {\\n\\t\\tbackground-color: var(--color-primary-element-lighter);\\n\\t}\\n\\n\\t&__wrapper {\\n\\t\\tdisplay: inline-flex;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: space-around;\\n\\t}\\n\\n\\t&__icon {\\n\\t\\theight: $clickable-area;\\n\\t\\twidth: $clickable-area;\\n\\t\\tmin-height: $clickable-area;\\n\\t\\tmin-width: $clickable-area;\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: center;\\n\\t\\talign-items: center;\\n\\t}\\n\\n\\t&__text {\\n\\t\\tfont-weight: bold;\\n\\t\\tmargin-bottom: 1px;\\n\\t\\tpadding: 2px 0;\\n\\t}\\n\\n\\t// Icon-only button\\n\\t&--icon-only {\\n\\t\\twidth: $clickable-area !important;\\n\\t}\\n\\n\\t// Text-only button\\n\\t&--text-only {\\n\\t\\tpadding: 0 12px;\\n\\t\\t& .button-vue__text {\\n\\t\\t\\tmargin-left: 4px;\\n\\t\\t\\tmargin-right: 4px;\\n\\t\\t}\\n\\t}\\n\\n\\t// Icon and text button\\n\\t&--icon-and-text {\\n\\t\\tpadding: 0 16px 0 4px;\\n\\t}\\n\\n\\t// Wide button spans the whole width of the container\\n\\t&--wide {\\n\\t\\twidth: 100%;\\n\\t}\\n\\n\\t// We use box-shadow around our buttons instead of an outline, so that the added \\\"border\\\"\\n\\t// coincides with the border of the element. It's not possible to add a border-radius to\\n\\t// the outline\\n\\t&--tabbed, &:focus-visible {\\n\\t\\tbox-shadow: 0 0 0 2px var(--color-main-text);\\n\\t\\tbackground-color: var(--color-primary-light-hover);\\n\\t\\t&.button-vue--vue-primary {\\n\\t\\t\\tbackground-color: var(--color-primary-hover);\\n\\t\\t}\\n\\t\\t&.button-vue--vue-secondary {\\n\\t\\t\\tbox-shadow: 0 0 0 2px var(--color-main-text);\\n\\t\\t}\\n\\t\\t&.button-vue--vue-tertiary-no-background {\\n\\t\\t\\topacity: 1;\\n\\t\\t}\\n\\t\\t&.button-vue--vue-tertiary-on-primary {\\n\\t\\t\\tbox-shadow: 0 0 0 2px var(--color-primary-text);\\n\\t\\t\\tborder-radius: var(--border-radius);\\n\\t\\t\\topacity: 1;\\n\\t\\t\\tbackground-color: transparent;\\n\\t\\t}\\n\\t\\t&.button-vue--vue-success {\\n\\t\\t\\tbackground-color: var(--color-success-hover);\\n\\t\\t}\\n\\t\\t&.button-vue--vue-warning {\\n\\t\\t\\tbackground-color: var(--color-warning-hover);\\n\\t\\t}\\n\\t\\t&.button-vue--vue-error {\\n\\t\\t\\tbackground-color: var(--color-error-hover);\\n\\t\\t}\\n\\t}\\n\\n\\t// Button types\\n\\n\\t// Primary\\n\\t&--vue-primary {\\n\\t\\tbackground-color: var(--color-primary-element);\\n\\t\\tcolor: var(--color-primary-text);\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tbackground-color: var(--color-primary-element-hover);\\n\\t\\t}\\n\\t\\t// Back to the default color for this button when active\\n\\t\\t// TODO: add ripple effect\\n\\t\\t&:active {\\n\\t\\t\\tbackground-color: var(--color-primary-element);\\n\\t\\t}\\n\\t}\\n\\n\\t// Secondary\\n\\t&--vue-secondary {\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\tbox-shadow: 0 0 0 2px var(--color-border-dark);\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\t\\tbox-shadow: 0 0 0 2px var(--color-primary-element);\\n\\t\\t}\\n\\t}\\n\\n\\t// Tertiary\\n\\t&--vue-tertiary {\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tbackground-color: transparent;\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tbackground-color: var(--color);\\n\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t}\\n\\t}\\n\\n\\t// Tertiary, no background\\n\\t&--vue-tertiary-no-background {\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\tbackground-color: transparent;\\n\\t\\topacity: .7;\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tbackground-color: transparent;\\n\\t\\t\\topacity: 1;\\n\\t\\t}\\n\\t}\\n\\n\\t// Tertiary on primary color (like the header)\\n\\t&--vue-tertiary-on-primary {\\n\\t\\tcolor: var(--color-primary-text);\\n\\t\\tbackground-color: transparent;\\n\\t\\topacity: .7;\\n\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tbackground-color: transparent;\\n\\t\\t\\topacity: 1;\\n\\t\\t}\\n\\t}\\n\\n\\t// Success\\n\\t&--vue-success {\\n\\t\\tbackground-color: var(--color-success);\\n\\t\\tcolor: white;\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tbackground-color: var(--color-success-hover);\\n\\t\\t}\\n\\t\\t// Back to the default color for this button when active\\n\\t\\t// : add ripple effect\\n\\t\\t&:active {\\n\\t\\t\\tbackground-color: var(--color-success);\\n\\t\\t}\\n\\t}\\n\\n\\t// Warning\\n\\t&--vue-warning {\\n\\t\\tbackground-color: var(--color-warning);\\n\\t\\tcolor: white;\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tbackground-color: var(--color-warning-hover);\\n\\t\\t}\\n\\t\\t// Back to the default color for this button when active\\n\\t\\t// TODO: add ripple effect\\n\\t\\t&:active {\\n\\t\\t\\tbackground-color: var(--color-warning);\\n\\t\\t}\\n\\t}\\n\\n\\t// Error\\n\\t&--vue-error {\\n\\t\\tbackground-color: var(--color-error);\\n\\t\\tcolor: white;\\n\\t\\t&:hover:not(:disabled) {\\n\\t\\t\\tbackground-color: var(--color-error-hover);\\n\\t\\t}\\n\\t\\t// Back to the default color for this button when active\\n\\t\\t// TODO: add ripple effect\\n\\t\\t&:active {\\n\\t\\t\\tbackground-color: var(--color-error);\\n\\t\\t}\\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: math.div($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\\n// top-bar spacing\\n$topbar-margin: 4px;\\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-263ede20]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.dashboard-widget .empty-content[data-v-263ede20]{text-align:center;margin-top:5vh}.dashboard-widget .empty-content.half-screen[data-v-263ede20]{margin-top:0;margin-bottom:1vh}.more[data-v-263ede20]{display:block;text-align:center;color:var(--color-text-maxcontrast);line-height:60px;cursor:pointer}.more[data-v-263ede20]:hover,.more[data-v-263ede20]:focus{background-color:var(--color-background-hover);border-radius:var(--border-radius-large);color:var(--color-main-text)}.item-list__entry[data-v-263ede20]{display:flex;align-items:flex-start;padding:8px}.item-list__entry .item-avatar[data-v-263ede20]{position:relative;margin-top:auto;margin-bottom:auto;background-color:var(--color-background-dark) !important}.item-list__entry .item__details[data-v-263ede20]{padding-left:8px;max-height:44px;flex-grow:1;overflow:hidden;display:flex;flex-direction:column}.item-list__entry .item__details h3[data-v-263ede20],.item-list__entry .item__details .message[data-v-263ede20]{white-space:nowrap;background-color:var(--color-background-dark)}.item-list__entry .item__details h3[data-v-263ede20]{font-size:100%;margin:0}.item-list__entry .item__details .message[data-v-263ede20]{width:80%;height:15px;margin-top:5px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/assets/material-icons.css\",\"webpack://./src/components/NcDashboardWidget/NcDashboardWidget.vue\"],\"names\":[],\"mappings\":\"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCND,kDACC,iBAAA,CACA,cAAA,CAEA,8DACC,YAAA,CACA,iBAAA,CAIF,uBACC,aAAA,CACA,iBAAA,CACA,mCAAA,CACA,gBAAA,CACA,cAAA,CAEA,0DAEC,8CAAA,CACA,wCAAA,CACA,4BAAA,CAKF,mCACC,YAAA,CACA,sBAAA,CACA,WAAA,CAEA,gDACC,iBAAA,CACA,eAAA,CACA,kBAAA,CACA,wDAAA,CAED,kDACC,gBAAA,CACA,eAAA,CACA,WAAA,CACA,eAAA,CACA,YAAA,CACA,qBAAA,CAEA,gHAEC,kBAAA,CACA,6CAAA,CAED,qDACC,cAAA,CACA,QAAA,CAED,2DACC,SAAA,CACA,WAAA,CACA,cAAA\",\"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\",\"@use 'sass:math'; $scope_version:\\\"c5df3e0\\\"; @import 'variables'; @import 'material-icons';\\n\\n.dashboard-widget .empty-content {\\n\\ttext-align: center;\\n\\tmargin-top: 5vh;\\n\\n\\t&.half-screen {\\n\\t\\tmargin-top: 0;\\n\\t\\tmargin-bottom: 1vh;\\n\\t}\\n}\\n\\n.more {\\n\\tdisplay: block;\\n\\ttext-align: center;\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tline-height: 60px;\\n\\tcursor: pointer;\\n\\n\\t&:hover,\\n\\t&:focus {\\n\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\tcolor: var(--color-main-text);\\n\\t}\\n}\\n\\n/* skeleton */\\n.item-list__entry {\\n\\tdisplay: flex;\\n\\talign-items: flex-start;\\n\\tpadding: 8px;\\n\\n\\t.item-avatar {\\n\\t\\tposition: relative;\\n\\t\\tmargin-top: auto;\\n\\t\\tmargin-bottom: auto;\\n\\t\\tbackground-color: var(--color-background-dark) !important;\\n\\t}\\n\\t.item__details {\\n\\t\\tpadding-left: 8px;\\n\\t\\tmax-height: 44px;\\n\\t\\tflex-grow: 1;\\n\\t\\toverflow: hidden;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\n\\t\\th3,\\n\\t\\t.message {\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\t}\\n\\t\\th3 {\\n\\t\\t\\tfont-size: 100%;\\n\\t\\t\\tmargin: 0;\\n\\t\\t}\\n\\t\\t.message {\\n\\t\\t\\twidth: 80%;\\n\\t\\t\\theight: 15px;\\n\\t\\t\\tmargin-top: 5px;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/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-333a3450]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.item-list__entry[data-v-333a3450]{display:flex;align-items:flex-start;position:relative;padding:8px}.item-list__entry[data-v-333a3450]:hover,.item-list__entry[data-v-333a3450]:focus{background-color:var(--color-background-hover);border-radius:var(--border-radius-large)}.item-list__entry .item-avatar[data-v-333a3450]{position:relative;margin-top:auto;margin-bottom:auto}.item-list__entry .item__details[data-v-333a3450]{padding-left:8px;max-height:44px;flex-grow:1;overflow:hidden;display:flex;flex-direction:column}.item-list__entry .item__details h3[data-v-333a3450],.item-list__entry .item__details .message[data-v-333a3450]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.item-list__entry .item__details .message span[data-v-333a3450]{width:10px;display:inline-block;margin-bottom:-3px}.item-list__entry .item__details h3[data-v-333a3450]{font-size:100%;margin:0}.item-list__entry .item__details .message[data-v-333a3450]{width:100%;color:var(--color-text-maxcontrast)}.item-list__entry .item-icon[data-v-333a3450]{position:relative;width:14px;height:14px;margin:27px -3px 0px -7px}.item-list__entry button.primary[data-v-333a3450]{padding:21px;margin:0}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/assets/material-icons.css\",\"webpack://./src/components/NcDashboardWidgetItem/NcDashboardWidgetItem.vue\"],\"names\":[],\"mappings\":\"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCND,mCACC,YAAA,CACA,sBAAA,CACA,iBAAA,CACA,WAAA,CAEA,kFAEC,8CAAA,CACA,wCAAA,CAED,gDACC,iBAAA,CACA,eAAA,CACA,kBAAA,CAED,kDACC,gBAAA,CACA,eAAA,CACA,WAAA,CACA,eAAA,CACA,YAAA,CACA,qBAAA,CAEA,gHAEC,kBAAA,CACA,eAAA,CACA,sBAAA,CAED,gEACC,UAAA,CACA,oBAAA,CACA,kBAAA,CAED,qDACC,cAAA,CACA,QAAA,CAED,2DACC,UAAA,CACA,mCAAA,CAIF,8CACC,iBAAA,CACA,UAAA,CACA,WAAA,CACA,yBAAA,CAGD,kDACC,YAAA,CACA,QAAA\",\"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\",\"@use 'sass:math'; $scope_version:\\\"c5df3e0\\\"; @import 'variables'; @import 'material-icons';\\n\\n.item-list__entry {\\n\\tdisplay: flex;\\n\\talign-items: flex-start;\\n\\tposition: relative;\\n\\tpadding: 8px;\\n\\n\\t&:hover,\\n\\t&:focus {\\n\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t}\\n\\t.item-avatar {\\n\\t\\tposition: relative;\\n\\t\\tmargin-top: auto;\\n\\t\\tmargin-bottom: auto;\\n\\t}\\n\\t.item__details {\\n\\t\\tpadding-left: 8px;\\n\\t\\tmax-height: 44px;\\n\\t\\tflex-grow: 1;\\n\\t\\toverflow: hidden;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\n\\t\\th3,\\n\\t\\t.message {\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t}\\n\\t\\t.message span {\\n\\t\\t\\twidth: 10px;\\n\\t\\t\\tdisplay: inline-block;\\n\\t\\t\\tmargin-bottom: -3px;\\n\\t\\t}\\n\\t\\th3 {\\n\\t\\t\\tfont-size: 100%;\\n\\t\\t\\tmargin: 0;\\n\\t\\t}\\n\\t\\t.message {\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\t}\\n\\n\\t.item-icon {\\n\\t\\tposition: relative;\\n\\t\\twidth: 14px;\\n\\t\\theight: 14px;\\n\\t\\tmargin: 27px -3px 0px -7px;\\n\\t}\\n\\n\\tbutton.primary {\\n\\t\\tpadding: 21px;\\n\\t\\tmargin: 0;\\n\\t}\\n}\\n/*\\n.content-popover {\\n\\theight: 0px;\\n\\twidth: 0px;\\n\\tmargin-left: auto;\\n\\tmargin-right: auto;\\n}\\n.popover-container {\\n\\twidth: 100%;\\n\\theight: 0px;\\n}\\n*/\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/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-cd2d9e14]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.empty-content[data-v-cd2d9e14]{display:flex;align-items:center;flex-direction:column;margin-top:20vh}.empty-content__icon[data-v-cd2d9e14]{display:flex;align-items:center;justify-content:center;width:64px;height:64px;margin:0 auto 15px;opacity:.4;background-repeat:no-repeat;background-position:center;background-size:64px}.empty-content__icon[data-v-cd2d9e14] svg{width:64px;height:64px}.empty-content__title[data-v-cd2d9e14]{margin-bottom:10px;text-align:center}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/assets/material-icons.css\",\"webpack://./src/components/NcEmptyContent/NcEmptyContent.vue\"],\"names\":[],\"mappings\":\"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCND,gCACC,YAAA,CACA,kBAAA,CACA,qBAAA,CACA,eAAA,CAEA,sCACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CACA,WAAA,CACA,kBAAA,CACA,UAAA,CACA,2BAAA,CACA,0BAAA,CACA,oBAAA,CAEA,0CACC,UAAA,CACA,WAAA,CAIF,uCACC,kBAAA,CACA,iBAAA\",\"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\",\"@use 'sass:math'; $scope_version:\\\"c5df3e0\\\"; @import 'variables'; @import 'material-icons';\\n\\n.empty-content {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tflex-direction: column;\\n\\tmargin-top: 20vh;\\n\\n\\t&__icon {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: center;\\n\\t\\twidth: 64px;\\n\\t\\theight: 64px;\\n\\t\\tmargin: 0 auto 15px;\\n\\t\\topacity: .4;\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\tbackground-position: center;\\n\\t\\tbackground-size: 64px;\\n\\n\\t\\t:deep(svg) {\\n\\t\\t\\twidth: 64px;\\n\\t\\t\\theight: 64px;\\n\\t\\t}\\n\\t}\\n\\n\\t&__title {\\n\\t\\tmargin-bottom: 10px;\\n\\t\\ttext-align: center;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/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-c4a9cada]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.loading-icon svg[data-v-c4a9cada]{animation:rotate var(--animation-duration, 0.8s) linear infinite}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/assets/material-icons.css\",\"webpack://./src/components/NcLoadingIcon/NcLoadingIcon.vue\"],\"names\":[],\"mappings\":\"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCND,mCACC,gEAAA\",\"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\",\"@use 'sass:math'; $scope_version:\\\"c5df3e0\\\"; @import 'variables'; @import 'material-icons';\\n\\n.loading-icon svg{\\n\\tanimation: rotate var(--animation-duration, 0.8s) linear infinite;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/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}.resize-observer{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;border:none;background-color:rgba(0,0,0,0);pointer-events:none;display:block;overflow:hidden;opacity:0}.resize-observer object{display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}.v-popper--theme-dropdown.v-popper__popper{z-index:100000;top:0;left:0;display:block !important;filter:drop-shadow(0 1px 10px var(--color-box-shadow))}.v-popper--theme-dropdown.v-popper__popper .v-popper__inner{padding:0;color:var(--color-main-text);border-radius:var(--border-radius);overflow:hidden;background:var(--color-main-background)}.v-popper--theme-dropdown.v-popper__popper .v-popper__arrow-container{position:absolute;z-index:1;width:0;height:0;border-style:solid;border-color:rgba(0,0,0,0);border-width:10px}.v-popper--theme-dropdown.v-popper__popper[data-popper-placement^=top] .v-popper__arrow-container{bottom:-10px;border-bottom-width:0;border-top-color:var(--color-main-background)}.v-popper--theme-dropdown.v-popper__popper[data-popper-placement^=bottom] .v-popper__arrow-container{top:-10px;border-top-width:0;border-bottom-color:var(--color-main-background)}.v-popper--theme-dropdown.v-popper__popper[data-popper-placement^=right] .v-popper__arrow-container{left:-10px;border-left-width:0;border-right-color:var(--color-main-background)}.v-popper--theme-dropdown.v-popper__popper[data-popper-placement^=left] .v-popper__arrow-container{right:-10px;border-right-width:0;border-left-color:var(--color-main-background)}.v-popper--theme-dropdown.v-popper__popper[aria-hidden=true]{visibility:hidden;transition:opacity var(--animation-quick),visibility var(--animation-quick);opacity:0}.v-popper--theme-dropdown.v-popper__popper[aria-hidden=false]{visibility:visible;transition:opacity var(--animation-quick);opacity:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/assets/material-icons.css\",\"webpack://./src/components/NcPopover/NcPopover.vue\"],\"names\":[],\"mappings\":\"AAGA,sBACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCLD,iBACC,iBAAA,CACA,KAAA,CACA,MAAA,CACA,UAAA,CACA,UAAA,CACA,WAAA,CACA,WAAA,CACA,8BAAA,CACA,mBAAA,CACA,aAAA,CACA,eAAA,CACA,SAAA,CAGD,wBACC,aAAA,CACA,iBAAA,CACA,KAAA,CACA,MAAA,CACA,WAAA,CACA,UAAA,CACA,eAAA,CACA,mBAAA,CACA,UAAA,CAMA,2CACC,cAAA,CACA,KAAA,CACA,MAAA,CACA,wBAAA,CAEA,sDAAA,CAEA,4DACC,SAAA,CACA,4BAAA,CACA,kCAAA,CACA,eAAA,CACA,uCAAA,CAGD,sEACC,iBAAA,CACA,SAAA,CACA,OAAA,CACA,QAAA,CACA,kBAAA,CACA,0BAAA,CACA,iBA1BW,CA6BZ,kGACC,YAAA,CACA,qBAAA,CACA,6CAAA,CAGD,qGACC,SAAA,CACA,kBAAA,CACA,gDAAA,CAGD,oGACC,UAAA,CACA,mBAAA,CACA,+CAAA,CAGD,mGACC,WAAA,CACA,oBAAA,CACA,8CAAA,CAGD,6DACC,iBAAA,CACA,2EAAA,CACA,SAAA,CAGD,8DACC,kBAAA,CACA,yCAAA,CACA,SAAA\",\"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\",\"@use 'sass:math'; $scope_version:\\\"c5df3e0\\\"; @import 'variables'; @import 'material-icons';\\n\\n\\n.resize-observer {\\n\\tposition:absolute;\\n\\ttop:0;\\n\\tleft:0;\\n\\tz-index:-1;\\n\\twidth:100%;\\n\\theight:100%;\\n\\tborder:none;\\n\\tbackground-color:transparent;\\n\\tpointer-events:none;\\n\\tdisplay:block;\\n\\toverflow:hidden;\\n\\topacity:0\\n}\\n\\n.resize-observer object {\\n\\tdisplay:block;\\n\\tposition:absolute;\\n\\ttop:0;\\n\\tleft:0;\\n\\theight:100%;\\n\\twidth:100%;\\n\\toverflow:hidden;\\n\\tpointer-events:none;\\n\\tz-index:-1\\n}\\n\\n$arrow-width: 10px;\\n\\n.v-popper--theme-dropdown {\\n\\t&.v-popper__popper {\\n\\t\\tz-index: 100000;\\n\\t\\ttop: 0;\\n\\t\\tleft: 0;\\n\\t\\tdisplay: block !important;\\n\\n\\t\\tfilter: drop-shadow(0 1px 10px var(--color-box-shadow));\\n\\n\\t\\t.v-popper__inner {\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\tborder-radius: var(--border-radius);\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\tbackground: var(--color-main-background);\\n\\t\\t}\\n\\n\\t\\t.v-popper__arrow-container {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tz-index: 1;\\n\\t\\t\\twidth: 0;\\n\\t\\t\\theight: 0;\\n\\t\\t\\tborder-style: solid;\\n\\t\\t\\tborder-color: transparent;\\n\\t\\t\\tborder-width: $arrow-width;\\n\\t\\t}\\n\\n\\t\\t&[data-popper-placement^='top'] .v-popper__arrow-container {\\n\\t\\t\\tbottom: -$arrow-width;\\n\\t\\t\\tborder-bottom-width: 0;\\n\\t\\t\\tborder-top-color: var(--color-main-background);\\n\\t\\t}\\n\\n\\t\\t&[data-popper-placement^='bottom'] .v-popper__arrow-container {\\n\\t\\t\\ttop: -$arrow-width;\\n\\t\\t\\tborder-top-width: 0;\\n\\t\\t\\tborder-bottom-color: var(--color-main-background);\\n\\t\\t}\\n\\n\\t\\t&[data-popper-placement^='right'] .v-popper__arrow-container {\\n\\t\\t\\tleft: -$arrow-width;\\n\\t\\t\\tborder-left-width: 0;\\n\\t\\t\\tborder-right-color: var(--color-main-background);\\n\\t\\t}\\n\\n\\t\\t&[data-popper-placement^='left'] .v-popper__arrow-container {\\n\\t\\t\\tright: -$arrow-width;\\n\\t\\t\\tborder-right-width: 0;\\n\\t\\t\\tborder-left-color: var(--color-main-background);\\n\\t\\t}\\n\\n\\t\\t&[aria-hidden='true'] {\\n\\t\\t\\tvisibility: hidden;\\n\\t\\t\\ttransition: opacity var(--animation-quick), visibility var(--animation-quick);\\n\\t\\t\\topacity: 0;\\n\\t\\t}\\n\\n\\t\\t&[aria-hidden='false'] {\\n\\t\\t\\tvisibility: visible;\\n\\t\\t\\ttransition: opacity var(--animation-quick);\\n\\t\\t\\topacity: 1;\\n\\t\\t}\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/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-a98594e4]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}ul[data-v-a98594e4]{display:flex;flex-direction:column}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/assets/material-icons.css\",\"webpack://./src/components/NcPopoverMenu/NcPopoverMenu.vue\"],\"names\":[],\"mappings\":\"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCND,oBACC,YAAA,CACA,qBAAA\",\"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\",\"@use 'sass:math'; $scope_version:\\\"c5df3e0\\\"; @import 'variables'; @import 'material-icons';\\n\\nul {\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/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-695aef77]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}li[data-v-695aef77]{display:flex;flex:0 0 auto}li.hidden[data-v-695aef77]{display:none}li>button[data-v-695aef77],li>a[data-v-695aef77],li>.menuitem[data-v-695aef77]{cursor:pointer;line-height:44px;border:0;border-radius:0;background-color:rgba(0,0,0,0);display:flex;align-items:flex-start;height:auto;margin:0;padding:0;font-weight:normal;box-shadow:none;width:100%;color:var(--color-main-text);white-space:nowrap;opacity:.7}li>button span[class^=icon-][data-v-695aef77],li>button span[class*=\\\" icon-\\\"][data-v-695aef77],li>button[class^=icon-][data-v-695aef77],li>button[class*=\\\" icon-\\\"][data-v-695aef77],li>a span[class^=icon-][data-v-695aef77],li>a span[class*=\\\" icon-\\\"][data-v-695aef77],li>a[class^=icon-][data-v-695aef77],li>a[class*=\\\" icon-\\\"][data-v-695aef77],li>.menuitem span[class^=icon-][data-v-695aef77],li>.menuitem span[class*=\\\" icon-\\\"][data-v-695aef77],li>.menuitem[class^=icon-][data-v-695aef77],li>.menuitem[class*=\\\" icon-\\\"][data-v-695aef77]{min-width:0;min-height:0;background-position:14px center;background-size:16px}li>button span[class^=icon-][data-v-695aef77],li>button span[class*=\\\" icon-\\\"][data-v-695aef77],li>a span[class^=icon-][data-v-695aef77],li>a span[class*=\\\" icon-\\\"][data-v-695aef77],li>.menuitem span[class^=icon-][data-v-695aef77],li>.menuitem span[class*=\\\" icon-\\\"][data-v-695aef77]{padding:22px 0 22px 44px}li>button:not([class^=icon-]):not([class*=icon-])>span[data-v-695aef77]:not([class^=icon-]):not([class*=icon-]):first-child,li>button:not([class^=icon-]):not([class*=icon-])>input[data-v-695aef77]:not([class^=icon-]):not([class*=icon-]):first-child,li>button:not([class^=icon-]):not([class*=icon-])>form[data-v-695aef77]:not([class^=icon-]):not([class*=icon-]):first-child,li>a:not([class^=icon-]):not([class*=icon-])>span[data-v-695aef77]:not([class^=icon-]):not([class*=icon-]):first-child,li>a:not([class^=icon-]):not([class*=icon-])>input[data-v-695aef77]:not([class^=icon-]):not([class*=icon-]):first-child,li>a:not([class^=icon-]):not([class*=icon-])>form[data-v-695aef77]:not([class^=icon-]):not([class*=icon-]):first-child,li>.menuitem:not([class^=icon-]):not([class*=icon-])>span[data-v-695aef77]:not([class^=icon-]):not([class*=icon-]):first-child,li>.menuitem:not([class^=icon-]):not([class*=icon-])>input[data-v-695aef77]:not([class^=icon-]):not([class*=icon-]):first-child,li>.menuitem:not([class^=icon-]):not([class*=icon-])>form[data-v-695aef77]:not([class^=icon-]):not([class*=icon-]):first-child{margin-left:44px}li>button[class^=icon-][data-v-695aef77],li>button[class*=\\\" icon-\\\"][data-v-695aef77],li>a[class^=icon-][data-v-695aef77],li>a[class*=\\\" icon-\\\"][data-v-695aef77],li>.menuitem[class^=icon-][data-v-695aef77],li>.menuitem[class*=\\\" icon-\\\"][data-v-695aef77]{padding:0 14px 0 44px}li>button[data-v-695aef77]:not(:disabled):hover,li>button[data-v-695aef77]:not(:disabled):focus,li>button:not(:disabled).active[data-v-695aef77],li>a[data-v-695aef77]:not(:disabled):hover,li>a[data-v-695aef77]:not(:disabled):focus,li>a:not(:disabled).active[data-v-695aef77],li>.menuitem[data-v-695aef77]:not(:disabled):hover,li>.menuitem[data-v-695aef77]:not(:disabled):focus,li>.menuitem:not(:disabled).active[data-v-695aef77]{opacity:1 !important}li>button.action[data-v-695aef77],li>a.action[data-v-695aef77],li>.menuitem.action[data-v-695aef77]{padding:inherit !important}li>button>span[data-v-695aef77],li>a>span[data-v-695aef77],li>.menuitem>span[data-v-695aef77]{cursor:pointer;white-space:nowrap}li>button>p[data-v-695aef77],li>a>p[data-v-695aef77],li>.menuitem>p[data-v-695aef77]{width:150px;line-height:1.6em;padding:8px 0;white-space:normal;overflow:hidden;text-overflow:ellipsis}li>button>select[data-v-695aef77],li>a>select[data-v-695aef77],li>.menuitem>select[data-v-695aef77]{margin:0;margin-left:6px}li>button[data-v-695aef77]:not(:empty),li>a[data-v-695aef77]:not(:empty),li>.menuitem[data-v-695aef77]:not(:empty){padding-right:14px !important}li>button>img[data-v-695aef77],li>a>img[data-v-695aef77],li>.menuitem>img[data-v-695aef77]{width:16px;height:16px;margin:14px}li>button>input.radio+label[data-v-695aef77],li>button>input.checkbox+label[data-v-695aef77],li>a>input.radio+label[data-v-695aef77],li>a>input.checkbox+label[data-v-695aef77],li>.menuitem>input.radio+label[data-v-695aef77],li>.menuitem>input.checkbox+label[data-v-695aef77]{padding:0 !important;width:100%}li>button>input.checkbox+label[data-v-695aef77]::before,li>a>input.checkbox+label[data-v-695aef77]::before,li>.menuitem>input.checkbox+label[data-v-695aef77]::before{margin:-2px 13px 0}li>button>input.radio+label[data-v-695aef77]::before,li>a>input.radio+label[data-v-695aef77]::before,li>.menuitem>input.radio+label[data-v-695aef77]::before{margin:-2px 12px 0}li>button>input[data-v-695aef77]:not([type=radio]):not([type=checkbox]):not([type=image]),li>a>input[data-v-695aef77]:not([type=radio]):not([type=checkbox]):not([type=image]),li>.menuitem>input[data-v-695aef77]:not([type=radio]):not([type=checkbox]):not([type=image]){width:150px}li>button form[data-v-695aef77],li>a form[data-v-695aef77],li>.menuitem form[data-v-695aef77]{display:flex;flex:1 1 auto}li>button form[data-v-695aef77]:not(:first-child),li>a form[data-v-695aef77]:not(:first-child),li>.menuitem form[data-v-695aef77]:not(:first-child){margin-left:5px}li>button>span.hidden+form[data-v-695aef77],li>button>span[style*=\\\"display:none\\\"]+form[data-v-695aef77],li>a>span.hidden+form[data-v-695aef77],li>a>span[style*=\\\"display:none\\\"]+form[data-v-695aef77],li>.menuitem>span.hidden+form[data-v-695aef77],li>.menuitem>span[style*=\\\"display:none\\\"]+form[data-v-695aef77]{margin-left:0}li>button input[data-v-695aef77],li>a input[data-v-695aef77],li>.menuitem input[data-v-695aef77]{min-width:44px;max-height:40px;margin:2px 0;flex:1 1 auto}li>button input[data-v-695aef77]:not(:first-child),li>a input[data-v-695aef77]:not(:first-child),li>.menuitem input[data-v-695aef77]:not(:first-child){margin-left:5px}li:not(.hidden):not([style*=\\\"display:none\\\"]):first-of-type>button>form[data-v-695aef77],li:not(.hidden):not([style*=\\\"display:none\\\"]):first-of-type>button>input[data-v-695aef77],li:not(.hidden):not([style*=\\\"display:none\\\"]):first-of-type>a>form[data-v-695aef77],li:not(.hidden):not([style*=\\\"display:none\\\"]):first-of-type>a>input[data-v-695aef77],li:not(.hidden):not([style*=\\\"display:none\\\"]):first-of-type>.menuitem>form[data-v-695aef77],li:not(.hidden):not([style*=\\\"display:none\\\"]):first-of-type>.menuitem>input[data-v-695aef77]{margin-top:12px}li:not(.hidden):not([style*=\\\"display:none\\\"]):last-of-type>button>form[data-v-695aef77],li:not(.hidden):not([style*=\\\"display:none\\\"]):last-of-type>button>input[data-v-695aef77],li:not(.hidden):not([style*=\\\"display:none\\\"]):last-of-type>a>form[data-v-695aef77],li:not(.hidden):not([style*=\\\"display:none\\\"]):last-of-type>a>input[data-v-695aef77],li:not(.hidden):not([style*=\\\"display:none\\\"]):last-of-type>.menuitem>form[data-v-695aef77],li:not(.hidden):not([style*=\\\"display:none\\\"]):last-of-type>.menuitem>input[data-v-695aef77]{margin-bottom:12px}li>button[data-v-695aef77]{padding:0}li>button span[data-v-695aef77]{opacity:1}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/assets/material-icons.css\",\"webpack://./src/components/NcPopoverMenu/NcPopoverMenuItem.vue\",\"webpack://./src/assets/variables.scss\"],\"names\":[],\"mappings\":\"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CCND,oBACC,YAAA,CACA,aAAA,CAEA,2BACC,YAAA,CAGD,+EAGC,cAAA,CACA,gBCWe,CDVf,QAAA,CACA,eAAA,CACA,8BAAA,CACA,YAAA,CACA,sBAAA,CACA,WAAA,CACA,QAAA,CACA,SAAA,CACA,kBAAA,CACA,eAAA,CACA,UAAA,CACA,4BAAA,CACA,kBAAA,CACA,UCee,CDZf,ohBAIC,WAAA,CACA,YAAA,CACA,+BAAA,CACA,oBCTS,CDYV,yRAIC,wBAAA,CAQC,ylCACC,gBC7BY,CDkCf,2PAEC,qBAAA,CAGD,6aAGC,oBAAA,CAID,oGACC,0BAAA,CAGD,8FACC,cAAA,CACA,kBAAA,CAID,qFACC,WAAA,CACA,iBAAA,CACA,aAAA,CACA,kBAAA,CAGA,eAAA,CACA,sBAAA,CAID,oGACC,QAAA,CACA,eAAA,CAID,mHACC,6BAAA,CAKD,2FACC,UC7ES,CD8ET,WC9ES,CD+ET,WC3EW,CD+EZ,mRAEC,oBAAA,CACA,UAAA,CAED,sKACC,kBAAA,CAED,6JACC,kBAAA,CAED,4QACC,WAAA,CAID,8FACC,YAAA,CACA,aAAA,CAGA,oJACC,eAAA,CAIF,oTAEC,aAAA,CAGD,iGACC,cCvHc,CDwHd,eAAA,CACA,YAAA,CACA,aAAA,CAEA,uJACC,eAAA,CAUA,+gBACC,eAAA,CAMD,ygBACC,kBAAA,CAKJ,2BACC,SAAA,CACA,gCACC,SCpIY\",\"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\",\"@use 'sass:math'; $scope_version:\\\"c5df3e0\\\"; @import 'variables'; @import 'material-icons';\\n\\nli {\\n\\tdisplay: flex;\\n\\tflex: 0 0 auto;\\n\\n\\t&.hidden {\\n\\t\\tdisplay: none;\\n\\t}\\n\\n\\t> button,\\n\\t> a,\\n\\t> .menuitem {\\n\\t\\tcursor: pointer;\\n\\t\\tline-height: $clickable-area;\\n\\t\\tborder: 0;\\n\\t\\tborder-radius: 0; // otherwise Safari will cut the border-radius area\\n\\t\\tbackground-color: transparent;\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: flex-start;\\n\\t\\theight: auto;\\n\\t\\tmargin: 0;\\n\\t\\tpadding: 0;\\n\\t\\tfont-weight: normal;\\n\\t\\tbox-shadow: none;\\n\\t\\twidth: 100%;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\twhite-space: nowrap;\\n\\t\\topacity: $opacity_normal;\\n\\n\\t\\t// TODO split into individual components for readability\\n\\t\\tspan[class^='icon-'],\\n\\t\\tspan[class*=' icon-'],\\n\\t\\t&[class^='icon-'],\\n\\t\\t&[class*=' icon-'] {\\n\\t\\t\\tmin-width: 0; /* Overwrite icons*/\\n\\t\\t\\tmin-height: 0;\\n\\t\\t\\tbackground-position: #{$icon-margin} center;\\n\\t\\t\\tbackground-size: $icon-size;\\n\\t\\t}\\n\\n\\t\\tspan[class^='icon-'],\\n\\t\\tspan[class*=' icon-'] {\\n\\t\\t\\t/* Keep padding to define the width to\\n\\t\\t\\t\\tassure correct position of a possible text */\\n\\t\\t\\tpadding: #{math.div($clickable-area, 2)} 0 #{math.div($clickable-area, 2)} $clickable-area;\\n\\t\\t}\\n\\n\\t\\t// If no icons set, force left margin to align\\n\\t\\t&:not([class^='icon-']):not([class*='icon-']) {\\n\\t\\t\\t> span,\\n\\t\\t\\t> input,\\n\\t\\t\\t> form {\\n\\t\\t\\t\\t&:not([class^='icon-']):not([class*='icon-']):first-child {\\n\\t\\t\\t\\t\\tmargin-left: $clickable-area;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&[class^='icon-'],\\n\\t\\t&[class*=' icon-'] {\\n\\t\\t\\tpadding: 0 $icon-margin 0 $clickable-area;\\n\\t\\t}\\n\\n\\t\\t&:not(:disabled):hover,\\n\\t\\t&:not(:disabled):focus,\\n\\t\\t&:not(:disabled).active {\\n\\t\\t\\topacity: $opacity_full !important;\\n\\t\\t}\\n\\n\\t\\t/* prevent .action class to break the design */\\n\\t\\t&.action {\\n\\t\\t\\tpadding: inherit !important;\\n\\t\\t}\\n\\n\\t\\t> span {\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t}\\n\\n\\t\\t// long text area\\n\\t\\t> p {\\n\\t\\t\\twidth: 150px;\\n\\t\\t\\tline-height: 1.6em;\\n\\t\\t\\tpadding: 8px 0;\\n\\t\\t\\twhite-space: normal;\\n\\n\\t\\t\\t// in case there are no spaces like long email addresses\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t}\\n\\n\\t\\t// TODO: do we really supports it?\\n\\t\\t> select {\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tmargin-left: 6px;\\n\\t\\t}\\n\\n\\t\\t/* Add padding if contains icon+text */\\n\\t\\t&:not(:empty) {\\n\\t\\t\\tpadding-right: $icon-margin !important;\\n\\t\\t}\\n\\n\\t\\t/* DEPRECATED! old img in popover fallback\\n\\t\\t\\t* TODO: to remove */\\n\\t\\t> img {\\n\\t\\t\\twidth: $icon-size;\\n\\t\\t\\theight: $icon-size;\\n\\t\\t\\tmargin: $icon-margin;\\n\\t\\t}\\n\\n\\t\\t/* checkbox/radio fixes */\\n\\t\\t> input.radio + label,\\n\\t\\t> input.checkbox + label {\\n\\t\\t\\tpadding: 0 !important;\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\t\\t> input.checkbox + label::before {\\n\\t\\t\\tmargin: -2px 13px 0;\\n\\t\\t}\\n\\t\\t> input.radio + label::before {\\n\\t\\t\\tmargin: -2px 12px 0;\\n\\t\\t}\\n\\t\\t> input:not([type=radio]):not([type=checkbox]):not([type=image]) {\\n\\t\\t\\twidth: 150px;\\n\\t\\t}\\n\\n\\t\\t// Forms & text inputs\\n\\t\\tform {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex: 1 1 auto;\\n\\t\\t\\t/* put a small space between text and form\\n\\t\\t\\t\\tif there is an element before */\\n\\t\\t\\t&:not(:first-child) {\\n\\t\\t\\t\\tmargin-left: 5px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t/* no margin if hidden span before */\\n\\t\\t> span.hidden + form,\\n\\t\\t> span[style*='display:none'] + form {\\n\\t\\t\\tmargin-left: 0;\\n\\t\\t}\\n\\t\\t/* Inputs inside popover supports text, submit & reset */\\n\\t\\tinput {\\n\\t\\t\\tmin-width: $clickable-area;\\n\\t\\t\\tmax-height: #{$clickable-area - 4px}; /* twice the element margin-y */\\n\\t\\t\\tmargin: 2px 0;\\n\\t\\t\\tflex: 1 1 auto;\\n\\t\\t\\t// space between inline inputs\\n\\t\\t\\t&:not(:first-child) {\\n\\t\\t\\t\\tmargin-left: 5px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t// TODO: do that in js, should be cleaner\\n\\t/* css hack, only first not hidden */\\n\\t&:not(.hidden):not([style*='display:none']) {\\n\\t\\t&:first-of-type {\\n\\t\\t\\t> button, > a, > .menuitem {\\n\\t\\t\\t\\t> form, > input {\\n\\t\\t\\t\\t\\tmargin-top: $icon-margin - 2px; // minus the input margin\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t&:last-of-type {\\n\\t\\t\\t> button, > a, > .menuitem {\\n\\t\\t\\t\\t> form, > input {\\n\\t\\t\\t\\t\\tmargin-bottom: $icon-margin - 2px; // minus the input margin\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\t> button {\\n\\t\\tpadding: 0;\\n\\t\\tspan {\\n\\t\\t\\topacity: $opacity_full;\\n\\t\\t}\\n\\t}\\n}\\n\",\"/**\\n * @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @author John Molakvoæ <skjnldsv@protonmail.com>\\n *\\n * @license GNU AGPL version 3 or any later version\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\\n *\\n */\\n\\n// https://uxplanet.org/7-rules-for-mobile-ui-button-design-e9cf2ea54556\\n// recommended is 48px\\n// 44px is what we choose and have very good visual-to-usability ratio\\n$clickable-area: 44px;\\n\\n// background icon size\\n// also used for the scss icon font\\n$icon-size: 16px;\\n\\n// icon padding for a $clickable-area width and a $icon-size icon\\n// ( 44px - 16px ) / 2\\n$icon-margin: math.div($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\\n// top-bar spacing\\n$topbar-margin: 4px;\\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-32fccbe9]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.mention-bubble--primary .mention-bubble__content[data-v-32fccbe9]{color:var(--color-primary-text);background-color:var(--color-primary-element)}.mention-bubble__wrapper[data-v-32fccbe9]{max-width:150px;height:18px;vertical-align:text-bottom;display:inline-flex;align-items:center}.mention-bubble__content[data-v-32fccbe9]{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-32fccbe9]{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-32fccbe9]{color:inherit;background-size:cover}.mention-bubble__title[data-v-32fccbe9]{overflow:hidden;margin-left:2px;white-space:nowrap;text-overflow:ellipsis}.mention-bubble__title[data-v-32fccbe9]::before{content:attr(title)}.mention-bubble__select[data-v-32fccbe9]{position:absolute;z-index:-1;left:-1000px}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/assets/material-icons.css\",\"webpack://./src/components/NcRichContenteditable/NcMentionBubble.vue\"],\"names\":[],\"mappings\":\"AAGA,uCACC,YAAA,CACA,iBAAA,CACA,mBAAA,CACA,kBAAA,CACA,sBAAA,CAAA,mECCC,+BAAA,CACA,6CAAA,CAGD,0CACC,eAXiB,CAajB,WAAA,CACA,0BAAA,CACA,mBAAA,CACA,kBAAA,CAGD,0CACC,mBAAA,CACA,eAAA,CACA,kBAAA,CACA,cAAA,CACA,WAzBc,CA0Bd,wBAAA,CACA,gBAAA,CACA,iBAAA,CACA,gBA3Be,CA4Bf,kBAAA,CACA,6CAAA,CAGD,uCACC,iBAAA,CACA,UAjCmB,CAkCnB,WAlCmB,CAmCnB,iBAAA,CACA,+CAAA,CACA,2BAAA,CACA,0BAAA,CACA,oBAAA,CAEA,oDACC,aAAA,CACA,qBAAA,CAIF,wCACC,eAAA,CACA,eAlDe,CAmDf,kBAAA,CACA,sBAAA,CAEA,gDACC,mBAAA,CAKF,yCACC,iBAAA,CACA,UAAA,CACA,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\",\"@use 'sass:math'; $scope_version:\\\"c5df3e0\\\"; @import 'variables'; @import 'material-icons';\\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: math.div($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: math.div($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","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\nbutton.menuitem[data-v-695aef77] {\\n\\ttext-align: left;\\n}\\nbutton.menuitem *[data-v-695aef77] {\\n\\tcursor: pointer;\\n}\\nbutton.menuitem[data-v-695aef77]:disabled {\\n\\topacity: 0.5 !important;\\n\\tcursor: default;\\n}\\nbutton.menuitem:disabled *[data-v-695aef77] {\\n\\tcursor: default;\\n}\\n.menuitem.active[data-v-695aef77] {\\n\\tbox-shadow: inset 2px 0 var(--color-primary);\\n\\tborder-radius: 0;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/NcPopoverMenu/NcPopoverMenuItem.vue\"],\"names\":[],\"mappings\":\";AAgYA;CACA,gBAAA;AACA;AAEA;CACA,eAAA;AACA;AAEA;CACA,uBAAA;CACA,eAAA;AACA;AAEA;CACA,eAAA;AACA;AAEA;CACA,4CAAA;CACA,gBAAA;AACA\",\"sourcesContent\":[\"<!--\\n - @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\\n -\\n - @author John Molakvoæ <skjnldsv@protonmail.com>\\n -\\n - @license GNU AGPL version 3 or any later version\\n -\\n - This program is free software: you can redistribute it and/or modify\\n - it under the terms of the GNU Affero General Public License as\\n - published by the Free Software Foundation, either version 3 of the\\n - License, or (at your option) any later version.\\n -\\n - This program is distributed in the hope that it will be useful,\\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n - GNU Affero General Public License for more details.\\n -\\n - You should have received a copy of the GNU Affero General Public License\\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\\n -\\n -->\\n\\n<template>\\n\\t<li class=\\\"popover__menuitem\\\">\\n\\t\\t<!-- If item.href is set, a link will be directly used -->\\n\\t\\t<a v-if=\\\"item.href\\\"\\n\\t\\t\\t:href=\\\"(item.href) ? item.href : '#' \\\"\\n\\t\\t\\t:target=\\\"(item.target) ? item.target : '' \\\"\\n\\t\\t\\t:download=\\\"item.download\\\"\\n\\t\\t\\tclass=\\\"focusable\\\"\\n\\t\\t\\trel=\\\"nofollow noreferrer noopener\\\"\\n\\t\\t\\t@click=\\\"action\\\">\\n\\t\\t\\t<span v-if=\\\"!iconIsUrl\\\" :class=\\\"item.icon\\\" />\\n\\t\\t\\t<img v-else :src=\\\"item.icon\\\">\\n\\t\\t\\t<p v-if=\\\"item.text && item.longtext\\\">\\n\\t\\t\\t\\t<strong class=\\\"menuitem-text\\\">\\n\\t\\t\\t\\t\\t{{ item.text }}\\n\\t\\t\\t\\t</strong><br>\\n\\t\\t\\t\\t<span class=\\\"menuitem-text-detail\\\">\\n\\t\\t\\t\\t\\t{{ item.longtext }}\\n\\t\\t\\t\\t</span>\\n\\t\\t\\t</p>\\n\\t\\t\\t<span v-else-if=\\\"item.text\\\">\\n\\t\\t\\t\\t{{ item.text }}\\n\\t\\t\\t</span>\\n\\t\\t\\t<p v-else-if=\\\"item.longtext\\\">\\n\\t\\t\\t\\t{{ item.longtext }}\\n\\t\\t\\t</p>\\n\\t\\t</a>\\n\\n\\t\\t<!-- If item.input is set instead, an put will be used -->\\n\\t\\t<span v-else-if=\\\"item.input\\\" class=\\\"menuitem\\\" :class=\\\"{active: item.active}\\\">\\n\\t\\t\\t<!-- does not show if input is checkbox -->\\n\\t\\t\\t<span v-if=\\\"item.input !== 'checkbox'\\\" :class=\\\"item.icon\\\" />\\n\\n\\t\\t\\t<!-- only shows if input is text -->\\n\\t\\t\\t<form v-if=\\\"item.input === 'text'\\\"\\n\\t\\t\\t\\t:class=\\\"item.input\\\"\\n\\t\\t\\t\\t@submit.prevent=\\\"item.action\\\">\\n\\t\\t\\t\\t<input :type=\\\"item.input\\\"\\n\\t\\t\\t\\t\\t:value=\\\"item.value\\\"\\n\\t\\t\\t\\t\\t:placeholder=\\\"item.text\\\"\\n\\t\\t\\t\\t\\trequired>\\n\\t\\t\\t\\t<input type=\\\"submit\\\" value=\\\"\\\" class=\\\"icon-confirm\\\">\\n\\t\\t\\t</form>\\n\\n\\t\\t\\t<!-- checkbox -->\\n\\t\\t\\t<template v-else>\\n\\t\\t\\t\\t<!-- eslint-disable-next-line -->\\n\\t\\t\\t\\t<input :id=\\\"key\\\" v-model=\\\"item.model\\\"\\n\\t\\t\\t\\t\\t:type=\\\"item.input\\\"\\n\\t\\t\\t\\t\\t:class=\\\"item.input\\\"\\n\\t\\t\\t\\t\\t@change=\\\"item.action\\\">\\n\\t\\t\\t\\t<label :for=\\\"key\\\" @click.stop.prevent=\\\"item.action\\\">\\n\\t\\t\\t\\t\\t{{ item.text }}\\n\\t\\t\\t\\t</label>\\n\\t\\t\\t</template>\\n\\t\\t</span>\\n\\n\\t\\t<!-- If item.action is set instead, a button will be used -->\\n\\t\\t<button v-else-if=\\\"item.action\\\"\\n\\t\\t\\tclass=\\\"menuitem focusable\\\"\\n\\t\\t\\t:class=\\\"{active: item.active}\\\"\\n\\t\\t\\t:disabled=\\\"item.disabled\\\"\\n\\t\\t\\ttype=\\\"button\\\"\\n\\t\\t\\t@click.stop.prevent=\\\"item.action\\\">\\n\\t\\t\\t<span :class=\\\"item.icon\\\" />\\n\\t\\t\\t<p v-if=\\\"item.text && item.longtext\\\">\\n\\t\\t\\t\\t<strong class=\\\"menuitem-text\\\">\\n\\t\\t\\t\\t\\t{{ item.text }}\\n\\t\\t\\t\\t</strong><br>\\n\\t\\t\\t\\t<span class=\\\"menuitem-text-detail\\\">\\n\\t\\t\\t\\t\\t{{ item.longtext }}\\n\\t\\t\\t\\t</span>\\n\\t\\t\\t</p>\\n\\t\\t\\t<span v-else-if=\\\"item.text\\\">\\n\\t\\t\\t\\t{{ item.text }}\\n\\t\\t\\t</span>\\n\\t\\t\\t<p v-else-if=\\\"item.longtext\\\">\\n\\t\\t\\t\\t{{ item.longtext }}\\n\\t\\t\\t</p>\\n\\t\\t</button>\\n\\n\\t\\t<!-- If item.longtext is set AND the item does not have an action -->\\n\\t\\t<span v-else class=\\\"menuitem\\\" :class=\\\"{active: item.active}\\\">\\n\\t\\t\\t<span :class=\\\"item.icon\\\" />\\n\\t\\t\\t<p v-if=\\\"item.text && item.longtext\\\">\\n\\t\\t\\t\\t<strong class=\\\"menuitem-text\\\">\\n\\t\\t\\t\\t\\t{{ item.text }}\\n\\t\\t\\t\\t</strong><br>\\n\\t\\t\\t\\t<span class=\\\"menuitem-text-detail\\\">\\n\\t\\t\\t\\t\\t{{ item.longtext }}\\n\\t\\t\\t\\t</span>\\n\\t\\t\\t</p>\\n\\t\\t\\t<span v-else-if=\\\"item.text\\\">\\n\\t\\t\\t\\t{{ item.text }}\\n\\t\\t\\t</span>\\n\\t\\t\\t<p v-else-if=\\\"item.longtext\\\">\\n\\t\\t\\t\\t{{ item.longtext }}\\n\\t\\t\\t</p>\\n\\t\\t</span>\\n\\t</li>\\n</template>\\n\\n<script>\\nexport default {\\n\\tname: 'NcPopoverMenuItem',\\n\\tprops: {\\n\\t\\titem: {\\n\\t\\t\\ttype: Object,\\n\\t\\t\\trequired: true,\\n\\t\\t\\tdefault: () => {\\n\\t\\t\\t\\treturn {\\n\\t\\t\\t\\t\\tkey: 'nextcloud-link',\\n\\t\\t\\t\\t\\thref: 'https://nextcloud.com',\\n\\t\\t\\t\\t\\ticon: 'icon-links',\\n\\t\\t\\t\\t\\ttext: 'Nextcloud',\\n\\t\\t\\t\\t}\\n\\t\\t\\t},\\n\\t\\t\\t// check the input types\\n\\t\\t\\t// TODO: add more validation of types\\n\\t\\t\\tvalidator: item => {\\n\\t\\t\\t\\t// TODO: support radio\\n\\t\\t\\t\\tif (item.input) {\\n\\t\\t\\t\\t\\treturn ['text', 'checkbox'].indexOf(item.input) !== -1\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\treturn true\\n\\t\\t\\t},\\n\\t\\t},\\n\\t},\\n\\tcomputed: {\\n\\t\\t// random key for inputs binding if not provided\\n\\t\\tkey() {\\n\\t\\t\\treturn this.item.key\\n\\t\\t\\t\\t? this.item.key\\n\\t\\t\\t\\t: Math.round(Math.random() * 16 * 1000000).toString(16)\\n\\t\\t},\\n\\t\\ticonIsUrl() {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\t// eslint-disable-next-line no-new\\n\\t\\t\\t\\tnew URL(this.item.icon)\\n\\t\\t\\t\\treturn true\\n\\t\\t\\t} catch (_) {\\n\\t\\t\\t\\treturn false\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n\\tmethods: {\\n\\t\\t// allow us to use both link and an action on `a`\\n\\t\\t// we still need to make sure item.action exists\\n\\t\\taction(event) {\\n\\t\\t\\tif (this.item.action) {\\n\\t\\t\\t\\tthis.item.action(event)\\n\\t\\t\\t}\\n\\t\\t},\\n\\t},\\n}\\n</script>\\n\\n<style scoped>\\n\\tbutton.menuitem {\\n\\t\\ttext-align: left;\\n\\t}\\n\\n\\tbutton.menuitem * {\\n\\t\\tcursor: pointer;\\n\\t}\\n\\n\\tbutton.menuitem:disabled {\\n\\t\\topacity: 0.5 !important;\\n\\t\\tcursor: default;\\n\\t}\\n\\n\\tbutton.menuitem:disabled * {\\n\\t\\tcursor: default;\\n\\t}\\n\\n\\t.menuitem.active {\\n\\t\\tbox-shadow: inset 2px 0 var(--color-primary);\\n\\t\\tborder-radius: 0;\\n\\t}\\n</style>\\n\\n<style lang=\\\"scss\\\" scoped>\\nli {\\n\\tdisplay: flex;\\n\\tflex: 0 0 auto;\\n\\n\\t&.hidden {\\n\\t\\tdisplay: none;\\n\\t}\\n\\n\\t> button,\\n\\t> a,\\n\\t> .menuitem {\\n\\t\\tcursor: pointer;\\n\\t\\tline-height: $clickable-area;\\n\\t\\tborder: 0;\\n\\t\\tborder-radius: 0; // otherwise Safari will cut the border-radius area\\n\\t\\tbackground-color: transparent;\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: flex-start;\\n\\t\\theight: auto;\\n\\t\\tmargin: 0;\\n\\t\\tpadding: 0;\\n\\t\\tfont-weight: normal;\\n\\t\\tbox-shadow: none;\\n\\t\\twidth: 100%;\\n\\t\\tcolor: var(--color-main-text);\\n\\t\\twhite-space: nowrap;\\n\\t\\topacity: $opacity_normal;\\n\\n\\t\\t// TODO split into individual components for readability\\n\\t\\tspan[class^='icon-'],\\n\\t\\tspan[class*=' icon-'],\\n\\t\\t&[class^='icon-'],\\n\\t\\t&[class*=' icon-'] {\\n\\t\\t\\tmin-width: 0; /* Overwrite icons*/\\n\\t\\t\\tmin-height: 0;\\n\\t\\t\\tbackground-position: #{$icon-margin} center;\\n\\t\\t\\tbackground-size: $icon-size;\\n\\t\\t}\\n\\n\\t\\tspan[class^='icon-'],\\n\\t\\tspan[class*=' icon-'] {\\n\\t\\t\\t/* Keep padding to define the width to\\n\\t\\t\\t\\tassure correct position of a possible text */\\n\\t\\t\\tpadding: #{math.div($clickable-area, 2)} 0 #{math.div($clickable-area, 2)} $clickable-area;\\n\\t\\t}\\n\\n\\t\\t// If no icons set, force left margin to align\\n\\t\\t&:not([class^='icon-']):not([class*='icon-']) {\\n\\t\\t\\t> span,\\n\\t\\t\\t> input,\\n\\t\\t\\t> form {\\n\\t\\t\\t\\t&:not([class^='icon-']):not([class*='icon-']):first-child {\\n\\t\\t\\t\\t\\tmargin-left: $clickable-area;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&[class^='icon-'],\\n\\t\\t&[class*=' icon-'] {\\n\\t\\t\\tpadding: 0 $icon-margin 0 $clickable-area;\\n\\t\\t}\\n\\n\\t\\t&:not(:disabled):hover,\\n\\t\\t&:not(:disabled):focus,\\n\\t\\t&:not(:disabled).active {\\n\\t\\t\\topacity: $opacity_full !important;\\n\\t\\t}\\n\\n\\t\\t/* prevent .action class to break the design */\\n\\t\\t&.action {\\n\\t\\t\\tpadding: inherit !important;\\n\\t\\t}\\n\\n\\t\\t> span {\\n\\t\\t\\tcursor: pointer;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t}\\n\\n\\t\\t// long text area\\n\\t\\t> p {\\n\\t\\t\\twidth: 150px;\\n\\t\\t\\tline-height: 1.6em;\\n\\t\\t\\tpadding: 8px 0;\\n\\t\\t\\twhite-space: normal;\\n\\n\\t\\t\\t// in case there are no spaces like long email addresses\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t}\\n\\n\\t\\t// TODO: do we really supports it?\\n\\t\\t> select {\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tmargin-left: 6px;\\n\\t\\t}\\n\\n\\t\\t/* Add padding if contains icon+text */\\n\\t\\t&:not(:empty) {\\n\\t\\t\\tpadding-right: $icon-margin !important;\\n\\t\\t}\\n\\n\\t\\t/* DEPRECATED! old img in popover fallback\\n\\t\\t\\t* TODO: to remove */\\n\\t\\t> img {\\n\\t\\t\\twidth: $icon-size;\\n\\t\\t\\theight: $icon-size;\\n\\t\\t\\tmargin: $icon-margin;\\n\\t\\t}\\n\\n\\t\\t/* checkbox/radio fixes */\\n\\t\\t> input.radio + label,\\n\\t\\t> input.checkbox + label {\\n\\t\\t\\tpadding: 0 !important;\\n\\t\\t\\twidth: 100%;\\n\\t\\t}\\n\\t\\t> input.checkbox + label::before {\\n\\t\\t\\tmargin: -2px 13px 0;\\n\\t\\t}\\n\\t\\t> input.radio + label::before {\\n\\t\\t\\tmargin: -2px 12px 0;\\n\\t\\t}\\n\\t\\t> input:not([type=radio]):not([type=checkbox]):not([type=image]) {\\n\\t\\t\\twidth: 150px;\\n\\t\\t}\\n\\n\\t\\t// Forms & text inputs\\n\\t\\tform {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex: 1 1 auto;\\n\\t\\t\\t/* put a small space between text and form\\n\\t\\t\\t\\tif there is an element before */\\n\\t\\t\\t&:not(:first-child) {\\n\\t\\t\\t\\tmargin-left: 5px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t/* no margin if hidden span before */\\n\\t\\t> span.hidden + form,\\n\\t\\t> span[style*='display:none'] + form {\\n\\t\\t\\tmargin-left: 0;\\n\\t\\t}\\n\\t\\t/* Inputs inside popover supports text, submit & reset */\\n\\t\\tinput {\\n\\t\\t\\tmin-width: $clickable-area;\\n\\t\\t\\tmax-height: #{$clickable-area - 4px}; /* twice the element margin-y */\\n\\t\\t\\tmargin: 2px 0;\\n\\t\\t\\tflex: 1 1 auto;\\n\\t\\t\\t// space between inline inputs\\n\\t\\t\\t&:not(:first-child) {\\n\\t\\t\\t\\tmargin-left: 5px;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t// TODO: do that in js, should be cleaner\\n\\t/* css hack, only first not hidden */\\n\\t&:not(.hidden):not([style*='display:none']) {\\n\\t\\t&:first-of-type {\\n\\t\\t\\t> button, > a, > .menuitem {\\n\\t\\t\\t\\t> form, > input {\\n\\t\\t\\t\\t\\tmargin-top: $icon-margin - 2px; // minus the input margin\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\t&:last-of-type {\\n\\t\\t\\t> button, > a, > .menuitem {\\n\\t\\t\\t\\t> form, > input {\\n\\t\\t\\t\\t\\tmargin-bottom: $icon-margin - 2px; // minus the input margin\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\t> button {\\n\\t\\tpadding: 0;\\n\\t\\tspan {\\n\\t\\t\\topacity: $opacity_full;\\n\\t\\t}\\n\\t}\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === \"string\") {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, \"\"]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};","\"use strict\";\n\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\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};","\"use strict\";\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 indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n\n return updater;\n}\n\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\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};","\"use strict\";\n\nvar memo = {};\n/* istanbul ignore next */\n\nfunction getTarget(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/* istanbul ignore next */\n\n\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\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\nmodule.exports = insertBySelector;","\"use strict\";\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\n\nmodule.exports = insertStyleElement;","\"use strict\";\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = typeof __webpack_nonce__ !== \"undefined\" ? __webpack_nonce__ : null;\n\n if (nonce) {\n styleElement.setAttribute(\"nonce\", nonce);\n }\n}\n\nmodule.exports = setAttributesWithoutAttributes;","\"use strict\";\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = \"\";\n\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n\n var needLayer = typeof obj.layer !== \"undefined\";\n\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n\n css += obj.css;\n\n if (needLayer) {\n css += \"}\";\n }\n\n if (obj.media) {\n css += \"}\";\n }\n\n if (obj.supports) {\n css += \"}\";\n }\n\n var sourceMap = obj.sourceMap;\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 options.styleTagTransform(css, styleElement, options.options);\n}\n\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n\n styleElement.parentNode.removeChild(styleElement);\n}\n/* istanbul ignore next */\n\n\nfunction domAPI(options) {\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\n\nmodule.exports = domAPI;","\"use strict\";\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css;\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild);\n }\n\n styleElement.appendChild(document.createTextNode(css));\n }\n}\n\nmodule.exports = styleTagTransform;","export default \"data:image/svg+xml;base64,PCEtLSBUaGlzIGljb24gaXMgcGFydCBvZiBNYXRlcmlhbCBVSSBJY29ucy4gQ29weXJpZ2h0IDIwMjAgR29vZ2xlIEluYy4sIEFwYWNoZS0yLjAgTGljZW5zZSAtLT4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZmlsbD0ibm9uZSIgZD0iTS00LTRoMjR2MjRILTR6Ii8+PHBhdGggZD0iTTYuOS4xQzMgLjYtLjEgNC0uMSA4YzAgNC40IDMuNiA4IDggOCA0IDAgNy40LTMgOC02LjktMS4yIDEuMy0yLjkgMi4xLTQuNyAyLjEtMy41IDAtNi40LTIuOS02LjQtNi40IDAtMS45LjgtMy42IDIuMS00Ljd6IiBmaWxsPSIjZjRhMzMxIi8+PC9zdmc+Cg==\"","export default \"data:image/svg+xml;base64,PCEtLSBUaGlzIGljb24gaXMgcGFydCBvZiBNYXRlcmlhbCBVSSBJY29ucy4gQ29weXJpZ2h0IDIwMjAgR29vZ2xlIEluYy4sIEFwYWNoZS0yLjAgTGljZW5zZSAtLT4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZD0iTS00LTRoMjR2MjRILTRWLTR6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTggMEMzLjYgMCAwIDMuNiAwIDhzMy42IDggOCA4IDgtMy42IDgtOC0zLjYtOC04LTh6IiBmaWxsPSIjZWQ0ODRjIi8+PHBhdGggZD0iTTUgNi41aDZjLjggMCAxLjUuNyAxLjUgMS41cy0uNyAxLjUtMS41IDEuNUg1Yy0uOCAwLTEuNS0uNy0xLjUtMS41UzQuMiA2LjUgNSA2LjV6IiBmaWxsPSIjZmRmZmZmIi8+PC9zdmc+Cg==\"","export default \"data:image/svg+xml;base64,PCEtLSBUaGlzIGljb24gaXMgcGFydCBvZiBNYXRlcmlhbCBVSSBJY29ucy4gQ29weXJpZ2h0IDIwMjAgR29vZ2xlIEluYy4sIEFwYWNoZS0yLjAgTGljZW5zZSAtLT4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZD0iTTQuOCAxMS4yaDYuNFY0LjhINC44djYuNHpNOCAwQzMuNiAwIDAgMy42IDAgOHMzLjYgOCA4IDggOC0zLjYgOC04LTMuNi04LTgtOHoiIGZpbGw9IiM0OWIzODIiLz48L3N2Zz4K\"","/* 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 =\n typeof scriptExports === 'function' ? scriptExports.options : 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) {\n // 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 ? [].concat(existing, hook) : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","module.exports = require(\"@nextcloud/auth\");","module.exports = require(\"@nextcloud/axios\");","module.exports = require(\"@nextcloud/browser-storage\");","module.exports = require(\"@nextcloud/event-bus\");","module.exports = require(\"@nextcloud/l10n/dist/gettext.js\");","module.exports = require(\"@nextcloud/router\");","module.exports = require(\"floating-vue\");","module.exports = require(\"focus-trap\");","module.exports = require(\"v-click-outside\");","module.exports = require(\"vue\");","module.exports = require(\"vue-material-design-icons/Check.vue\");","module.exports = require(\"vue-material-design-icons/DotsHorizontal.vue\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nc = undefined;","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"dashboard-widget\"},[(_vm.showHalfNcArea)?_c('NcEmptyContent',{staticClass:\"half-screen\",scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_vm._t(\"halfEmptyContentIcon\",function(){return [_c('Check')]})]},proxy:true},{key:\"desc\",fn:function(){return [_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.halfEmptyContentString)+\"\\n\\t\\t\\t\")]},proxy:true}],null,true)}):_vm._e(),_vm._v(\" \"),_c('ul',_vm._l((_vm.displayedItems),function(item){return _c('li',{key:item.id},[_vm._t(\"default\",function(){return [_c('NcDashboardWidgetItem',_vm._g(_vm._b({attrs:{\"item-menu\":_vm.itemMenu}},'NcDashboardWidgetItem',item,false),_vm.handlers))]},{\"item\":item})],2)}),0),_vm._v(\" \"),(_vm.loading)?_c('div',_vm._l((7),function(i){return _c('div',{key:i,staticClass:\"item-list__entry\"},[_c('NcAvatar',{staticClass:\"item-avatar\",attrs:{\"size\":44}}),_vm._v(\" \"),_vm._m(0,true)],1)}),0):(_vm.items.length === 0)?_vm._t(\"empty-content\",function(){return [(_vm.emptyContentMessage)?_c('NcEmptyContent',{scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_vm._t(\"emptyContentIcon\")]},proxy:true},{key:\"desc\",fn:function(){return [_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.emptyContentMessage)+\"\\n\\t\\t\\t\\t\")]},proxy:true}],null,true)}):_vm._e()]}):(_vm.showMore)?_c('a',{staticClass:\"more\",attrs:{\"href\":_vm.showMoreUrl,\"target\":\"_blank\",\"tabindex\":\"0\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.showMoreLabel)+\"\\n\\t\\t\")]):_vm._e()],2)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"item__details\"},[_c('h3',[_vm._v(\" \")]),_vm._v(\" \"),_c('p',{staticClass:\"message\"},[_vm._v(\"\\n \\n\\t\\t\\t\\t\\t\")])])\n}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NcDashboardWidget.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!./NcDashboardWidget.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2020 Julien Veyssier <eneiluj@posteo.net>\n -\n - @author Julien Veyssier <eneiluj@posteo.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n<docs>\n\n## Usage\n\n### Simplest example with custom item\n```vue\n<template>\n\t<NcDashboardWidget :items=\"items\">\n\t\t<template #default=\"{ item }\">\n\t\t\t{{ item.title }}\n\t\t</template>\n\t</NcDashboardWidget>\n</template>\n\n<script>\nconst myItems = [\n\t{\n\t\ttitle: 'first',\n\t\tcontent: 'blabla',\n\t},\n\t{\n\t\ttitle: 'second',\n\t\tcontent: 'fuzzfuzz',\n\t},\n]\nexport default {\n\tname: 'MyDashboardWidget',\n\tprops: [],\n\tdata() {\n\t\treturn {\n\t\t\titems: myItems\n\t\t}\n\t},\n}\n</script>\n```\n\n### Complete example using NcDashboardWidgetItem\n\n```vue\n<template>\n\t<NcDashboardWidget :items=\"items\"\n\t\t:show-more-url=\"'https://nextcloud.com'\"\n\t\t:item-menu=\"itemMenu\"\n\t\t@hide=\"onHide\"\n\t\t@markDone=\"onMarkDone\">\n\n\t\t<template #empty-content>\n\t\t\tNothing to display\n\t\t</template>\n\t</NcDashboardWidget>\n</template>\n\n<script>\nconst myItems = [\n\t{\n\t\tid: '1',\n\t\ttargetUrl: 'https://target.org',\n\t\tavatarUrl: 'https://avatar.url/img.png',\n\t\tavatarUsername: 'Robert',\n\t\tavatarIsNoUser: true,\n\t\toverlayIconUrl: '/svg/core/actions/sound?color=000',\n\t\tmainText: 'First item text',\n\t\tsubText: 'First item subtext',\n\t},\n\t{\n\t\tid: '2',\n\t\ttargetUrl: 'https://other-target.org',\n\t\tavatarUrl: 'https://other-avatar.url/img.png',\n\t\toverlayIconUrl: '/svg/core/actions/add?color=000',\n\t\tmainText: 'Second item text',\n\t\tsubText: 'Second item subtext',\n\t},\n]\nconst myItemMenu = {\n\t// triggers an event named \"markDone\" when clicked\n\t'markDone': {\n\t\ttext: 'Mark as done',\n\t\ticon: 'icon-checkmark',\n\t},\n\t// triggers an event named \"hide\" when clicked\n\t'hide': {\n\t\ttext: 'Hide',\n\t\ticon: 'icon-toggle',\n\t}\n}\nexport default {\n\tname: 'MyDashboardWidget',\n\tprops: [],\n\tdata() {\n\t\treturn {\n\t\t\titems: myItems,\n\t\t\titemMenu: myItemMenu,\n\t\t\tloading: true,\n\t\t}\n\t},\n\tmethods: {\n\t\tonMoreClick() {\n\t\t\tconsole.log('more clicked')\n\t\t\tconst win = window.open('https://wherever.you.want', '_blank')\n\t\t\twin.focus()\n\t\t},\n\t\tonHide(item) {\n\t\t\tconsole.log('user wants to hide item ' + item.id)\n\t\t\t// do what you want\n\t\t},\n\t\tonMarkDone(item) {\n\t\t\tconsole.log('user wants to mark item ' + item.id + ' as done')\n\t\t\t// do what you want\n\t\t},\n\t},\n}\n</script>\n```\n\n</docs>\n\n<template>\n\t<div class=\"dashboard-widget\">\n\t\t<!-- This element is shown if we have items, but want to show a general message as well.\n\t\tCan be used e.g. to show \"No mentions\" on top of the item list. -->\n\t\t<NcEmptyContent v-if=\"showHalfNcArea\"\n\t\t\tclass=\"half-screen\">\n\t\t\t<template #icon>\n\t\t\t\t<!-- @slot The icon to show in the half empty content area. -->\n\t\t\t\t<slot name=\"halfEmptyContentIcon\">\n\t\t\t\t\t<Check />\n\t\t\t\t</slot>\n\t\t\t</template>\n\t\t\t<template #desc>\n\t\t\t\t{{ halfEmptyContentString }}\n\t\t\t</template>\n\t\t</NcEmptyContent>\n\t\t<!-- The list of items to show. -->\n\t\t<ul>\n\t\t\t<li v-for=\"item in displayedItems\" :key=\"item.id\">\n\t\t\t\t<!-- @slot The default slot can be optionally overridden. It contains the template of one item. -->\n\t\t\t\t<slot name=\"default\" :item=\"item\">\n\t\t\t\t\t<NcDashboardWidgetItem v-bind=\"item\"\n\t\t\t\t\t\t:item-menu=\"itemMenu\"\n\t\t\t\t\t\tv-on=\"handlers\" />\n\t\t\t\t</slot>\n\t\t\t</li>\n\t\t</ul>\n\t\t<!-- While the widget is loading, we show a list of placeholder items. -->\n\t\t<div v-if=\"loading\">\n\t\t\t<div v-for=\"i in 7\" :key=\"i\" class=\"item-list__entry\">\n\t\t\t\t<NcAvatar class=\"item-avatar\" :size=\"44\" />\n\t\t\t\t<div class=\"item__details\">\n\t\t\t\t\t<h3>&nbsp;</h3>\n\t\t\t\t\t<p class=\"message\">\n&nbsp;\n\t\t\t\t\t</p>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<!-- @slot Slot for showing information in case of an empty item list. -->\n\t\t<slot v-else-if=\"items.length === 0\" name=\"empty-content\">\n\t\t\t<NcEmptyContent v-if=\"emptyContentMessage\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<!-- @slot The icon to show in the empty content area. -->\n\t\t\t\t\t<slot name=\"emptyContentIcon\" />\n\t\t\t\t</template>\n\t\t\t\t<template #desc>\n\t\t\t\t\t{{ emptyContentMessage }}\n\t\t\t\t</template>\n\t\t\t</NcEmptyContent>\n\t\t</slot>\n\t\t<!-- A \"show more\" link, e.g. to navigate to the main app belonging to this widget. -->\n\t\t<a v-else-if=\"showMore\"\n\t\t\t:href=\"showMoreUrl\"\n\t\t\ttarget=\"_blank\"\n\t\t\tclass=\"more\"\n\t\t\ttabindex=\"0\">\n\t\t\t{{ showMoreLabel }}\n\t\t</a>\n\t</div>\n</template>\n\n<script>\nimport NcAvatar from '../NcAvatar/index.js'\nimport NcDashboardWidgetItem from '../NcDashboardWidgetItem/index.js'\nimport NcEmptyContent from '../NcEmptyContent/index.js'\n\nimport Check from 'vue-material-design-icons/Check.vue'\n\nimport { t } from '../../l10n.js'\n\nexport default {\n\tname: 'NcDashboardWidget',\n\tcomponents: {\n\t\tNcAvatar,\n\t\tNcDashboardWidgetItem,\n\t\tNcEmptyContent,\n\t\tCheck,\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * An array containing the items to show (specific structure must be respected,\n\t\t * except if you override item rendering in the default slot).\n\t\t */\n\t\titems: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => { return [] },\n\t\t},\n\t\t/**\n\t\t * If this is set, a \"show more\" text is displayed on the widget's bottom.\n\t\t * It's a link pointing to this URL.\n\t\t */\n\t\tshowMoreUrl: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * The type of elements to show more.\n\t\t */\n\t\tshowMoreText: {\n\t\t\ttype: String,\n\t\t\tdefault: t('items'),\n\t\t},\n\t\t/**\n\t\t * A boolean to put the widget in a loading state.\n\t\t */\n\t\tloading: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t/**\n\t\t * An object containing context menu entries that will be displayed for each item.\n\t\t */\n\t\titemMenu: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => { return {} },\n\t\t},\n\t\t/**\n\t\t * Whether both the items and the empty content message are shown.\n\t\t * Usefull for e.g. showing \"No mentions\" and a list of elements.\n\t\t */\n\t\tshowItemsAndEmptyContent: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t/**\n\t\t * The text to show in the empty content area.\n\t\t */\n\t\temptyContentMessage: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * The text to show in the half empty content area.\n\t\t */\n\t\thalfEmptyContentMessage: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\n\tcomputed: {\n\t\t// forward menu events to my parent\n\t\thandlers() {\n\t\t\tconst h = {}\n\t\t\tfor (const evName in this.itemMenu) {\n\t\t\t\th[evName] = (it) => {\n\t\t\t\t\tthis.$emit(evName, it)\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn h\n\t\t},\n\t\tdisplayedItems() {\n\t\t\tconst nbItems = (this.showMoreUrl && this.items.length >= this.maxItemNumber)\n\t\t\t\t? this.maxItemNumber - 1\n\t\t\t\t: this.maxItemNumber\n\t\t\treturn this.items.slice(0, nbItems)\n\t\t},\n\n\t\tshowHalfEmptyContentArea() {\n\t\t\treturn this.showItemsAndEmptyContent && this.halfEmptyContentString && this.items.length !== 0\n\t\t},\n\n\t\thalfEmptyContentString() {\n\t\t\treturn this.halfEmptyContentMessage || this.emptyContentMessage\n\t\t},\n\n\t\tmaxItemNumber() {\n\t\t\treturn this.showItemsAndEmptyContent ? 5 : 7\n\t\t},\n\n\t\tshowMore() {\n\t\t\treturn this.showMoreUrl && this.items.length >= this.maxItemNumber\n\t\t},\n\n\t\tshowMoreLabel() {\n\t\t\treturn t('More {dashboardItemType} …', { dashboardItemType: this.showMoreText })\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.dashboard-widget .empty-content {\n\ttext-align: center;\n\tmargin-top: 5vh;\n\n\t&.half-screen {\n\t\tmargin-top: 0;\n\t\tmargin-bottom: 1vh;\n\t}\n}\n\n.more {\n\tdisplay: block;\n\ttext-align: center;\n\tcolor: var(--color-text-maxcontrast);\n\tline-height: 60px;\n\tcursor: pointer;\n\n\t&:hover,\n\t&:focus {\n\t\tbackground-color: var(--color-background-hover);\n\t\tborder-radius: var(--border-radius-large);\n\t\tcolor: var(--color-main-text);\n\t}\n}\n\n/* skeleton */\n.item-list__entry {\n\tdisplay: flex;\n\talign-items: flex-start;\n\tpadding: 8px;\n\n\t.item-avatar {\n\t\tposition: relative;\n\t\tmargin-top: auto;\n\t\tmargin-bottom: auto;\n\t\tbackground-color: var(--color-background-dark) !important;\n\t}\n\t.item__details {\n\t\tpadding-left: 8px;\n\t\tmax-height: 44px;\n\t\tflex-grow: 1;\n\t\toverflow: hidden;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\n\t\th3,\n\t\t.message {\n\t\t\twhite-space: nowrap;\n\t\t\tbackground-color: var(--color-background-dark);\n\t\t}\n\t\th3 {\n\t\t\tfont-size: 100%;\n\t\t\tmargin: 0;\n\t\t}\n\t\t.message {\n\t\t\twidth: 80%;\n\t\t\theight: 15px;\n\t\t\tmargin-top: 5px;\n\t\t}\n\t}\n}\n</style>\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NcDashboardWidget.vue?vue&type=style&index=0&id=263ede20&prod&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/resolve-url-loader/index.js!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-2.use[3]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NcDashboardWidget.vue?vue&type=style&index=0&id=263ede20&prod&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./NcDashboardWidget.vue?vue&type=template&id=263ede20&scoped=true&\"\nimport script from \"./NcDashboardWidget.vue?vue&type=script&lang=js&\"\nexport * from \"./NcDashboardWidget.vue?vue&type=script&lang=js&\"\nimport style0 from \"./NcDashboardWidget.vue?vue&type=style&index=0&id=263ede20&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"263ede20\",\n null\n \n)\n\n/* custom blocks */\nimport block0 from \"./NcDashboardWidget.vue?vue&type=custom&index=0&blockType=docs\"\nif (typeof block0 === 'function') block0(component)\n\nexport default component.exports","import NcDashboardWidget from './NcDashboardWidget.vue'\n\nexport default NcDashboardWidget\n"],"names":["root","factory","exports","module","define","amd","self","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","component","_vm","this","_c","_self","staticClass","class","disabled","attrs","focusable","isFocusable","ariaLabel","on","onClick","_t","isIconUrl","icon","style","backgroundImage","_v","title","_s","domProps","text","isLongText","_e","render","staticRenderFns","getUserHasAvatar","userId","setUserHasAvatar","flag","_g","directives","name","rawName","value","tooltip","expression","closeMenu","ref","userDoesNotExist","hasMenu","avatarStyle","undefined","avatarAriaLabel","$event","type","indexOf","_k","keyCode","key","toggleMenu","apply","arguments","click","iconClass","isAvatarLoaded","avatarUrlLoaded","avatarSrcSetLoaded","menuContainer","contactsMenuOpenState","handlePopoverAfterShow","handlePopoverAfterHide","scopedSlots","_u","fn","contactsMenuLoading","proxy","menu","showUserStatusIconOnAvatar","userStatus","canDisplayUserStatus","status","$slots","initials","_b","buttonClassObject","nativeType","makeActive","makeInactive","ctrlKey","shiftKey","altKey","metaKey","handleTabUp","handleClick","handleBlur","rootElement","$listeners","hasIcon","hasText","hovered","targetUrl","tag","gotMenu","onLinkClick","avatarUrl","avatarUsername","avatarIsNoUser","gotOverlayIcon","overlayIconUrl","mainText","subText","forceMenu","_l","itemMenu","m","menuItemId","preventDefault","stopPropagation","$emit","item","hasTitle","hasDescription","size","colors","popoverBaseClass","$attrs","href","target","download","action","iconIsUrl","longtext","input","active","model","Array","isArray","_i","$$a","$$el","$$c","checked","$$i","$set","concat","slice","_q","composing","show","hide","VTooltip","require","username","hash","toLowerCase","match","md5","replace","GenColors","maximum","finalInt","result","i","length","push","parseInt","charAt","j","steps","hashToInt","gtBuilder","getGettextBuilder","detectLocale","TRANSLATIONS","forEach","lang","translations","pluralId","msgid","msgid_plural","msgstr","addTranslation","locale","gt","build","t","ngettext","bind","gettext","before","default","trim","Vue","$options","$destroy","$el","remove","beforeUpdate","getText","data","computed","methods","mixins","actionGlobal","props","String","closeAfterClick","Boolean","emits","URL","error","event","parent","context","$parent","GetParent","hasStatus","message","fetchUserStatus","capabilities","getCapabilities","Object","prototype","hasOwnProperty","call","user_status","enabled","getCurrentUser","axios","generateOcsUrl","ocs","response","console","isMobile","watch","val","created","window","addEventListener","handleWindowResize","beforeDestroy","removeEventListener","document","documentElement","clientWidth","primary","label","mentionText","MENTION_START","MENTION_END","RegExp","Color","r","g","b","mixPalette","color1","color2","palette","step","ends","stepCalc","red","yellow","blue","palette1","palette2","palette3","Math","random","toString","linkifyStr","defaultProtocol","className","attributes","rel","___CSS_LOADER_EXPORT___","id","___CSS_LOADER_URL_REPLACEMENT_0___","___CSS_LOADER_URL_REPLACEMENT_1___","___CSS_LOADER_URL_REPLACEMENT_2___","cssWithMappingToString","list","map","content","join","modules","mediaQuery","dedupe","alreadyImportedModules","_arrayLikeToArray","arr","len","arr2","_item","_arrayWithHoles","Symbol","iterator","_arr","_n","_d","next","done","err","_iterableToArrayLimit","o","minLen","n","constructor","from","test","_unsupportedIterableToArray","TypeError","_nonIterableRest","cssMapping","btoa","base64","unescape","encodeURIComponent","JSON","stringify","sourceMapping","sourceURLs","sources","source","sourceRoot","url","__esModule","needQuotes","stylesInDOM","getIndexByIdentifier","identifier","modulesToDom","idCountMap","identifiers","base","count","indexByIdentifier","obj","css","media","sourceMap","supports","layer","references","updater","addElementStyle","byIndex","splice","api","update","newObj","lastIdentifiers","newList","index","newLastIdentifiers","_index","memo","styleTarget","querySelector","HTMLIFrameElement","contentDocument","head","e","getTarget","Error","appendChild","element","createElement","styleElement","nonce","setAttribute","needLayer","parentNode","removeChild","removeStyleElement","styleSheet","cssText","firstChild","createTextNode","normalizeComponent","scriptExports","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","_compiled","functional","_scopeId","$vnode","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","shadowRoot","_injectStyles","originalRender","h","existing","beforeCreate","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","d","a","definition","defineProperty","enumerable","get","prop","toStringTag","nc","showHalfNcArea","halfEmptyContentString","displayedItems","handlers","loading","_m","items","emptyContentMessage","showMore","showMoreUrl","showMoreLabel"],"sourceRoot":""}