@nextcloud/vue 9.3.0 → 9.3.2

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 (327) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/README.md +44 -44
  3. package/dist/assets/{NcActionButton-D7bnKlOt.css → NcActionButton-Bb0ihLdt.css} +18 -18
  4. package/dist/assets/{NcActionButtonGroup-CRTH2v24.css → NcActionButtonGroup-Bt8kRk79.css} +8 -8
  5. package/dist/assets/{NcActionInput--OC-0kRP.css → NcActionInput-BxRA_Skn.css} +65 -65
  6. package/dist/assets/{NcActionLink-DjrAv1MG.css → NcActionLink-DAEr-vmd.css} +13 -13
  7. package/dist/assets/{NcActionTextEditable-BPaRhJ6u.css → NcActionTextEditable-TPYz4ma-.css} +65 -65
  8. package/dist/assets/{NcActions-DneK-9R2.css → NcActions-DOI7rRa0.css} +11 -11
  9. package/dist/assets/{NcAppSettingsDialog-Dz8uBPgu.css → NcAppSettingsDialog-CapZ_qNk.css} +10 -10
  10. package/dist/assets/{NcButton-DtYLJgG8.css → NcButton--Fj4gghF.css} +48 -48
  11. package/dist/assets/{NcCheckboxRadioSwitch-C_70VMQr.css → NcCheckboxRadioSwitch-DpYt0YbL.css} +13 -12
  12. package/dist/assets/{NcCollectionList-D9dOsdP2.css → NcCollectionList-C7OiUQQ-.css} +15 -15
  13. package/dist/assets/{NcDateTimePicker-DL6-rWSN.css → NcDateTimePicker-D6xbEbaC.css} +236 -233
  14. package/dist/assets/{NcFormBoxSwitch-BmyNQCbA.css → NcFormBoxSwitch-DScgbxtv.css} +2 -8
  15. package/dist/assets/NcIconToggleSwitch-C29S_5Rp.css +30 -0
  16. package/dist/assets/{NcInputField-DCpslX7k.css → NcInputField-B9DSDOEd.css} +82 -61
  17. package/dist/assets/{NcModal-Dyub1-f2.css → NcModal-Du-f0B7Y.css} +62 -70
  18. package/dist/assets/{NcRelatedResourcesPanel-Bun35PUF.css → NcRelatedResourcesPanel-DYB-wrU0.css} +3 -3
  19. package/dist/assets/{NcRichText-BwHm-gXR.css → NcRichText-RvICaxkO.css} +2 -2
  20. package/dist/assets/{NcSelect-BTLcqg7Y.css → NcSelect-ZnE_MlqV.css} +52 -5
  21. package/dist/assets/{NcTextArea-BKVszZmQ.css → NcTextArea-nivEqHE-.css} +62 -42
  22. package/dist/assets/{NcUserBubble-ChgvvPPf.css → NcUserBubble-B3Jad98g.css} +8 -8
  23. package/dist/chunks/{NcActionButton-DCWUru2b.mjs → NcActionButton-BHXE4UKQ.mjs} +6 -6
  24. package/dist/chunks/NcActionButton-BHXE4UKQ.mjs.map +1 -0
  25. package/dist/chunks/{NcActionButtonGroup-QgGuZcPA.mjs → NcActionButtonGroup-B2MGnwK_.mjs} +5 -5
  26. package/dist/chunks/NcActionButtonGroup-B2MGnwK_.mjs.map +1 -0
  27. package/dist/chunks/{NcActionCaption-Fumfjzxj.mjs → NcActionCaption-Cgd3J8jw.mjs} +2 -2
  28. package/dist/chunks/{NcActionCaption-Fumfjzxj.mjs.map → NcActionCaption-Cgd3J8jw.mjs.map} +1 -1
  29. package/dist/chunks/{NcActionCheckbox-CwrO3g3I.mjs → NcActionCheckbox-BTHrh-Mu.mjs} +2 -2
  30. package/dist/chunks/{NcActionCheckbox-CwrO3g3I.mjs.map → NcActionCheckbox-BTHrh-Mu.mjs.map} +1 -1
  31. package/dist/chunks/{NcActionInput-Bw4UxfFB.mjs → NcActionInput-D1uLWx4N.mjs} +12 -10
  32. package/dist/chunks/NcActionInput-D1uLWx4N.mjs.map +1 -0
  33. package/dist/chunks/{NcActionLink-afakPM_N.mjs → NcActionLink-Cd69py4e.mjs} +5 -5
  34. package/dist/chunks/NcActionLink-Cd69py4e.mjs.map +1 -0
  35. package/dist/chunks/{NcActionRadio-ByCpOD0q.mjs → NcActionRadio-BM24rDbc.mjs} +2 -2
  36. package/dist/chunks/{NcActionRadio-ByCpOD0q.mjs.map → NcActionRadio-BM24rDbc.mjs.map} +1 -1
  37. package/dist/chunks/{NcActionRouter-oT-YU_jf.mjs → NcActionRouter-DtxPh20B.mjs} +3 -3
  38. package/dist/chunks/{NcActionRouter-oT-YU_jf.mjs.map → NcActionRouter-DtxPh20B.mjs.map} +1 -1
  39. package/dist/chunks/{NcActionText-uKvLcEY6.mjs → NcActionText-Bd1fgVqA.mjs} +3 -3
  40. package/dist/chunks/{NcActionText-uKvLcEY6.mjs.map → NcActionText-Bd1fgVqA.mjs.map} +1 -1
  41. package/dist/chunks/{NcActionTextEditable-BQXCci7D.mjs → NcActionTextEditable-DAMWWXnR.mjs} +5 -5
  42. package/dist/chunks/NcActionTextEditable-DAMWWXnR.mjs.map +1 -0
  43. package/dist/chunks/{NcActions-B0kM6AYb.mjs → NcActions-4R7icatI.mjs} +6 -6
  44. package/dist/chunks/NcActions-4R7icatI.mjs.map +1 -0
  45. package/dist/chunks/{NcAppContent-BbtKZp6w.mjs → NcAppContent-DFbY2ERd.mjs} +5 -5
  46. package/dist/chunks/{NcAppContent-BbtKZp6w.mjs.map → NcAppContent-DFbY2ERd.mjs.map} +1 -1
  47. package/dist/chunks/{NcAppNavigation-CROkGlDE.mjs → NcAppNavigation-CjnufbC2.mjs} +6 -6
  48. package/dist/chunks/{NcAppNavigation-CROkGlDE.mjs.map → NcAppNavigation-CjnufbC2.mjs.map} +1 -1
  49. package/dist/chunks/{NcAppNavigationCaption-CuGe5Mev.mjs → NcAppNavigationCaption-DiLoiMN5.mjs} +2 -2
  50. package/dist/chunks/{NcAppNavigationCaption-CuGe5Mev.mjs.map → NcAppNavigationCaption-DiLoiMN5.mjs.map} +1 -1
  51. package/dist/chunks/{NcAppNavigationItem-DU-pLjwa.mjs → NcAppNavigationItem-B307vBI9.mjs} +6 -6
  52. package/dist/chunks/{NcAppNavigationItem-DU-pLjwa.mjs.map → NcAppNavigationItem-B307vBI9.mjs.map} +1 -1
  53. package/dist/chunks/{NcAppNavigationNew-DJbq5wr_.mjs → NcAppNavigationNew-WS0F9mau.mjs} +2 -2
  54. package/dist/chunks/{NcAppNavigationNew-DJbq5wr_.mjs.map → NcAppNavigationNew-WS0F9mau.mjs.map} +1 -1
  55. package/dist/chunks/{NcAppNavigationNewItem-CoRu6Q9O.mjs → NcAppNavigationNewItem-DYH3Gimz.mjs} +2 -2
  56. package/dist/chunks/{NcAppNavigationNewItem-CoRu6Q9O.mjs.map → NcAppNavigationNewItem-DYH3Gimz.mjs.map} +1 -1
  57. package/dist/chunks/{NcAppNavigationSearch-DaIFceYy.mjs → NcAppNavigationSearch-Bi367hd4.mjs} +4 -4
  58. package/dist/chunks/{NcAppNavigationSearch-DaIFceYy.mjs.map → NcAppNavigationSearch-Bi367hd4.mjs.map} +1 -1
  59. package/dist/chunks/{NcAppNavigationSettings-45tEbBBm.mjs → NcAppNavigationSettings-CaTjgcVj.mjs} +5 -5
  60. package/dist/chunks/{NcAppNavigationSettings-45tEbBBm.mjs.map → NcAppNavigationSettings-CaTjgcVj.mjs.map} +1 -1
  61. package/dist/chunks/{NcAppSettingsDialog-lTULgn3p.mjs → NcAppSettingsDialog-NlVP7Fo7.mjs} +7 -7
  62. package/dist/chunks/{NcAppSettingsDialog-lTULgn3p.mjs.map → NcAppSettingsDialog-NlVP7Fo7.mjs.map} +1 -1
  63. package/dist/chunks/{NcAppSettingsSection-B9R7enkC.mjs → NcAppSettingsSection-B2pFK0UK.mjs} +2 -2
  64. package/dist/chunks/{NcAppSettingsSection-B9R7enkC.mjs.map → NcAppSettingsSection-B2pFK0UK.mjs.map} +1 -1
  65. package/dist/chunks/{NcAppSettingsShortcutsSection-DIIuKYzs.mjs → NcAppSettingsShortcutsSection-DDmDMMsF.mjs} +4 -4
  66. package/dist/chunks/{NcAppSettingsShortcutsSection-DIIuKYzs.mjs.map → NcAppSettingsShortcutsSection-DDmDMMsF.mjs.map} +1 -1
  67. package/dist/chunks/{NcAppSidebar-X9ktYY0p.mjs → NcAppSidebar-as8lzUZp.mjs} +5 -5
  68. package/dist/chunks/{NcAppSidebar-X9ktYY0p.mjs.map → NcAppSidebar-as8lzUZp.mjs.map} +1 -1
  69. package/dist/chunks/{NcAssistantButton-BID8rRE5.mjs → NcAssistantButton-DqXCpiMp.mjs} +4 -4
  70. package/dist/chunks/{NcAssistantButton-BID8rRE5.mjs.map → NcAssistantButton-DqXCpiMp.mjs.map} +1 -1
  71. package/dist/chunks/{NcAssistantIcon-BUvb4WNg.mjs → NcAssistantIcon-PMYKxGuH.mjs} +2 -2
  72. package/dist/chunks/{NcAssistantIcon-BUvb4WNg.mjs.map → NcAssistantIcon-PMYKxGuH.mjs.map} +1 -1
  73. package/dist/chunks/{NcAvatar-Dxm05R6e.mjs → NcAvatar-S8EJR2BK.mjs} +9 -9
  74. package/dist/chunks/{NcAvatar-Dxm05R6e.mjs.map → NcAvatar-S8EJR2BK.mjs.map} +1 -1
  75. package/dist/chunks/{NcBreadcrumb-CiM9xAAS.mjs → NcBreadcrumb-ChYVw5CP.mjs} +3 -3
  76. package/dist/chunks/{NcBreadcrumb-CiM9xAAS.mjs.map → NcBreadcrumb-ChYVw5CP.mjs.map} +1 -1
  77. package/dist/chunks/{NcBreadcrumbs-geMiBPkk.mjs → NcBreadcrumbs-DHS31Ax7.mjs} +6 -6
  78. package/dist/chunks/{NcBreadcrumbs-geMiBPkk.mjs.map → NcBreadcrumbs-DHS31Ax7.mjs.map} +1 -1
  79. package/dist/chunks/{NcButton-ZNHdqKQl.mjs → NcButton-CzpKEx4V.mjs} +7 -4
  80. package/dist/chunks/NcButton-CzpKEx4V.mjs.map +1 -0
  81. package/dist/chunks/{NcCheckboxRadioSwitch-6ty3DxEG.mjs → NcCheckboxRadioSwitch-DisCqPZK.mjs} +38 -119
  82. package/dist/chunks/NcCheckboxRadioSwitch-DisCqPZK.mjs.map +1 -0
  83. package/dist/chunks/{NcChip-CFf0KxGk.mjs → NcChip-QHPd3nMF.mjs} +6 -6
  84. package/dist/chunks/{NcChip-CFf0KxGk.mjs.map → NcChip-QHPd3nMF.mjs.map} +1 -1
  85. package/dist/chunks/{NcCollectionList-Ds-tmckn.mjs → NcCollectionList-ByFl0-ca.mjs} +10 -9
  86. package/dist/chunks/NcCollectionList-ByFl0-ca.mjs.map +1 -0
  87. package/dist/chunks/{NcColorPicker-BFcR9_1o.mjs → NcColorPicker-DpSDaGrh.mjs} +6 -6
  88. package/dist/chunks/{NcColorPicker-BFcR9_1o.mjs.map → NcColorPicker-DpSDaGrh.mjs.map} +1 -1
  89. package/dist/chunks/{NcContent-BKKnoxxu.mjs → NcContent-BrRHLO19.mjs} +5 -5
  90. package/dist/chunks/{NcContent-BKKnoxxu.mjs.map → NcContent-BrRHLO19.mjs.map} +1 -1
  91. package/dist/chunks/{NcDashboardWidget-cclUqUde.mjs → NcDashboardWidget-CIUrPOLo.mjs} +4 -4
  92. package/dist/chunks/{NcDashboardWidget-cclUqUde.mjs.map → NcDashboardWidget-CIUrPOLo.mjs.map} +1 -1
  93. package/dist/chunks/{NcDashboardWidgetItem-DM96gJkD.mjs → NcDashboardWidgetItem-DdYM1QYk.mjs} +4 -4
  94. package/dist/chunks/{NcDashboardWidgetItem-DM96gJkD.mjs.map → NcDashboardWidgetItem-DdYM1QYk.mjs.map} +1 -1
  95. package/dist/chunks/{NcDateTimePicker-CYRbEpfY.mjs → NcDateTimePicker-DtQaoKbG.mjs} +10 -10
  96. package/dist/chunks/{NcDateTimePicker-CYRbEpfY.mjs.map → NcDateTimePicker-DtQaoKbG.mjs.map} +1 -1
  97. package/dist/chunks/{NcDateTimePickerNative-CR1Yx5Qp.mjs → NcDateTimePickerNative-Dr8_mGlQ.mjs} +3 -3
  98. package/dist/chunks/{NcDateTimePickerNative-CR1Yx5Qp.mjs.map → NcDateTimePickerNative-Dr8_mGlQ.mjs.map} +1 -1
  99. package/dist/chunks/{NcDialog-BY-1v8yi.mjs → NcDialog-BTmnYNeo.mjs} +3 -3
  100. package/dist/chunks/{NcDialog-BY-1v8yi.mjs.map → NcDialog-BTmnYNeo.mjs.map} +1 -1
  101. package/dist/chunks/{NcDialogButton.vue_vue_type_script_setup_true_lang-CF6LnBe7.mjs → NcDialogButton.vue_vue_type_script_setup_true_lang-CYpktNKA.mjs} +4 -4
  102. package/dist/chunks/{NcDialogButton.vue_vue_type_script_setup_true_lang-CF6LnBe7.mjs.map → NcDialogButton.vue_vue_type_script_setup_true_lang-CYpktNKA.mjs.map} +1 -1
  103. package/dist/chunks/{NcEmojiPicker-DMiiRPm1.mjs → NcEmojiPicker-U5k_zceS.mjs} +6 -6
  104. package/dist/chunks/{NcEmojiPicker-DMiiRPm1.mjs.map → NcEmojiPicker-U5k_zceS.mjs.map} +1 -1
  105. package/dist/chunks/{NcFormBox-K2tCRm3B.mjs → NcFormBox-CkgY7Tif.mjs} +2 -2
  106. package/dist/chunks/NcFormBox-CkgY7Tif.mjs.map +1 -0
  107. package/dist/chunks/{NcFormBoxButton-4XaQUTOS.mjs → NcFormBoxButton-Bptd324P.mjs} +3 -3
  108. package/dist/chunks/{NcFormBoxButton-4XaQUTOS.mjs.map → NcFormBoxButton-Bptd324P.mjs.map} +1 -1
  109. package/dist/chunks/{NcFormBoxCopyButton.vue_vue_type_script_setup_true_lang-DTWd7b52.mjs → NcFormBoxCopyButton.vue_vue_type_script_setup_true_lang-DhnfC18v.mjs} +3 -3
  110. package/dist/chunks/{NcFormBoxCopyButton.vue_vue_type_script_setup_true_lang-DTWd7b52.mjs.map → NcFormBoxCopyButton.vue_vue_type_script_setup_true_lang-DhnfC18v.mjs.map} +1 -1
  111. package/dist/chunks/{NcFormBoxItem-BBP76Mkf.mjs → NcFormBoxItem-vnU0KmUL.mjs} +2 -2
  112. package/dist/chunks/{NcFormBoxItem-BBP76Mkf.mjs.map → NcFormBoxItem-vnU0KmUL.mjs.map} +1 -1
  113. package/dist/chunks/{NcFormBoxSwitch-E6Ei7MFo.mjs → NcFormBoxSwitch-DGcRJH9Q.mjs} +10 -15
  114. package/dist/chunks/NcFormBoxSwitch-DGcRJH9Q.mjs.map +1 -0
  115. package/dist/chunks/{NcHeaderButton-tLfDELGu.mjs → NcHeaderButton-CIb5SvFk.mjs} +2 -2
  116. package/dist/chunks/{NcHeaderButton-tLfDELGu.mjs.map → NcHeaderButton-CIb5SvFk.mjs.map} +1 -1
  117. package/dist/chunks/{NcHeaderMenu-ClRw0Xc5.mjs → NcHeaderMenu-CeJZT5-m.mjs} +2 -2
  118. package/dist/chunks/{NcHeaderMenu-ClRw0Xc5.mjs.map → NcHeaderMenu-CeJZT5-m.mjs.map} +1 -1
  119. package/dist/chunks/{NcHotkey-Cya0WRKL.mjs → NcHotkey-BMbdzaIs.mjs} +2 -2
  120. package/dist/chunks/{NcHotkey-Cya0WRKL.mjs.map → NcHotkey-BMbdzaIs.mjs.map} +1 -1
  121. package/dist/chunks/{NcHotkeyList-B9C--U6a.mjs → NcHotkeyList-67NnF26Y.mjs} +3 -3
  122. package/dist/chunks/{NcHotkeyList-B9C--U6a.mjs.map → NcHotkeyList-67NnF26Y.mjs.map} +1 -1
  123. package/dist/chunks/NcIconToggleSwitch-DNEYngCw.mjs +50 -0
  124. package/dist/chunks/NcIconToggleSwitch-DNEYngCw.mjs.map +1 -0
  125. package/dist/chunks/{NcInputConfirmCancel-Brw2dsPI.mjs → NcInputConfirmCancel-DjMO3Xyv.mjs} +3 -3
  126. package/dist/chunks/{NcInputConfirmCancel-Brw2dsPI.mjs.map → NcInputConfirmCancel-DjMO3Xyv.mjs.map} +1 -1
  127. package/dist/chunks/{NcInputField-z8wpYKt2.mjs → NcInputField-D7Nv5QhT.mjs} +11 -11
  128. package/dist/chunks/NcInputField-D7Nv5QhT.mjs.map +1 -0
  129. package/dist/chunks/{NcKbd-D6pM7aJM.mjs → NcKbd-CZdynD1d.mjs} +3 -3
  130. package/dist/chunks/{NcKbd-D6pM7aJM.mjs.map → NcKbd-CZdynD1d.mjs.map} +1 -1
  131. package/dist/chunks/{NcListItem-D5AkAxDh.mjs → NcListItem-Bx93C7tP.mjs} +2 -2
  132. package/dist/chunks/{NcListItem-D5AkAxDh.mjs.map → NcListItem-Bx93C7tP.mjs.map} +1 -1
  133. package/dist/chunks/{NcListItemIcon-D_ReDycv.mjs → NcListItemIcon-IJLXY-te.mjs} +2 -2
  134. package/dist/chunks/{NcListItemIcon-D_ReDycv.mjs.map → NcListItemIcon-IJLXY-te.mjs.map} +1 -1
  135. package/dist/chunks/NcModal-DSCYMxfe.mjs +422 -0
  136. package/dist/chunks/NcModal-DSCYMxfe.mjs.map +1 -0
  137. package/dist/chunks/{NcNoteCard-C6JdnZUp.mjs → NcNoteCard-BUg07N13.mjs} +2 -2
  138. package/dist/chunks/{NcNoteCard-C6JdnZUp.mjs.map → NcNoteCard-BUg07N13.mjs.map} +1 -1
  139. package/dist/chunks/{NcPasswordField-BquWP0Di.mjs → NcPasswordField-CTuWpUWd.mjs} +5 -5
  140. package/dist/chunks/{NcPasswordField-BquWP0Di.mjs.map → NcPasswordField-CTuWpUWd.mjs.map} +1 -1
  141. package/dist/chunks/{NcRadioGroup-CLtk-WPR.mjs → NcRadioGroup-HorQ2m39.mjs} +3 -3
  142. package/dist/chunks/{NcRadioGroup-CLtk-WPR.mjs.map → NcRadioGroup-HorQ2m39.mjs.map} +1 -1
  143. package/dist/chunks/{NcRadioGroupButton-CDA5i7Dq.mjs → NcRadioGroupButton-CAisx7g4.mjs} +3 -3
  144. package/dist/chunks/{NcRadioGroupButton-CDA5i7Dq.mjs.map → NcRadioGroupButton-CAisx7g4.mjs.map} +1 -1
  145. package/dist/chunks/{NcRelatedResourcesPanel-DPwZ4SSu.mjs → NcRelatedResourcesPanel-Dtxd3-o1.mjs} +7 -7
  146. package/dist/chunks/{NcRelatedResourcesPanel-DPwZ4SSu.mjs.map → NcRelatedResourcesPanel-Dtxd3-o1.mjs.map} +1 -1
  147. package/dist/chunks/{NcRichContenteditable-ClUiBH9B.mjs → NcRichContenteditable-Bq1NOBCE.mjs} +16 -11
  148. package/dist/chunks/{NcRichContenteditable-ClUiBH9B.mjs.map → NcRichContenteditable-Bq1NOBCE.mjs.map} +1 -1
  149. package/dist/chunks/{NcRichText-DamxfqDV.mjs → NcRichText-B6VwyPUp.mjs} +8 -7
  150. package/dist/chunks/NcRichText-B6VwyPUp.mjs.map +1 -0
  151. package/dist/chunks/{NcSelect-Ba00b95n.mjs → NcSelect-Cc9_a8nG.mjs} +8 -5
  152. package/dist/chunks/NcSelect-Cc9_a8nG.mjs.map +1 -0
  153. package/dist/chunks/{NcSelectTags-DAxQe-10.mjs → NcSelectTags-JyyA4W_e.mjs} +3 -3
  154. package/dist/chunks/{NcSelectTags-DAxQe-10.mjs.map → NcSelectTags-JyyA4W_e.mjs.map} +1 -1
  155. package/dist/chunks/{NcSelectUsers-DlE8EHdq.mjs → NcSelectUsers-CiTKYuOb.mjs} +3 -3
  156. package/dist/chunks/{NcSelectUsers-DlE8EHdq.mjs.map → NcSelectUsers-CiTKYuOb.mjs.map} +1 -1
  157. package/dist/chunks/{NcSettingsSection-BfK7eHNT.mjs → NcSettingsSection-BcLE6UnZ.mjs} +3 -3
  158. package/dist/chunks/{NcSettingsSection-BfK7eHNT.mjs.map → NcSettingsSection-BcLE6UnZ.mjs.map} +1 -1
  159. package/dist/chunks/{NcSettingsSelectGroup-CO8dnQ6q.mjs → NcSettingsSelectGroup-CUU-GWYl.mjs} +3 -3
  160. package/dist/chunks/{NcSettingsSelectGroup-CO8dnQ6q.mjs.map → NcSettingsSelectGroup-CUU-GWYl.mjs.map} +1 -1
  161. package/dist/chunks/{NcTextArea-Cr27-KiU.mjs → NcTextArea-2CifgNom.mjs} +6 -6
  162. package/dist/chunks/NcTextArea-2CifgNom.mjs.map +1 -0
  163. package/dist/chunks/{NcTextField.vue_vue_type_script_setup_true_lang-BNSMSqMx.mjs → NcTextField.vue_vue_type_script_setup_true_lang-BfjSL2EJ.mjs} +5 -5
  164. package/dist/chunks/{NcTextField.vue_vue_type_script_setup_true_lang-BNSMSqMx.mjs.map → NcTextField.vue_vue_type_script_setup_true_lang-BfjSL2EJ.mjs.map} +1 -1
  165. package/dist/chunks/{NcThemeProvider.vue_vue_type_script_setup_true_lang-nUDJsDGI.mjs → NcThemeProvider.vue_vue_type_script_setup_true_lang-DWn1DRTx.mjs} +2 -2
  166. package/dist/chunks/{NcThemeProvider.vue_vue_type_script_setup_true_lang-nUDJsDGI.mjs.map → NcThemeProvider.vue_vue_type_script_setup_true_lang-DWn1DRTx.mjs.map} +1 -1
  167. package/dist/chunks/{NcTimezonePicker.vue_vue_type_script_setup_true_lang-CVehmrmz.mjs → NcTimezonePicker.vue_vue_type_script_setup_true_lang-BffYEppS.mjs} +5 -5
  168. package/dist/chunks/{NcTimezonePicker.vue_vue_type_script_setup_true_lang-CVehmrmz.mjs.map → NcTimezonePicker.vue_vue_type_script_setup_true_lang-BffYEppS.mjs.map} +1 -1
  169. package/dist/chunks/{NcUserBubble-DEW575GR.mjs → NcUserBubble-CiB-Lu5C.mjs} +8 -8
  170. package/dist/chunks/NcUserBubble-CiB-Lu5C.mjs.map +1 -0
  171. package/dist/chunks/{NcUserStatusIcon-DHHqIgRK.mjs → NcUserStatusIcon-BgElapLh.mjs} +3 -3
  172. package/dist/chunks/{NcUserStatusIcon-DHHqIgRK.mjs.map → NcUserStatusIcon-BgElapLh.mjs.map} +1 -1
  173. package/dist/chunks/_l10n-CgsPi8nC.mjs +145 -0
  174. package/dist/chunks/_l10n-CgsPi8nC.mjs.map +1 -0
  175. package/dist/chunks/{actionText-DYzDdbVe.mjs → actionText-BXR0sWNu.mjs} +2 -2
  176. package/dist/chunks/{actionText-DYzDdbVe.mjs.map → actionText-BXR0sWNu.mjs.map} +1 -1
  177. package/dist/chunks/{colors-BM9KkzNS.mjs → colors-CL_wvNtd.mjs} +2 -2
  178. package/dist/chunks/{colors-BM9KkzNS.mjs.map → colors-CL_wvNtd.mjs.map} +1 -1
  179. package/dist/chunks/constants-Ciwvl5xb.mjs +11 -0
  180. package/dist/chunks/{constants-DrSznhwy.mjs.map → constants-Ciwvl5xb.mjs.map} +1 -1
  181. package/dist/chunks/{constants-Bls5liKo.mjs → constants-wIEKSp2G.mjs} +2 -2
  182. package/dist/chunks/{constants-Bls5liKo.mjs.map → constants-wIEKSp2G.mjs.map} +1 -1
  183. package/dist/chunks/{mdi-HQ-WBPmL.mjs → mdi-DvQxv1t7.mjs} +20 -20
  184. package/dist/chunks/{mdi-HQ-WBPmL.mjs.map → mdi-DvQxv1t7.mjs.map} +1 -1
  185. package/dist/chunks/{referencePickerModal-f8STnNvS.mjs → referencePickerModal-CDHqLZC-.mjs} +8 -8
  186. package/dist/chunks/{referencePickerModal-f8STnNvS.mjs.map → referencePickerModal-CDHqLZC-.mjs.map} +1 -1
  187. package/dist/chunks/useAppSettingsDialog-C73Wx6iQ.mjs +12 -0
  188. package/dist/chunks/{useAppSettingsDialog-DbtEkXa4.mjs.map → useAppSettingsDialog-C73Wx6iQ.mjs.map} +1 -1
  189. package/dist/chunks/{useCopy-pTWmSjcP.mjs → useCopy-D3yAxBJi.mjs} +3 -3
  190. package/dist/chunks/{useCopy-pTWmSjcP.mjs.map → useCopy-D3yAxBJi.mjs.map} +1 -1
  191. package/dist/chunks/useNcActions-BzPO2c4h.mjs +7 -0
  192. package/dist/chunks/{useNcActions-CiGWxAJE.mjs.map → useNcActions-BzPO2c4h.mjs.map} +1 -1
  193. package/dist/chunks/{useNcFormBox-DA9iwXWY.mjs → useNcFormBox-Djlh582y.mjs} +2 -2
  194. package/dist/chunks/{useNcFormBox-DA9iwXWY.mjs.map → useNcFormBox-Djlh582y.mjs.map} +1 -1
  195. package/dist/chunks/{useNcRadioGroup-DaZbEKbf.mjs → useNcRadioGroup-D6llQmAl.mjs} +2 -2
  196. package/dist/chunks/{useNcRadioGroup-DaZbEKbf.mjs.map → useNcRadioGroup-D6llQmAl.mjs.map} +1 -1
  197. package/dist/components/NcActionButton/index.mjs +1 -1
  198. package/dist/components/NcActionButtonGroup/index.mjs +1 -1
  199. package/dist/components/NcActionCaption/index.mjs +1 -1
  200. package/dist/components/NcActionCheckbox/index.mjs +1 -1
  201. package/dist/components/NcActionInput/NcActionInput.vue.d.ts +6 -5
  202. package/dist/components/NcActionInput/index.mjs +1 -1
  203. package/dist/components/NcActionLink/index.mjs +1 -1
  204. package/dist/components/NcActionRadio/index.mjs +1 -1
  205. package/dist/components/NcActionRouter/index.mjs +1 -1
  206. package/dist/components/NcActionText/index.mjs +1 -1
  207. package/dist/components/NcActionTextEditable/index.mjs +1 -1
  208. package/dist/components/NcActions/index.mjs +1 -1
  209. package/dist/components/NcAppContent/index.mjs +1 -1
  210. package/dist/components/NcAppNavigation/index.mjs +1 -1
  211. package/dist/components/NcAppNavigationCaption/index.mjs +1 -1
  212. package/dist/components/NcAppNavigationItem/index.mjs +1 -1
  213. package/dist/components/NcAppNavigationNew/index.mjs +1 -1
  214. package/dist/components/NcAppNavigationNewItem/index.mjs +1 -1
  215. package/dist/components/NcAppNavigationSearch/index.mjs +1 -1
  216. package/dist/components/NcAppNavigationSettings/index.mjs +1 -1
  217. package/dist/components/NcAppSettingsDialog/index.mjs +1 -1
  218. package/dist/components/NcAppSettingsSection/index.mjs +1 -1
  219. package/dist/components/NcAppSettingsSectionShortcuts/index.mjs +1 -1
  220. package/dist/components/NcAppSettingsShortcutsSection/index.mjs +1 -1
  221. package/dist/components/NcAppSidebar/index.mjs +1 -1
  222. package/dist/components/NcAssistantButton/index.mjs +1 -1
  223. package/dist/components/NcAssistantIcon/index.mjs +1 -1
  224. package/dist/components/NcAvatar/NcAvatar.vue.d.ts +2 -2
  225. package/dist/components/NcAvatar/index.mjs +1 -1
  226. package/dist/components/NcBreadcrumb/index.mjs +1 -1
  227. package/dist/components/NcBreadcrumbs/index.mjs +1 -1
  228. package/dist/components/NcButton/index.mjs +1 -1
  229. package/dist/components/NcCheckboxRadioSwitch/index.mjs +1 -1
  230. package/dist/components/NcChip/index.mjs +1 -1
  231. package/dist/components/NcCollectionList/NcCollectionList.vue.d.ts +5 -4
  232. package/dist/components/NcCollectionList/NcCollectionListItem.vue.d.ts +2 -2
  233. package/dist/components/NcCollectionList/index.mjs +1 -1
  234. package/dist/components/NcColorPicker/index.mjs +1 -1
  235. package/dist/components/NcContent/index.mjs +1 -1
  236. package/dist/components/NcDashboardWidget/NcDashboardWidget.vue.d.ts +4 -4
  237. package/dist/components/NcDashboardWidget/index.mjs +1 -1
  238. package/dist/components/NcDashboardWidgetItem/NcDashboardWidgetItem.vue.d.ts +2 -2
  239. package/dist/components/NcDashboardWidgetItem/index.mjs +1 -1
  240. package/dist/components/NcDateTime/NcDateTime.vue.d.ts +1 -1
  241. package/dist/components/NcDateTimePicker/NcDateTimePicker.vue.d.ts +5 -5
  242. package/dist/components/NcDateTimePicker/index.mjs +1 -1
  243. package/dist/components/NcDateTimePickerNative/index.mjs +1 -1
  244. package/dist/components/NcDialog/NcDialog.vue.d.ts +1 -1
  245. package/dist/components/NcDialog/index.mjs +1 -1
  246. package/dist/components/NcDialogButton/index.mjs +1 -1
  247. package/dist/components/NcEmojiPicker/index.mjs +1 -1
  248. package/dist/components/NcFormBox/index.mjs +1 -1
  249. package/dist/components/NcFormBoxButton/index.mjs +1 -1
  250. package/dist/components/NcFormBoxCopyButton/index.mjs +1 -1
  251. package/dist/components/NcFormBoxSwitch/index.mjs +1 -1
  252. package/dist/components/NcHeaderButton/index.mjs +1 -1
  253. package/dist/components/NcHeaderMenu/index.mjs +1 -1
  254. package/dist/components/NcHotkey/index.mjs +1 -1
  255. package/dist/components/NcHotkeyList/index.mjs +1 -1
  256. package/dist/components/NcIconToggleSwitch/NcIconToggleSwitch.vue.d.ts +16 -0
  257. package/dist/components/NcInputField/index.mjs +1 -1
  258. package/dist/components/NcKbd/index.mjs +1 -1
  259. package/dist/components/NcListItem/index.mjs +1 -1
  260. package/dist/components/NcListItemIcon/NcListItemIcon.vue.d.ts +2 -2
  261. package/dist/components/NcListItemIcon/index.mjs +1 -1
  262. package/dist/components/NcModal/NcModal.vue.d.ts +151 -1
  263. package/dist/components/NcModal/index.d.ts +4 -0
  264. package/dist/components/NcModal/index.mjs +1 -1
  265. package/dist/components/NcNoteCard/index.mjs +1 -1
  266. package/dist/components/NcPasswordField/index.mjs +1 -1
  267. package/dist/components/NcRadioGroup/index.mjs +1 -1
  268. package/dist/components/NcRadioGroupButton/index.mjs +1 -1
  269. package/dist/components/NcRelatedResourcesPanel/index.mjs +1 -1
  270. package/dist/components/NcRichContenteditable/NcAutoCompleteResult.vue.d.ts +2 -2
  271. package/dist/components/NcRichContenteditable/index.mjs +1 -1
  272. package/dist/components/NcRichText/NcReferenceList.vue.d.ts +2 -2
  273. package/dist/components/NcRichText/NcReferencePicker/NcProviderList.vue.d.ts +1 -0
  274. package/dist/components/NcRichText/NcReferencePicker/NcReferencePicker.vue.d.ts +2 -0
  275. package/dist/components/NcRichText/NcReferencePicker/NcReferencePickerModal.vue.d.ts +146 -1
  276. package/dist/components/NcRichText/NcReferencePicker/NcSearch.vue.d.ts +1 -0
  277. package/dist/components/NcRichText/index.mjs +3 -3
  278. package/dist/components/NcSelect/NcSelect.vue.d.ts +1 -0
  279. package/dist/components/NcSelect/index.mjs +1 -1
  280. package/dist/components/NcSelectTags/NcSelectTags.vue.d.ts +1 -0
  281. package/dist/components/NcSelectTags/index.mjs +1 -1
  282. package/dist/components/NcSelectUsers/index.mjs +1 -1
  283. package/dist/components/NcSettingsSection/index.mjs +1 -1
  284. package/dist/components/NcSettingsSelectGroup/NcSettingsSelectGroup.vue.d.ts +1 -0
  285. package/dist/components/NcSettingsSelectGroup/index.mjs +1 -1
  286. package/dist/components/NcTextArea/index.mjs +1 -1
  287. package/dist/components/NcTextField/index.mjs +1 -1
  288. package/dist/components/NcThemeProvider/index.mjs +1 -1
  289. package/dist/components/NcTimezonePicker/index.mjs +1 -1
  290. package/dist/components/NcUserBubble/index.mjs +1 -1
  291. package/dist/components/NcUserStatusIcon/NcUserStatusIcon.vue.d.ts +2 -2
  292. package/dist/components/NcUserStatusIcon/index.mjs +1 -1
  293. package/dist/components/index.d.ts +1 -1
  294. package/dist/composables/useFormatDateTime/index.mjs +1 -1
  295. package/dist/composables/useHotKey/index.d.ts +7 -0
  296. package/dist/composables/useHotKey/index.mjs +6 -3
  297. package/dist/composables/useHotKey/index.mjs.map +1 -1
  298. package/dist/composables/useIsDarkTheme/index.mjs +1 -1
  299. package/dist/composables/useScopeIdAttrs.d.ts +26 -0
  300. package/dist/functions/reference/index.mjs +1 -1
  301. package/dist/functions/usernameToColor/index.mjs +1 -1
  302. package/dist/index.mjs +74 -74
  303. package/package.json +27 -27
  304. package/dist/chunks/NcActionButton-DCWUru2b.mjs.map +0 -1
  305. package/dist/chunks/NcActionButtonGroup-QgGuZcPA.mjs.map +0 -1
  306. package/dist/chunks/NcActionInput-Bw4UxfFB.mjs.map +0 -1
  307. package/dist/chunks/NcActionLink-afakPM_N.mjs.map +0 -1
  308. package/dist/chunks/NcActionTextEditable-BQXCci7D.mjs.map +0 -1
  309. package/dist/chunks/NcActions-B0kM6AYb.mjs.map +0 -1
  310. package/dist/chunks/NcButton-ZNHdqKQl.mjs.map +0 -1
  311. package/dist/chunks/NcCheckboxRadioSwitch-6ty3DxEG.mjs.map +0 -1
  312. package/dist/chunks/NcCollectionList-Ds-tmckn.mjs.map +0 -1
  313. package/dist/chunks/NcFormBox-K2tCRm3B.mjs.map +0 -1
  314. package/dist/chunks/NcFormBoxSwitch-E6Ei7MFo.mjs.map +0 -1
  315. package/dist/chunks/NcInputField-z8wpYKt2.mjs.map +0 -1
  316. package/dist/chunks/NcModal-DZtBQM1y.mjs +0 -778
  317. package/dist/chunks/NcModal-DZtBQM1y.mjs.map +0 -1
  318. package/dist/chunks/NcRichText-DamxfqDV.mjs.map +0 -1
  319. package/dist/chunks/NcSelect-Ba00b95n.mjs.map +0 -1
  320. package/dist/chunks/NcTextArea-Cr27-KiU.mjs.map +0 -1
  321. package/dist/chunks/NcUserBubble-DEW575GR.mjs.map +0 -1
  322. package/dist/chunks/_l10n-CWKr1fUH.mjs +0 -109
  323. package/dist/chunks/_l10n-CWKr1fUH.mjs.map +0 -1
  324. package/dist/chunks/constants-DrSznhwy.mjs +0 -11
  325. package/dist/chunks/useAppSettingsDialog-DbtEkXa4.mjs +0 -12
  326. package/dist/chunks/useNcActions-CiGWxAJE.mjs +0 -7
  327. package/dist/utils/Timer.d.ts +0 -25
@@ -7,20 +7,20 @@ import { f as renderCustomPickerElement, b as destroyCustomPickerElement, c as i
7
7
  import axios from "@nextcloud/axios";
8
8
  import { loadState } from "@nextcloud/initial-state";
9
9
  import { imagePath, generateOcsUrl } from "@nextcloud/router";
10
- import { r as register, F as t8, a as t, G as t45, H as t40, I as t25, j as t42, J as t32, p as t19, K as t12 } from "./_l10n-CWKr1fUH.mjs";
10
+ import { r as register, W as t8, a as t, X as t45, Y as t40, Z as t24, _ as t25, q as t42, $ as t32, A as t19, a0 as t12 } from "./_l10n-CgsPi8nC.mjs";
11
11
  import { l as logger } from "./logger-D3RVzcfQ.mjs";
12
12
  import { N as NcEmptyContent } from "./NcEmptyContent-B8-90BSI.mjs";
13
13
  import { _ as _sfc_main$a } from "./NcHighlight.vue_vue_type_script_lang-DnWQDM_2.mjs";
14
- import { N as NcSelect } from "./NcSelect-Ba00b95n.mjs";
14
+ import { N as NcSelect } from "./NcSelect-Cc9_a8nG.mjs";
15
15
  import debounce from "debounce";
16
16
  import { useElementSize, useIntersectionObserver } from "@vueuse/core";
17
17
  import { routerKey, RouterLink } from "vue-router";
18
- import { N as NcButton } from "./NcButton-ZNHdqKQl.mjs";
18
+ import { N as NcButton } from "./NcButton-CzpKEx4V.mjs";
19
19
  import { g as getRoute } from "./autolink-U5pBzLgI.mjs";
20
20
  import { N as NcLoadingIcon } from "./NcLoadingIcon-b_ajZ_nQ.mjs";
21
- import { _ as _sfc_main$b } from "./NcTextField.vue_vue_type_script_setup_true_lang-BNSMSqMx.mjs";
22
- import { I as IconDotsHorizontal } from "./NcActions-B0kM6AYb.mjs";
23
- import { N as NcModal } from "./NcModal-DZtBQM1y.mjs";
21
+ import { _ as _sfc_main$b } from "./NcTextField.vue_vue_type_script_setup_true_lang-BfjSL2EJ.mjs";
22
+ import { I as IconDotsHorizontal } from "./NcActions-4R7icatI.mjs";
23
+ import { N as NcModal } from "./NcModal-DSCYMxfe.mjs";
24
24
  const _sfc_main$9 = {
25
25
  name: "ArrowLeftIcon",
26
26
  emits: ["click"],
@@ -356,7 +356,7 @@ function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
356
356
  ]);
357
357
  }
358
358
  const NcProviderList = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["render", _sfc_render$5], ["__scopeId", "data-v-90c6aa3b"]]);
359
- register();
359
+ register(t24);
360
360
  const _hoisted_1$5 = ["src"];
361
361
  const _hoisted_2$4 = { class: "widget-default--details" };
362
362
  const _hoisted_3$3 = { class: "widget-default--name" };
@@ -1368,4 +1368,4 @@ export {
1368
1368
  NcSearch as h,
1369
1369
  searchProvider as s
1370
1370
  };
1371
- //# sourceMappingURL=referencePickerModal-f8STnNvS.mjs.map
1371
+ //# sourceMappingURL=referencePickerModal-CDHqLZC-.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"referencePickerModal-f8STnNvS.mjs","sources":["../../node_modules/vue-material-design-icons/ArrowLeft.vue","../../src/components/NcRichText/NcReferencePicker/NcCustomPickerElement.vue","../../node_modules/vue-material-design-icons/LinkVariant.vue","../../src/functions/reference/providerHelper.ts","../../src/components/NcRichText/NcReferencePicker/utils.ts","../../src/components/NcRichText/NcReferencePicker/NcProviderList.vue","../../src/components/NcRichText/NcReferenceWidget.vue","../../src/components/NcRichText/NcReferencePicker/NcRawLinkInput.vue","../../src/components/NcRichText/NcReferencePicker/NcSearchResult.vue","../../src/components/NcRichText/NcReferencePicker/NcSearch.vue","../../src/components/NcRichText/NcReferencePicker/NcReferencePicker.vue","../../src/components/NcRichText/NcReferencePicker/NcReferencePickerModal.vue","../../src/functions/reference/referencePickerModal.ts"],"sourcesContent":["<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon arrow-left-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"ArrowLeftIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div ref=\"domElement\" />\n</template>\n\n<script>\nimport {\n\tdestroyCustomPickerElement,\n\tisCustomPickerElementRegistered,\n\trenderCustomPickerElement,\n} from '../../../functions/reference/customPickerElements.ts'\n\nexport default {\n\tname: 'NcCustomPickerElement',\n\tprops: {\n\t\t/**\n\t\t * The reference provider\n\t\t */\n\t\tprovider: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\temits: [\n\t\t'cancel',\n\t\t'submit',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tisRegistered: isCustomPickerElementRegistered(this.provider.id),\n\t\t\trenderResult: null,\n\t\t}\n\t},\n\n\tmounted() {\n\t\tif (this.isRegistered) {\n\t\t\tthis.renderElement()\n\t\t}\n\t},\n\n\tbeforeUnmount() {\n\t\tif (this.isRegistered) {\n\t\t\tdestroyCustomPickerElement(this.provider.id, this.$el, this.renderResult)\n\t\t}\n\t},\n\n\tmethods: {\n\t\trenderElement() {\n\t\t\tif (this.$refs.domElement) {\n\t\t\t\tthis.$refs.domElement.innerHTML = ''\n\t\t\t}\n\n\t\t\tconst renderFunctionResult = renderCustomPickerElement(this.$refs.domElement, { providerId: this.provider.id, accessible: false })\n\t\t\t// this works whether renderCustomPickerElement returns a promise or a value\n\t\t\tPromise.resolve(renderFunctionResult).then((result) => {\n\t\t\t\tthis.renderResult = result\n\t\t\t\tif (this.renderResult.object?._isVue && this.renderResult.object?.$on) {\n\t\t\t\t\tthis.renderResult.object.$on('submit', this.onSubmit)\n\t\t\t\t\tthis.renderResult.object.$on('cancel', this.onCancel)\n\t\t\t\t}\n\t\t\t\tthis.renderResult.element.addEventListener('submit', (e) => {\n\t\t\t\t\tthis.onSubmit(e.detail)\n\t\t\t\t})\n\t\t\t\tthis.renderResult.element.addEventListener('cancel', this.onCancel)\n\t\t\t})\n\t\t},\n\n\t\tonSubmit(value) {\n\t\t\tthis.$emit('submit', value)\n\t\t},\n\n\t\tonCancel() {\n\t\t\tthis.$emit('cancel')\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n// nothing yet\n</style>\n","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon link-variant-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M10.59,13.41C11,13.8 11,14.44 10.59,14.83C10.2,15.22 9.56,15.22 9.17,14.83C7.22,12.88 7.22,9.71 9.17,7.76V7.76L12.71,4.22C14.66,2.27 17.83,2.27 19.78,4.22C21.73,6.17 21.73,9.34 19.78,11.29L18.29,12.78C18.3,11.96 18.17,11.14 17.89,10.36L18.36,9.88C19.54,8.71 19.54,6.81 18.36,5.64C17.19,4.46 15.29,4.46 14.12,5.64L10.59,9.17C9.41,10.34 9.41,12.24 10.59,13.41M13.41,9.17C13.8,8.78 14.44,8.78 14.83,9.17C16.78,11.12 16.78,14.29 14.83,16.24V16.24L11.29,19.78C9.34,21.73 6.17,21.73 4.22,19.78C2.27,17.83 2.27,14.66 4.22,12.71L5.71,11.22C5.7,12.04 5.83,12.86 6.11,13.65L5.64,14.12C4.46,15.29 4.46,17.19 5.64,18.36C6.81,19.54 8.71,19.54 9.88,18.36L13.41,14.83C14.59,13.66 14.59,11.76 13.41,10.59C13,10.2 13,9.56 13.41,9.17Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"LinkVariantIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios from '@nextcloud/axios'\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateOcsUrl, imagePath } from '@nextcloud/router'\nimport { t } from '../../l10n.ts'\nimport { logger } from '../../utils/logger.js'\nimport { isCustomPickerElementRegistered } from './customPickerElements.js'\n\nexport interface ReferenceProvider {\n\tid: string\n\ttitle: string\n\ticon_url: string\n\torder: number\n\tsearch_providers_ids?: string[]\n}\n\nexport const anyLinkProviderId = 'any-link'\n\nconst anyLinkProvider: ReferenceProvider = {\n\tid: anyLinkProviderId,\n\ttitle: t('Any link'),\n\torder: 0,\n\ticon_url: imagePath('core', 'filetypes/link.svg'),\n}\n\n// only get the provider list once, even if functions of this file are imported multiple times by different apps/components\nwindow._vue_richtext_reference_providers ??= loadState('core', 'reference-provider-list', [])\n// single timestamps object used by every entity in the page\nwindow._vue_richtext_reference_provider_timestamps ??= loadState('core', 'reference-provider-timestamps', {})\n\n/**\n * @param providerId - The provider ID\n * @return The provider object\n */\nexport function getProvider(providerId: string): ReferenceProvider | undefined {\n\tif (providerId === anyLinkProviderId) {\n\t\treturn anyLinkProvider\n\t}\n\n\treturn getProviders().find((p) => p.id === providerId)\n}\n\n/**\n * Get raw provider list as it was provided by the server\n */\nexport function getProviders(): ReferenceProvider[] {\n\treturn window._vue_richtext_reference_providers.filter((p) => {\n\t\t// avoid providers with no associated search provider and no custom component registered\n\t\tconst keep = (!!p.search_providers_ids && p.search_providers_ids.length > 0) || isCustomPickerElementRegistered(p.id)\n\t\tif (!keep) {\n\t\t\tlogger.debug(`[smart picker] ${p.id} reference provider is discoverable but does not have any related search provider or custom picker component registered`)\n\t\t}\n\t\treturn keep\n\t})\n}\n\n/**\n * Helper function to sort a list of providers according to 2 factors:\n * - their \"last used timestamp\"\n * - their \"order\" property (coming from the provider declaration in the server implementation)\n *\n * @param providerList - List of provider objects\n * @return The sorted provider list\n */\nexport function sortProviders(providerList: ReferenceProvider[]): ReferenceProvider[] {\n\tconst timestamps = window._vue_richtext_reference_provider_timestamps\n\n\treturn providerList.sort((a, b) => {\n\t\treturn a.order === b.order\n\t\t\t? 0\n\t\t\t: a.order > b.order\n\t\t\t\t? 1\n\t\t\t\t: -1\n\t}).sort((a, b) => {\n\t\tconst ta = timestamps[a.id]\n\t\tconst tb = timestamps[b.id]\n\t\treturn ta === tb\n\t\t\t? 0\n\t\t\t: tb === undefined\n\t\t\t\t? -1\n\t\t\t\t: ta === undefined\n\t\t\t\t\t? 1\n\t\t\t\t\t: ta > tb\n\t\t\t\t\t\t? -1\n\t\t\t\t\t\t: 1\n\t})\n}\n\n/**\n * Helper function to search a provider from a search query\n * Result is a sorted list of providers\n *\n * @param query - The search query\n * @param limit - (optional) max number of results\n * @return The sorted/filtered provider list\n */\nexport function searchProvider(query: string, limit?: number): ReferenceProvider[] {\n\tconst providers = getProviders()\n\tconst escapedQuery = query.replace(/[/\\-\\\\^$*+?.()|[\\]{}]/g, '\\\\$&')\n\tconst regexp = new RegExp(escapedQuery, 'i')\n\tconst sortedProviders = sortProviders(providers)\n\tconst filteredSortedProviders = sortedProviders.filter((p) => {\n\t\treturn p.title.match(regexp)\n\t})\n\n\tconst searchResult = limit\n\t\t? filteredSortedProviders.slice(0, limit)\n\t\t: filteredSortedProviders\n\n\t// append the 'any link' provider in the full list or when there is no result\n\tif (query === '' || searchResult.length === 0) {\n\t\tsearchResult.push(anyLinkProvider)\n\t}\n\treturn searchResult\n}\n\n/**\n * Update the \"last used timestamp\" on the server side and then locally in the frontend\n *\n * @param providerId - The id of the search provider\n */\nexport async function touchProvider(providerId: number) {\n\tconst timestamp = Math.floor(Date.now() / 1000)\n\tconst url = generateOcsUrl('references/provider/{providerId}', { providerId })\n\n\tawait axios.put(url, { timestamp })\n\twindow._vue_richtext_reference_provider_timestamps[providerId] = timestamp\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * Check wether a given string is a valid URL.\n *\n * @param str - The potential URL\n */\nexport function isUrl(str: string): boolean {\n\ttry {\n\t\treturn Boolean(new URL(str))\n\t} catch {\n\t\treturn false\n\t}\n}\n","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div class=\"provider-list\">\n\t\t<NcSelect\n\t\t\tref=\"provider-select\"\n\t\t\tv-model=\"selectedProvider\"\n\t\t\tclass=\"provider-list--select\"\n\t\t\tinput-id=\"provider-select-input\"\n\t\t\tlabel=\"title\"\n\t\t\t:placeholder=\"multiselectPlaceholder\"\n\t\t\t:options=\"options\"\n\t\t\t:append-to-body=\"false\"\n\t\t\t:clear-search-on-select=\"true\"\n\t\t\t:clear-search-on-blur=\"() => false\"\n\t\t\t:filterable=\"false\"\n\t\t\t@search=\"onSearch\"\n\t\t\t@update:model-value=\"onProviderSelected\">\n\t\t\t<template #option=\"option\">\n\t\t\t\t<div v-if=\"option.isLink\" class=\"provider\">\n\t\t\t\t\t<LinkVariantIcon class=\"link-icon\" :size=\"20\" />\n\t\t\t\t\t<span>{{ option.title }}</span>\n\t\t\t\t</div>\n\t\t\t\t<div v-else class=\"provider\">\n\t\t\t\t\t<img\n\t\t\t\t\t\tclass=\"provider-icon\"\n\t\t\t\t\t\t:src=\"option.icon_url\"\n\t\t\t\t\t\t:alt=\"providerIconAlt\">\n\t\t\t\t\t<NcHighlight\n\t\t\t\t\t\tclass=\"option-text\"\n\t\t\t\t\t\t:search=\"query\"\n\t\t\t\t\t\t:text=\"option.title\" />\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t</NcSelect>\n\t\t<NcEmptyContent class=\"provider-list--empty-content\">\n\t\t\t<template #icon>\n\t\t\t\t<LinkVariantIcon />\n\t\t\t</template>\n\t\t</NcEmptyContent>\n\t</div>\n</template>\n\n<script>\nimport LinkVariantIcon from 'vue-material-design-icons/LinkVariant.vue'\nimport { searchProvider } from '../../../functions/reference/providerHelper.ts'\nimport { t } from '../../../l10n.ts'\nimport NcEmptyContent from '../../NcEmptyContent/index.ts'\nimport NcHighlight from '../../NcHighlight/index.ts'\nimport NcSelect from '../../NcSelect/index.js'\nimport { isUrl } from './utils.js'\n\nexport default {\n\tname: 'NcProviderList',\n\tcomponents: {\n\t\tNcSelect,\n\t\tNcHighlight,\n\t\tNcEmptyContent,\n\t\tLinkVariantIcon,\n\t},\n\n\temits: [\n\t\t'selectProvider',\n\t\t'submit',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tselectedProvider: null,\n\t\t\tquery: '',\n\t\t\tmultiselectPlaceholder: t('Select provider'),\n\t\t\tproviderIconAlt: t('Provider icon'),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\toptions() {\n\t\t\tconst result = []\n\t\t\tif (this.query !== '' && isUrl(this.query)) {\n\t\t\t\tresult.push({\n\t\t\t\t\tid: this.query,\n\t\t\t\t\ttitle: this.query,\n\t\t\t\t\tisLink: true,\n\t\t\t\t})\n\t\t\t}\n\t\t\tresult.push(...searchProvider(this.query))\n\t\t\treturn result\n\t\t},\n\t},\n\n\tmethods: {\n\t\tfocus() {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.$refs['provider-select']?.$el?.querySelector('#provider-select-input')?.focus()\n\t\t\t}, 300)\n\t\t},\n\n\t\tonProviderSelected(p) {\n\t\t\tif (p !== null) {\n\t\t\t\tif (p.isLink) {\n\t\t\t\t\tthis.$emit('submit', p.title)\n\t\t\t\t} else {\n\t\t\t\t\tthis.$emit('selectProvider', p)\n\t\t\t\t}\n\t\t\t\tthis.selectedProvider = null\n\t\t\t}\n\t\t},\n\n\t\tonSearch(query) {\n\t\t\tthis.query = query\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.provider-list {\n\twidth: 100%;\n\tmin-height: 400px;\n\tpadding: 0 16px 16px 16px;\n\tdisplay: flex;\n\tflex-direction: column;\n\n\t&--select {\n\t\twidth: 100%;\n\n\t\t.provider {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\theight: 28px;\n\t\t\toverflow: hidden;\n\n\t\t\t.link-icon {\n\t\t\t\tmargin-inline-end: 8px;\n\t\t\t}\n\n\t\t\t.provider-icon {\n\t\t\t\twidth: 20px;\n\t\t\t\theight: 20px;\n\t\t\t\tobject-fit: contain;\n\t\t\t\tmargin-inline-end: 8px;\n\t\t\t\tfilter: var(--background-invert-if-dark);\n\t\t\t}\n\n\t\t\t.option-text {\n\t\t\t\toverflow: hidden;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\twhite-space: nowrap;\n\t\t\t}\n\n\t\t}\n\t}\n}\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<script setup lang=\"ts\">\nimport type { ReferenceWidgetObject } from './../../functions/reference/widgets.ts'\n\nimport { useElementSize, useIntersectionObserver } from '@vueuse/core'\nimport { computed, inject, nextTick, onBeforeUnmount, ref, useTemplateRef, watch } from 'vue'\nimport { routerKey, RouterLink } from 'vue-router'\nimport NcButton from '../../components/NcButton/NcButton.vue'\nimport { t } from '../../l10n.ts'\nimport { destroyWidget, hasFullWidth, hasInteractiveView, isWidgetRegistered, renderWidget } from './../../functions/reference/widgets.ts'\nimport { getRoute } from './autolink.ts'\n\nconst props = withDefaults(defineProps<{\n\t/**\n\t * A reference object as returned by the ReferenceProvider\n\t */\n\treference: ReferenceWidgetObject\n\t/**\n\t * Whether to render the widget in interactive mode (if available)\n\t */\n\tinteractive?: boolean\n\t/**\n\t * Whether to show user an option to enable to interactive mode (if available)\n\t */\n\tinteractiveOptIn?: boolean\n}>(), {\n\tinteractive: true,\n\tinteractiveOptIn: false,\n})\n\n/* 3 minutes outside of viewport before widget is removed from the DOM */\nconst IDLE_TIMEOUT = 3 * 60 * 1000\n\nconst router = inject(routerKey, null)\n\nconst isVisible = ref(false)\nconst customWidget = useTemplateRef('customWidget')\nconst widgetRoot = useTemplateRef('widgetRoot')\nconst { width } = useElementSize(widgetRoot)\n\nuseIntersectionObserver(widgetRoot, ([entry]) => {\n\tnextTick(() => {\n\t\tisVisible.value = entry!.isIntersecting\n\t})\n})\n\nconst showInteractive = ref(false)\nconst rendered = ref(false)\nlet idleTimeout: NodeJS.Timeout | null = null\n\nconst isInteractive = computed(() => {\n\treturn (!props.interactiveOptIn && props.interactive) || showInteractive.value\n})\n\nconst referenceHasFullWidth = computed(() => {\n\treturn hasFullWidth(props.reference.richObjectType)\n})\n\nconst hasCustomWidget = computed(() => {\n\treturn isWidgetRegistered(props.reference.richObjectType)\n})\n\nconst referenceHasInteractiveView = computed(() => {\n\treturn hasCustomWidget.value && hasInteractiveView(props.reference.richObjectType)\n})\n\nconst noAccess = computed(() => {\n\treturn !props.reference.accessible\n})\n\nconst numberOfLines = computed(() => {\n\t// no description for width < 450, one line until 550 and so on\n\tconst lineCountOffsets = [450, 550, 650, Infinity]\n\treturn lineCountOffsets.findIndex((max) => width.value < max)\n})\n\nconst descriptionStyle = computed(() => {\n\tif (numberOfLines.value === 0) {\n\t\treturn {\n\t\t\tdisplay: 'none',\n\t\t}\n\t}\n\tconst lineClamp = numberOfLines.value\n\treturn {\n\t\tlineClamp,\n\t\twebkitLineClamp: lineClamp,\n\t}\n})\n\nconst compactLink = computed(() => {\n\tconst link = props.reference.openGraphObject.link\n\tif (!link) {\n\t\treturn ''\n\t}\n\n\tif (link.startsWith('https://')) {\n\t\treturn link.substring(8)\n\t}\n\tif (link.startsWith('http://')) {\n\t\treturn link.substring(7)\n\t}\n\treturn link\n})\n\nconst route = computed(() => {\n\treturn getRoute(router, props.reference.openGraphObject.link)\n})\n\nconst referenceWidgetLinkComponent = computed(() => {\n\treturn route.value ? RouterLink : 'a'\n})\n\nconst referenceWidgetLinkProps = computed(() => {\n\treturn route.value\n\t\t? { to: route.value }\n\t\t: { href: props.reference.openGraphObject.link, target: '_blank' }\n})\n\nwatch(isVisible, (val) => {\n\tif (!val) {\n\t\tidleTimeout = setTimeout(() => {\n\t\t\t// If the widget is still outside of viewport after timeout, destroy it\n\t\t\tif (!isVisible.value) {\n\t\t\t\tdestroyReferenceWidget()\n\t\t\t}\n\t\t}, IDLE_TIMEOUT)\n\t\treturn\n\t}\n\n\tif (idleTimeout) {\n\t\tclearTimeout(idleTimeout)\n\t\tidleTimeout = null\n\t}\n\n\tif (!rendered.value) {\n\t\trenderReferenceWidget()\n\t}\n}, { immediate: true })\n\nonBeforeUnmount(() => {\n\tdestroyReferenceWidget()\n})\n\n/**\n * Enable interactive view of the widget, if available\n */\nfunction enableInteractive() {\n\tshowInteractive.value = true\n\trenderReferenceWidget()\n}\n\n/**\n * Render the reference widget\n */\nfunction renderReferenceWidget() {\n\tif (!customWidget.value) {\n\t\treturn\n\t}\n\n\tif (props.reference.richObjectType === 'open-graph') {\n\t\treturn\n\t}\n\n\tcustomWidget.value.innerHTML = ''\n\n\t// create a separate element so we can rerender on the ref again\n\tconst widget = document.createElement('div')\n\twidget.style.width = '100%'\n\tcustomWidget.value.appendChild(widget)\n\tnextTick(() => {\n\t\t// Waiting for the ref to become available\n\t\trenderWidget(widget, {\n\t\t\t...props.reference,\n\t\t\tinteractive: isInteractive.value,\n\t\t})\n\t\trendered.value = true\n\t})\n}\n\n/**\n * Destroy the reference widget\n */\nfunction destroyReferenceWidget() {\n\tif (rendered.value && widgetRoot.value) {\n\t\tdestroyWidget(props.reference.richObjectType, widgetRoot.value)\n\t\trendered.value = false\n\t}\n}\n</script>\n\n<template>\n\t<div ref=\"widgetRoot\" :class=\"{ 'toggle-interactive': referenceHasInteractiveView && !isInteractive }\">\n\t\t<div\n\t\t\tv-if=\"reference && hasCustomWidget\"\n\t\t\tref=\"customWidget\"\n\t\t\tclass=\"widget-custom\"\n\t\t\t:class=\"{ 'full-width': referenceHasFullWidth }\" />\n\n\t\t<component\n\t\t\t:is=\"referenceWidgetLinkComponent\"\n\t\t\tv-else-if=\"!noAccess && reference && reference.openGraphObject && !hasCustomWidget\"\n\t\t\tv-bind=\"referenceWidgetLinkProps\"\n\t\t\trel=\"noopener noreferrer\"\n\t\t\tclass=\"widget-default\">\n\t\t\t<img v-if=\"reference.openGraphObject.thumb\" class=\"widget-default--image\" :src=\"reference.openGraphObject.thumb\">\n\t\t\t<div class=\"widget-default--details\">\n\t\t\t\t<p class=\"widget-default--name\">\n\t\t\t\t\t{{ reference.openGraphObject.name }}\n\t\t\t\t</p>\n\t\t\t\t<p class=\"widget-default--description\" :style=\"descriptionStyle\">\n\t\t\t\t\t{{ reference.openGraphObject.description }}\n\t\t\t\t</p>\n\t\t\t\t<p class=\"widget-default--link\">\n\t\t\t\t\t{{ compactLink }}\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t</component>\n\t\t<NcButton v-if=\"interactiveOptIn && referenceHasInteractiveView && !isInteractive\" class=\"toggle-interactive--button\" @click=\"enableInteractive\">\n\t\t\t{{ t('Enable interactive view') }}\n\t\t</NcButton>\n\t</div>\n</template>\n\n<style lang=\"scss\" scoped>\n\n@mixin widget {\n\twidth: 100%;\n\tmargin: auto;\n\tmargin-bottom: calc(var(--default-grid-baseline, 4px) * 3);\n\tmargin-top: calc(var(--default-grid-baseline, 4px) * 3);\n\toverflow: hidden;\n\tborder: 2px solid var(--color-border);\n\tborder-radius: var(--border-radius-container);\n\tbackground-color: transparent;\n\tdisplay: flex;\n}\n\n.widget-custom {\n\t@include widget;\n\n\t&.full-width {\n\t\twidth: var(--widget-full-width, 100%) !important;\n\t\tinset-inline-start: calc( (var(--widget-full-width, 100%) - 100%) / 2 * -1);\n\t\tposition: relative;\n\t}\n}\n\n.widget-access {\n\t@include widget;\n\tpadding: calc(var(--default-grid-baseline, 4px) * 3);\n}\n\n.widget-default {\n\t@include widget;\n\n\t&--compact {\n\t\tflex-direction: column;\n\n\t\t.widget-default--image {\n\t\t\twidth: 100%;\n\t\t\theight: 150px;\n\t\t}\n\n\t\t.widget-default--details {\n\t\t\twidth: 100%;\n\t\t\tpadding-top: calc(var(--default-grid-baseline, 4px) * 2);\n\t\t\tpadding-bottom: calc(var(--default-grid-baseline, 4px) * 2);\n\t\t}\n\n\t\t.widget-default--description {\n\t\t\tdisplay: none;\n\t\t}\n\n\t}\n\n\t&--image {\n\t\twidth: 40%;\n\t\tbackground-position: center;\n\t\tbackground-size: cover;\n\t\tbackground-repeat: no-repeat;\n\t}\n\n\t&--name {\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\twhite-space: nowrap;\n\t\tfont-weight: bold;\n\t}\n\n\t&--details {\n\t\tpadding: calc(var(--default-grid-baseline, 4px) * 3);\n\t\twidth: 60%;\n\n\t\tp {\n\t\t\tmargin: 0;\n\t\t\tpadding: 0;\n\t\t}\n\t}\n\n\t&--description {\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 3;\n\t\tline-clamp: 3; /* stylelint-disable-line property-no-unknown */\n\t\t-webkit-box-orient: vertical;\n\t}\n\n\t&--link {\n\t\tcolor: var(--color-text-maxcontrast);\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\twhite-space: nowrap;\n\t}\n}\n\n.toggle-interactive {\n\tposition: relative;\n\t.toggle-interactive--button {\n\t\tposition: absolute;\n\t\tbottom: var(--default-grid-baseline);\n\t\tinset-inline-end: var(--default-grid-baseline);\n\t\tz-index: 10000;\n\t}\n}\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div class=\"raw-link\">\n\t\t<div class=\"input-wrapper\">\n\t\t\t<NcTextField\n\t\t\t\tref=\"url-input\"\n\t\t\t\tv-model=\"inputValue\"\n\t\t\t\t:show-trailing-button=\"inputValue !== ''\"\n\t\t\t\t:label=\"inputPlaceholder\"\n\t\t\t\t@trailing-button-click=\"onClear\"\n\t\t\t\t@update:model-value=\"onInput\"\n\t\t\t\t@keyup.enter=\"onSubmit\">\n\t\t\t\t<NcLoadingIcon v-if=\"loading\" :size=\"16\" />\n\t\t\t\t<LinkVariantIcon v-else :size=\"16\" />\n\t\t\t</NcTextField>\n\t\t</div>\n\t\t<NcReferenceWidget\n\t\t\tv-if=\"reference !== null\"\n\t\t\tclass=\"reference-widget\"\n\t\t\t:reference=\"reference\" />\n\t\t<NcEmptyContent\n\t\t\tv-else\n\t\t\tclass=\"raw-link--empty-content\">\n\t\t\t<template #icon>\n\t\t\t\t<img\n\t\t\t\t\tv-if=\"provider.icon_url\"\n\t\t\t\t\tclass=\"provider-icon\"\n\t\t\t\t\t:src=\"provider.icon_url\">\n\t\t\t\t<LinkVariantIcon v-else />\n\t\t\t</template>\n\t\t</NcEmptyContent>\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport debounce from 'debounce'\nimport LinkVariantIcon from 'vue-material-design-icons/LinkVariant.vue'\nimport NcReferenceWidget from '../NcReferenceWidget.vue'\nimport { t } from '../../../l10n.ts'\nimport { logger } from '../../../utils/logger.ts'\nimport NcEmptyContent from '../../NcEmptyContent/index.ts'\nimport NcLoadingIcon from '../../NcLoadingIcon/index.ts'\nimport NcTextField from '../../NcTextField/index.ts'\nimport { isUrl } from './utils.ts'\n\nexport default {\n\tname: 'NcRawLinkInput',\n\tcomponents: {\n\t\tLinkVariantIcon,\n\t\tNcEmptyContent,\n\t\tNcLoadingIcon,\n\t\tNcReferenceWidget,\n\t\tNcTextField,\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * The reference provider\n\t\t */\n\t\tprovider: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\temits: [\n\t\t'submit',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tinputValue: '',\n\t\t\tloading: false,\n\t\t\treference: null,\n\t\t\tabortController: null,\n\t\t\tinputPlaceholder: t('Enter link'),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisLinkValid() {\n\t\t\treturn isUrl(this.inputValue)\n\t\t},\n\n\t\tdebouncedUpdateReference() {\n\t\t\treturn debounce(this.updateReference, 500)\n\t\t},\n\t},\n\n\tmethods: {\n\t\tfocus() {\n\t\t\tthis.$refs['url-input'].$el.getElementsByTagName('input')[0]?.focus()\n\t\t},\n\n\t\tonSubmit(e) {\n\t\t\tconst value = e.target.value\n\t\t\tif (this.isLinkValid) {\n\t\t\t\tthis.$emit('submit', value)\n\t\t\t}\n\t\t},\n\n\t\tonClear() {\n\t\t\tthis.inputValue = ''\n\t\t\tthis.reference = null\n\t\t},\n\n\t\tonInput() {\n\t\t\tthis.reference = null\n\t\t\tif (this.abortController) {\n\t\t\t\tthis.abortController.abort()\n\t\t\t}\n\t\t\tif (this.isLinkValid) {\n\t\t\t\tthis.debouncedUpdateReference()\n\t\t\t}\n\t\t},\n\n\t\tupdateReference() {\n\t\t\tthis.loading = true\n\t\t\tthis.abortController = new AbortController()\n\t\t\taxios.get(generateOcsUrl('references/resolve', 2) + '?reference=' + encodeURIComponent(this.inputValue), {\n\t\t\t\tsignal: this.abortController.signal,\n\t\t\t})\n\t\t\t\t.then((response) => {\n\t\t\t\t\tthis.reference = response.data.ocs.data.references[this.inputValue]\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tlogger.error('[NcRawLinkInput] Failed to update reference', { error })\n\t\t\t\t})\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.loading = false\n\t\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.raw-link {\n\twidth: 100%;\n\tmin-height: 350px;\n\tdisplay: flex;\n\tflex-direction: column;\n\toverflow-y: auto;\n\tpadding: 0 16px 16px 16px;\n\n\t.input-wrapper {\n\t\twidth: 100%;\n\t}\n\n\t.reference-widget {\n\t\tdisplay: flex;\n\t}\n\n\t&--empty-content .provider-icon {\n\t\twidth: 150px;\n\t\theight: 150px;\n\t\tobject-fit: contain;\n\t\tfilter: var(--background-invert-if-dark);\n\t}\n\n\t&--input {\n\t\twidth: 99%;\n\t}\n}\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div class=\"result\">\n\t\t<div\n\t\t\tv-if=\"entry.icon\"\n\t\t\t:class=\"{ [entry.icon]: true, rounded: entry.rounded }\"\n\t\t\tclass=\"result--icon-class\" />\n\t\t<img\n\t\t\tv-else\n\t\t\tclass=\"result--image\"\n\t\t\t:class=\"{ rounded: entry.rounded }\"\n\t\t\t:src=\"entry.thumbnailUrl\">\n\t\t<div class=\"result--content\">\n\t\t\t<span class=\"result--content--name\">\n\t\t\t\t<NcHighlight :search=\"query\" :text=\"entry.title\" />\n\t\t\t</span>\n\t\t\t<span class=\"result--content--subline\">\n\t\t\t\t<NcHighlight :search=\"query\" :text=\"entry.subline\" />\n\t\t\t</span>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport NcHighlight from '../../NcHighlight/index.ts'\n\nexport default {\n\tname: 'NcSearchResult',\n\tcomponents: {\n\t\tNcHighlight,\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * Unified search result entry\n\t\t */\n\t\tentry: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\n\t\t/**\n\t\t * The query that led to getting this result\n\t\t * Used to highlight the entry text\n\t\t */\n\t\tquery: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.result {\n\tdisplay: flex;\n\talign-items: center;\n\theight: var(--default-clickable-area);\n\toverflow: hidden;\n\n\t&--icon-class,\n\t&--image {\n\t\twidth: 40px;\n\t\tmin-width: 40px;\n\t\theight: 40px;\n\t\tobject-fit: contain;\n\n\t\t&.rounded {\n\t\t\tborder-radius: 50%;\n\t\t}\n\t}\n\n\t&--content {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tpadding-inline-start: 10px;\n\t\toverflow: hidden;\n\n\t\t&--name,\n\t\t&--subline {\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\t\t}\n\t}\n}\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div class=\"smart-picker-search\" :class=\"{ 'with-empty-content': showEmptyContent }\">\n\t\t<NcSelect\n\t\t\tref=\"search-select\"\n\t\t\tv-model=\"selectedResult\"\n\t\t\tclass=\"smart-picker-search--select\"\n\t\t\tinput-id=\"search-select-input\"\n\t\t\tlabel=\"name\"\n\t\t\t:placeholder=\"mySearchPlaceholder\"\n\t\t\t:options=\"options\"\n\t\t\t:append-to-body=\"false\"\n\t\t\t:close-on-select=\"false\"\n\t\t\t:clear-search-on-select=\"false\"\n\t\t\t:clear-search-on-blur=\"() => false\"\n\t\t\t:reset-focus-on-options-change=\"false\"\n\t\t\t:filterable=\"false\"\n\t\t\t:autoscroll=\"true\"\n\t\t\t:reset-on-options-change=\"false\"\n\t\t\t:loading=\"searching\"\n\t\t\t@search=\"onSearchInput\"\n\t\t\t@update:model-value=\"onSelectResultSelected\">\n\t\t\t<template #option=\"option\">\n\t\t\t\t<div v-if=\"option.isRawLink\" class=\"custom-option\">\n\t\t\t\t\t<LinkVariantIcon class=\"option-simple-icon\" :size=\"20\" />\n\t\t\t\t\t<span class=\"option-text\">\n\t\t\t\t\t\t{{ t('Raw link {options}', { options: option.resourceUrl }) }}\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t\t<NcSearchResult\n\t\t\t\t\tv-else-if=\"option.resourceUrl\"\n\t\t\t\t\tclass=\"search-result\"\n\t\t\t\t\t:entry=\"option\"\n\t\t\t\t\t:query=\"searchQuery\" />\n\t\t\t\t<span v-else-if=\"option.isCustomGroupTitle\" class=\"custom-option group-name\">\n\t\t\t\t\t<img\n\t\t\t\t\t\tv-if=\"provider.icon_url\"\n\t\t\t\t\t\tclass=\"provider-icon group-name-icon\"\n\t\t\t\t\t\t:src=\"provider.icon_url\">\n\t\t\t\t\t<span class=\"option-text\">\n\t\t\t\t\t\t<strong>{{ option.name }}</strong>\n\t\t\t\t\t</span>\n\t\t\t\t</span>\n\t\t\t\t<span v-else-if=\"option.isMore\" class=\"custom-option\">\n\t\t\t\t\t<span v-if=\"option.isLoading\" class=\"option-simple-icon icon-loading-small\" />\n\t\t\t\t\t<DotsHorizontalIcon v-else class=\"option-simple-icon\" :size=\"20\" />\n\t\t\t\t\t<span class=\"option-text\">\n\t\t\t\t\t\t{{ t('Load more \"{options}\"', { options: option.name }) }}\n\t\t\t\t\t</span>\n\t\t\t\t</span>\n\t\t\t</template>\n\t\t\t<template #no-options>\n\t\t\t\t{{ noOptionsText }}\n\t\t\t</template>\n\t\t</NcSelect>\n\t\t<NcEmptyContent\n\t\t\tv-if=\"showEmptyContent\"\n\t\t\tclass=\"smart-picker-search--empty-content\">\n\t\t\t<template #icon>\n\t\t\t\t<img\n\t\t\t\t\tv-if=\"provider.icon_url\"\n\t\t\t\t\tclass=\"provider-icon\"\n\t\t\t\t\t:alt=\"providerIconAlt\"\n\t\t\t\t\t:src=\"provider.icon_url\">\n\t\t\t\t<LinkVariantIcon v-else />\n\t\t\t</template>\n\t\t</NcEmptyContent>\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport debounce from 'debounce'\nimport DotsHorizontalIcon from 'vue-material-design-icons/DotsHorizontal.vue'\nimport LinkVariantIcon from 'vue-material-design-icons/LinkVariant.vue'\nimport NcSearchResult from './NcSearchResult.vue'\nimport { t } from '../../../l10n.ts'\nimport NcEmptyContent from '../../NcEmptyContent/index.ts'\nimport NcSelect from '../../NcSelect/index.js'\nimport { isUrl } from './utils.ts'\n\nconst LIMIT = 5\n\nexport default {\n\tname: 'NcSearch',\n\tcomponents: {\n\t\tLinkVariantIcon,\n\t\tDotsHorizontalIcon,\n\t\tNcEmptyContent,\n\t\tNcSelect,\n\t\tNcSearchResult,\n\t},\n\n\t/* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n\tprops: {\n\t\t/**\n\t\t * The selected reference provider\n\t\t */\n\t\tprovider: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\n\t\tshowEmptyContent: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * Placeholder of the search\n\t\t */\n\t\tsearchPlaceholder: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\temits: [\n\t\t'submit',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tsearchQuery: '',\n\t\t\tselectedResult: null,\n\t\t\tresultsBySearchProvider: {},\n\t\t\tsearching: false,\n\t\t\tsearchingMoreOf: null,\n\t\t\tabortController: null,\n\t\t\tnoOptionsText: t('Start typing to search'),\n\t\t\tproviderIconAlt: t('Provider icon'),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tmySearchPlaceholder() {\n\t\t\treturn this.searchPlaceholder || t('Search')\n\t\t},\n\n\t\tsearchProviderIds() {\n\t\t\treturn this.provider.search_providers_ids\n\t\t},\n\n\t\toptions() {\n\t\t\tif (this.searchQuery === '') {\n\t\t\t\treturn []\n\t\t\t}\n\n\t\t\tconst options = []\n\t\t\tif (isUrl(this.searchQuery)) {\n\t\t\t\toptions.push(this.rawLinkEntry)\n\t\t\t}\n\t\t\toptions.push(...this.formattedSearchResults)\n\t\t\treturn options\n\t\t},\n\n\t\trawLinkEntry() {\n\t\t\treturn {\n\t\t\t\tid: 'rawLinkEntry',\n\t\t\t\tresourceUrl: this.searchQuery,\n\t\t\t\tisRawLink: true,\n\t\t\t}\n\t\t},\n\n\t\tformattedSearchResults() {\n\t\t\tconst results = []\n\t\t\tthis.searchProviderIds.forEach((pid) => {\n\t\t\t\tif (this.resultsBySearchProvider[pid].entries.length > 0) {\n\t\t\t\t\t// don't show group name entry if there is only one search provider and one result\n\t\t\t\t\tif (this.searchProviderIds.length > 1 || this.resultsBySearchProvider[pid].entries.length > 1) {\n\t\t\t\t\t\tresults.push({\n\t\t\t\t\t\t\tid: 'groupTitle-' + pid,\n\t\t\t\t\t\t\tname: this.resultsBySearchProvider[pid].name,\n\t\t\t\t\t\t\tisCustomGroupTitle: true,\n\t\t\t\t\t\t\tproviderId: pid,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\tconst providerEntriesWithId = this.resultsBySearchProvider[pid].entries.map((entry, index) => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tid: 'provider-' + pid + '-entry-' + index,\n\t\t\t\t\t\t\t...entry,\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\tresults.push(...providerEntriesWithId)\n\t\t\t\t\tif (this.resultsBySearchProvider[pid].isPaginated) {\n\t\t\t\t\t\tresults.push({\n\t\t\t\t\t\t\tid: 'moreOf-' + pid,\n\t\t\t\t\t\t\tname: this.resultsBySearchProvider[pid].name,\n\t\t\t\t\t\t\tisMore: true,\n\t\t\t\t\t\t\tproviderId: pid,\n\t\t\t\t\t\t\tisLoading: this.searchingMoreOf === pid,\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\treturn results\n\t\t},\n\n\t\tdebouncedUpdateSearch() {\n\t\t\treturn debounce(this.updateSearch, 500)\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.resetResults()\n\t},\n\n\tbeforeUnmount() {\n\t\tthis.cancelSearchRequests()\n\t},\n\n\tmethods: {\n\t\tt,\n\t\tresetResults() {\n\t\t\tconst resultsBySearchProvider = {}\n\t\t\tthis.searchProviderIds.forEach((pid) => {\n\t\t\t\tresultsBySearchProvider[pid] = {\n\t\t\t\t\tentries: [],\n\t\t\t\t}\n\t\t\t})\n\t\t\tthis.resultsBySearchProvider = resultsBySearchProvider\n\t\t},\n\n\t\tfocus() {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.$refs['search-select']?.$el?.querySelector('#search-select-input')?.focus()\n\t\t\t}, 300)\n\t\t},\n\n\t\tcancelSearchRequests() {\n\t\t\tif (this.abortController) {\n\t\t\t\tthis.abortController.abort()\n\t\t\t}\n\t\t},\n\n\t\tonSearchInput(query) {\n\t\t\tthis.searchQuery = query\n\t\t\tthis.debouncedUpdateSearch()\n\t\t},\n\n\t\tonSelectResultSelected(item) {\n\t\t\tif (item !== null) {\n\t\t\t\tif (item.resourceUrl) {\n\t\t\t\t\tthis.cancelSearchRequests()\n\t\t\t\t\tthis.$emit('submit', item.resourceUrl)\n\t\t\t\t} else if (item.isMore) {\n\t\t\t\t\tthis.searchMoreOf(item.providerId).then(() => {\n\t\t\t\t\t\t// allow clicking twice on the same \"more\" item\n\t\t\t\t\t\tthis.selectedResult = null\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tsearchMoreOf(searchProviderId) {\n\t\t\tthis.searchingMoreOf = searchProviderId\n\t\t\tthis.cancelSearchRequests()\n\t\t\treturn this.searchProviders(searchProviderId)\n\t\t},\n\n\t\tupdateSearch() {\n\t\t\tthis.cancelSearchRequests()\n\t\t\tthis.resetResults()\n\t\t\tif (this.searchQuery === '') {\n\t\t\t\tthis.searching = false\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\treturn this.searchProviders()\n\t\t},\n\n\t\tsearchProviders(searchProviderId = null) {\n\t\t\tthis.abortController = new AbortController()\n\t\t\tthis.searching = true\n\n\t\t\tconst searchPromises = searchProviderId === null\n\t\t\t\t? [...this.searchProviderIds].map((pid) => {\n\t\t\t\t\t\treturn this.searchOneProvider(pid)\n\t\t\t\t\t})\n\t\t\t\t: [this.searchOneProvider(searchProviderId, this.resultsBySearchProvider[searchProviderId]?.cursor ?? null)]\n\t\t\t// fake one to have a request error\n\t\t\t// searchPromises.push(this.searchOneProvider('nopid'))\n\n\t\t\treturn Promise.allSettled(searchPromises)\n\t\t\t\t.then((promises) => {\n\t\t\t\t\tconst isOneCanceled = !!promises.find((p) => {\n\t\t\t\t\t\treturn p.status === 'rejected' && (p.reason.name === 'CanceledError' || p.reason.code === 'ERR_CANCELED')\n\t\t\t\t\t})\n\t\t\t\t\t// nothing was canceled: not searching\n\t\t\t\t\tif (!isOneCanceled) {\n\t\t\t\t\t\tthis.searching = false\n\t\t\t\t\t\tthis.searchingMoreOf = null\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t},\n\n\t\tsearchOneProvider(providerId, cursor = null) {\n\t\t\tconst url = cursor === null\n\t\t\t\t? generateOcsUrl('search/providers/{providerId}/search?term={term}&limit={limit}', { providerId, term: this.searchQuery, limit: LIMIT })\n\t\t\t\t: generateOcsUrl('search/providers/{providerId}/search?term={term}&limit={limit}&cursor={cursor}', { providerId, term: this.searchQuery, limit: LIMIT, cursor })\n\t\t\treturn axios.get(url, {\n\t\t\t\tsignal: this.abortController.signal,\n\t\t\t})\n\t\t\t\t.then((response) => {\n\t\t\t\t\tconst data = response.data.ocs.data\n\t\t\t\t\tthis.resultsBySearchProvider[providerId].name = data.name\n\t\t\t\t\tthis.resultsBySearchProvider[providerId].cursor = data.cursor\n\t\t\t\t\tthis.resultsBySearchProvider[providerId].isPaginated = data.isPaginated\n\t\t\t\t\tthis.resultsBySearchProvider[providerId].entries.push(...data.entries)\n\t\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.smart-picker-search {\n\twidth: 100%;\n\tdisplay: flex;\n\tflex-direction: column;\n\tpadding: 0 16px 16px 16px;\n\t&.with-empty-content {\n\t\tmin-height: 400px;\n\t}\n\n\t.provider-icon {\n\t\twidth: 150px;\n\t\theight: 150px;\n\t\tobject-fit: contain;\n\t\tfilter: var(--background-invert-if-dark);\n\t}\n\n\t&--select {\n\t\twidth: 100%;\n\n\t\t.search-result {\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t.group-name-icon,\n\t\t.option-simple-icon {\n\t\t\twidth: 20px;\n\t\t\theight: 20px;\n\t\t\tmargin: 0 20px 0 10px;\n\t\t}\n\n\t\t.custom-option {\n\t\t\theight: var(--default-clickable-area);\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\toverflow: hidden;\n\t\t}\n\n\t\t.option-text {\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\t\t}\n\t}\n}\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div\n\t\tclass=\"reference-picker\"\n\t\t:style=\"pickerWrapperStyle\"\n\t\ttabindex=\"-1\"\n\t\t@keydown.stop.prevent.esc=\"onEscapePressed\">\n\t\t<NcProviderList\n\t\t\tv-if=\"mode === MODES.providerList\"\n\t\t\tref=\"provider-list\"\n\t\t\t@select-provider=\"onProviderSelected\"\n\t\t\t@submit=\"submitLink\"\n\t\t\t@cancel=\"cancelProviderSelection\" />\n\t\t<NcRawLinkInput\n\t\t\tv-else-if=\"mode === MODES.standardLinkInput\"\n\t\t\tref=\"url-input\"\n\t\t\t:provider=\"selectedProvider\"\n\t\t\t@submit=\"submitLink\"\n\t\t\t@cancel=\"cancelRawLinkInput\" />\n\t\t<NcSearch\n\t\t\tv-else-if=\"mode === MODES.searchInput\"\n\t\t\tref=\"url-input\"\n\t\t\t:provider=\"selectedProvider\"\n\t\t\t@cancel=\"cancelSearch\"\n\t\t\t@submit=\"submitLink\" />\n\t\t<div\n\t\t\tv-else-if=\"mode === MODES.customElement\"\n\t\t\tclass=\"custom-element-wrapper\">\n\t\t\t<NcCustomPickerElement\n\t\t\t\t:provider=\"selectedProvider\"\n\t\t\t\tclass=\"custom-element\"\n\t\t\t\t@submit=\"submitLink\"\n\t\t\t\t@cancel=\"cancelCustomElement\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport NcCustomPickerElement from './NcCustomPickerElement.vue'\nimport NcProviderList from './NcProviderList.vue'\nimport NcRawLinkInput from './NcRawLinkInput.vue'\nimport NcSearch from './NcSearch.vue'\nimport { isCustomPickerElementRegistered } from '../../../functions/reference/customPickerElements.ts'\nimport { touchProvider } from '../../../functions/reference/providerHelper.ts'\n\nconst MODES = {\n\tproviderList: 1,\n\tstandardLinkInput: 2,\n\tsearchInput: 3,\n\tcustomElement: 4,\n}\nexport default {\n\tname: 'NcReferencePicker',\n\tcomponents: {\n\t\tNcCustomPickerElement,\n\t\tNcProviderList,\n\t\tNcRawLinkInput,\n\t\tNcSearch,\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * Provider to select on creation\n\t\t * Default: null. Show the provider list\n\t\t */\n\t\tinitialProvider: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => null,\n\t\t},\n\n\t\t/**\n\t\t * Optional width in pixels\n\t\t * Default: 100%\n\t\t */\n\t\twidth: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Focus on the provider list select input on creation\n\t\t * Default: true\n\t\t */\n\t\tfocusOnCreate: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\n\temits: [\n\t\t'cancel',\n\t\t'cancelRawLink',\n\t\t'cancelSearch',\n\t\t'providerSelected',\n\t\t'submit',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tMODES,\n\t\t\tselectedProvider: this.initialProvider,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tmode() {\n\t\t\treturn this.selectedProvider === null\n\t\t\t\t? MODES.providerList\n\t\t\t\t: isCustomPickerElementRegistered(this.selectedProvider.id)\n\t\t\t\t\t? MODES.customElement\n\t\t\t\t\t: this.selectedProvider.search_providers_ids\n\t\t\t\t\t\t? MODES.searchInput\n\t\t\t\t\t\t: MODES.standardLinkInput\n\t\t},\n\n\t\tpickerWrapperStyle() {\n\t\t\treturn {\n\t\t\t\twidth: this.width ? this.width + 'px' : undefined,\n\t\t\t}\n\t\t},\n\t},\n\n\tmounted() {\n\t\tif (this.focusOnCreate) {\n\t\t\tif (this.initialProvider) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.$refs['url-input']?.focus()\n\t\t\t\t}, 300)\n\t\t\t} else {\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tthis.$refs['provider-list']?.focus()\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonEscapePressed() {\n\t\t\tif (this.selectedProvider !== null) {\n\t\t\t\tthis.deselectProvider()\n\t\t\t} else {\n\t\t\t\tthis.cancelProviderSelection()\n\t\t\t}\n\t\t},\n\n\t\tonProviderSelected(provider) {\n\t\t\tthis.selectedProvider = provider\n\t\t\tthis.$emit('providerSelected', provider)\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.$refs['url-input']?.focus()\n\t\t\t})\n\t\t},\n\n\t\tcancelCustomElement() {\n\t\t\tthis.deselectProvider()\n\t\t},\n\n\t\tcancelSearch() {\n\t\t\tthis.$emit('cancelSearch', this.selectedProvider?.title)\n\t\t\tthis.deselectProvider()\n\t\t},\n\n\t\tcancelRawLinkInput() {\n\t\t\tthis.$emit('cancelRawLink', this.selectedProvider?.title)\n\t\t\tthis.deselectProvider()\n\t\t},\n\n\t\tcancelProviderSelection() {\n\t\t\tthis.$emit('cancel')\n\t\t},\n\n\t\tsubmitLink(link) {\n\t\t\tif (this.selectedProvider !== null) {\n\t\t\t\ttouchProvider(this.selectedProvider.id)\n\t\t\t}\n\t\t\tthis.$emit('submit', link)\n\t\t\tthis.deselectProvider()\n\t\t},\n\n\t\tdeselectProvider() {\n\t\t\tthis.selectedProvider = null\n\t\t\tthis.$emit('providerSelected', null)\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.$refs['provider-list']?.focus()\n\t\t\t}, 300)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.reference-picker {\n\tdisplay: flex;\n\toverflow-y: auto;\n\twidth: 100%;\n\n\t.custom-element-wrapper {\n\t\tdisplay: flex;\n\t\toverflow-y: auto;\n\t\twidth: 100%;\n\t\t.custom-element {\n\t\t\tdisplay: flex;\n\t\t\toverflow-y: auto;\n\t\t\twidth: 100%;\n\t\t}\n\t}\n}\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<NcModal\n\t\tv-if=\"show\"\n\t\t:size=\"modalSize\"\n\t\tclass=\"reference-picker-modal\"\n\t\t@close=\"onCancel\">\n\t\t<div\n\t\t\tref=\"modal_content\"\n\t\t\tclass=\"reference-picker-modal--content\">\n\t\t\t<NcButton\n\t\t\t\tv-if=\"showBackButton\"\n\t\t\t\t:aria-label=\"backButtonTitle\"\n\t\t\t\t:title=\"backButtonTitle\"\n\t\t\t\tclass=\"back-button\"\n\t\t\t\t@click=\"onBackClicked\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<ArrowLeftIcon />\n\t\t\t\t</template>\n\t\t\t</NcButton>\n\t\t\t<NcButton\n\t\t\t\tclass=\"close-button\"\n\t\t\t\t:aria-label=\"closeButtonLabel\"\n\t\t\t\t:title=\"closeButtonTitle\"\n\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t@click=\"onCancel\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<CloseIcon />\n\t\t\t\t</template>\n\t\t\t</NcButton>\n\t\t\t<h2 v-if=\"showModalName\">\n\t\t\t\t{{ modalName }}\n\t\t\t</h2>\n\t\t\t<NcReferencePicker\n\t\t\t\tref=\"referencePicker\"\n\t\t\t\t:initial-provider=\"initialProvider\"\n\t\t\t\t:focus-on-create=\"focusOnCreate\"\n\t\t\t\t@provider-selected=\"onProviderSelect\"\n\t\t\t\t@submit=\"onSubmit\"\n\t\t\t\t@cancel=\"onCancel\" />\n\t\t</div>\n\t</NcModal>\n</template>\n\n<script>\nimport { emit } from '@nextcloud/event-bus'\nimport ArrowLeftIcon from 'vue-material-design-icons/ArrowLeft.vue'\nimport CloseIcon from 'vue-material-design-icons/Close.vue'\nimport NcReferencePicker from './NcReferencePicker.vue'\nimport { getCustomPickerElementSize, isCustomPickerElementRegistered } from '../../../functions/reference/customPickerElements.ts'\nimport { t } from '../../../l10n.ts'\nimport NcButton from '../../NcButton/index.ts'\nimport NcModal from '../../NcModal/index.js'\n\nexport default {\n\tname: 'NcReferencePickerModal',\n\tcomponents: {\n\t\tNcReferencePicker,\n\t\tNcModal,\n\t\tNcButton,\n\t\tArrowLeftIcon,\n\t\tCloseIcon,\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * Provider to select on creation\n\t\t * Show the provider list if no initial one is provided\n\t\t */\n\t\tinitialProvider: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => null,\n\t\t},\n\n\t\t/**\n\t\t * Focus on the input item on create\n\t\t */\n\t\tfocusOnCreate: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * If true, add the modal content to the Viewer trap elements via the event-bus\n\t\t */\n\t\tisInsideViewer: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\temits: [\n\t\t'cancel',\n\t\t'submit',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tshow: true,\n\t\t\tselectedProvider: this.initialProvider,\n\t\t\tbackButtonTitle: t('Back to provider selection'),\n\t\t\tcloseButtonTitle: t('Close'),\n\t\t\tcloseButtonLabel: t('Close Smart Picker'),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisProviderSelected() {\n\t\t\treturn this.selectedProvider !== null\n\t\t},\n\n\t\tshowBackButton() {\n\t\t\treturn this.initialProvider === null && this.isProviderSelected\n\t\t},\n\n\t\tmodalSize() {\n\t\t\treturn this.isProviderSelected && isCustomPickerElementRegistered(this.selectedProvider.id)\n\t\t\t\t? (getCustomPickerElementSize(this.selectedProvider.id) ?? 'large')\n\t\t\t\t: 'normal'\n\t\t},\n\n\t\tshowModalName() {\n\t\t\treturn !this.isProviderSelected || !isCustomPickerElementRegistered(this.selectedProvider.id)\n\t\t},\n\n\t\tmodalName() {\n\t\t\treturn this.isProviderSelected\n\t\t\t\t? this.selectedProvider.title\n\t\t\t\t: t('Smart Picker')\n\t\t},\n\t},\n\n\tmounted() {\n\t\tif (this.isInsideViewer) {\n\t\t\tconst elem = this.$refs.modal_content\n\t\t\temit('viewer:trapElements:changed', elem)\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonCancel() {\n\t\t\tthis.show = false\n\t\t\tthis.$emit('cancel')\n\t\t},\n\n\t\tonSubmit(value) {\n\t\t\tthis.show = false\n\t\t\tthis.$emit('submit', value)\n\t\t},\n\n\t\tonProviderSelect(provider) {\n\t\t\tthis.selectedProvider = provider\n\t\t\t// provider was deselected and we started with an inital one: just close the modal\n\t\t\tif (provider === null && this.initialProvider !== null) {\n\t\t\t\tthis.onCancel()\n\t\t\t}\n\t\t},\n\n\t\tonBackClicked() {\n\t\t\tthis.$refs.referencePicker.deselectProvider()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n// this is to avoid scroll on the container and leave it to the result block\n.reference-picker-modal :deep(.modal-container) {\n\tdisplay: flex !important;\n}\n\n.reference-picker-modal--content {\n\twidth: 100%;\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\tjustify-content: center;\n\toverflow-y: auto;\n\n\t.close-button,\n\t.back-button {\n\t\tposition: absolute;\n\t\ttop: 4px;\n\t}\n\t.back-button {\n\t\tinset-inline-start: 4px;\n\t}\n\t.close-button {\n\t\tinset-inline-end: 4px;\n\t}\n\n\t> h2 {\n\t\tdisplay: flex;\n\t\tmargin: 12px 0 20px 0;\n\t\t.icon {\n\t\t\tmargin-inline-end: 8px;\n\t\t}\n\t}\n}\n</style>\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { createApp } from 'vue'\nimport NcReferencePickerModal from './../../components/NcRichText/NcReferencePicker/NcReferencePickerModal.vue'\nimport { getProvider } from './providerHelper.js'\n\n/**\n * Creates a reference picker modal and return a promise which provides the result\n *\n * @param providerId - Optional ID of initial selected provider\n * @param isInsideViewer - Should be true if this function is called while the Viewer is displayed\n */\nexport async function getLinkWithPicker(providerId?: string, isInsideViewer?: boolean): Promise<string> {\n\tconst modalId = 'referencePickerModal'\n\tconst modalElement = document.createElement('div')\n\tmodalElement.id = modalId\n\tdocument.body.append(modalElement)\n\n\tconst { promise, reject, resolve } = Promise.withResolvers<string>()\n\tconst initialProvider = (providerId && getProvider(providerId)) || null\n\tconst view = createApp(NcReferencePickerModal, {\n\t\tinitialProvider,\n\t\tisInsideViewer,\n\t\tonCancel() {\n\t\t\tview.unmount()\n\t\t\treject(new Error('User cancellation'))\n\t\t},\n\t\tonSubmit(link: string) {\n\t\t\tview.unmount()\n\t\t\tresolve(link)\n\t\t},\n\t})\n\tview.mount(modalElement)\n\n\treturn promise\n}\n"],"names":["_sfc_main","_hoisted_3","_createElementBlock","_mergeProps","_createElementVNode","_openBlock","_hoisted_1","NcHighlight","_createVNode","_withCtx","_hoisted_2","_toDisplayString","_normalizeClass","reference","_createBlock","_resolveDynamicComponent","_hoisted_4","interactiveOptIn","_unref","NcTextField","_hoisted_5","DotsHorizontalIcon","CloseIcon"],"mappings":"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","x_google_ignoreList":[0,2]}
1
+ {"version":3,"file":"referencePickerModal-CDHqLZC-.mjs","sources":["../../node_modules/vue-material-design-icons/ArrowLeft.vue","../../src/components/NcRichText/NcReferencePicker/NcCustomPickerElement.vue","../../node_modules/vue-material-design-icons/LinkVariant.vue","../../src/functions/reference/providerHelper.ts","../../src/components/NcRichText/NcReferencePicker/utils.ts","../../src/components/NcRichText/NcReferencePicker/NcProviderList.vue","../../src/components/NcRichText/NcReferenceWidget.vue","../../src/components/NcRichText/NcReferencePicker/NcRawLinkInput.vue","../../src/components/NcRichText/NcReferencePicker/NcSearchResult.vue","../../src/components/NcRichText/NcReferencePicker/NcSearch.vue","../../src/components/NcRichText/NcReferencePicker/NcReferencePicker.vue","../../src/components/NcRichText/NcReferencePicker/NcReferencePickerModal.vue","../../src/functions/reference/referencePickerModal.ts"],"sourcesContent":["<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon arrow-left-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"ArrowLeftIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div ref=\"domElement\" />\n</template>\n\n<script>\nimport {\n\tdestroyCustomPickerElement,\n\tisCustomPickerElementRegistered,\n\trenderCustomPickerElement,\n} from '../../../functions/reference/customPickerElements.ts'\n\nexport default {\n\tname: 'NcCustomPickerElement',\n\tprops: {\n\t\t/**\n\t\t * The reference provider\n\t\t */\n\t\tprovider: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\temits: [\n\t\t'cancel',\n\t\t'submit',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tisRegistered: isCustomPickerElementRegistered(this.provider.id),\n\t\t\trenderResult: null,\n\t\t}\n\t},\n\n\tmounted() {\n\t\tif (this.isRegistered) {\n\t\t\tthis.renderElement()\n\t\t}\n\t},\n\n\tbeforeUnmount() {\n\t\tif (this.isRegistered) {\n\t\t\tdestroyCustomPickerElement(this.provider.id, this.$el, this.renderResult)\n\t\t}\n\t},\n\n\tmethods: {\n\t\trenderElement() {\n\t\t\tif (this.$refs.domElement) {\n\t\t\t\tthis.$refs.domElement.innerHTML = ''\n\t\t\t}\n\n\t\t\tconst renderFunctionResult = renderCustomPickerElement(this.$refs.domElement, { providerId: this.provider.id, accessible: false })\n\t\t\t// this works whether renderCustomPickerElement returns a promise or a value\n\t\t\tPromise.resolve(renderFunctionResult).then((result) => {\n\t\t\t\tthis.renderResult = result\n\t\t\t\tif (this.renderResult.object?._isVue && this.renderResult.object?.$on) {\n\t\t\t\t\tthis.renderResult.object.$on('submit', this.onSubmit)\n\t\t\t\t\tthis.renderResult.object.$on('cancel', this.onCancel)\n\t\t\t\t}\n\t\t\t\tthis.renderResult.element.addEventListener('submit', (e) => {\n\t\t\t\t\tthis.onSubmit(e.detail)\n\t\t\t\t})\n\t\t\t\tthis.renderResult.element.addEventListener('cancel', this.onCancel)\n\t\t\t})\n\t\t},\n\n\t\tonSubmit(value) {\n\t\t\tthis.$emit('submit', value)\n\t\t},\n\n\t\tonCancel() {\n\t\t\tthis.$emit('cancel')\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n// nothing yet\n</style>\n","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : 'true'\"\n :aria-label=\"title\"\n class=\"material-design-icon link-variant-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M10.59,13.41C11,13.8 11,14.44 10.59,14.83C10.2,15.22 9.56,15.22 9.17,14.83C7.22,12.88 7.22,9.71 9.17,7.76V7.76L12.71,4.22C14.66,2.27 17.83,2.27 19.78,4.22C21.73,6.17 21.73,9.34 19.78,11.29L18.29,12.78C18.3,11.96 18.17,11.14 17.89,10.36L18.36,9.88C19.54,8.71 19.54,6.81 18.36,5.64C17.19,4.46 15.29,4.46 14.12,5.64L10.59,9.17C9.41,10.34 9.41,12.24 10.59,13.41M13.41,9.17C13.8,8.78 14.44,8.78 14.83,9.17C16.78,11.12 16.78,14.29 14.83,16.24V16.24L11.29,19.78C9.34,21.73 6.17,21.73 4.22,19.78C2.27,17.83 2.27,14.66 4.22,12.71L5.71,11.22C5.7,12.04 5.83,12.86 6.11,13.65L5.64,14.12C4.46,15.29 4.46,17.19 5.64,18.36C6.81,19.54 8.71,19.54 9.88,18.36L13.41,14.83C14.59,13.66 14.59,11.76 13.41,10.59C13,10.2 13,9.56 13.41,9.17Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"LinkVariantIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport axios from '@nextcloud/axios'\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateOcsUrl, imagePath } from '@nextcloud/router'\nimport { t } from '../../l10n.ts'\nimport { logger } from '../../utils/logger.js'\nimport { isCustomPickerElementRegistered } from './customPickerElements.js'\n\nexport interface ReferenceProvider {\n\tid: string\n\ttitle: string\n\ticon_url: string\n\torder: number\n\tsearch_providers_ids?: string[]\n}\n\nexport const anyLinkProviderId = 'any-link'\n\nconst anyLinkProvider: ReferenceProvider = {\n\tid: anyLinkProviderId,\n\ttitle: t('Any link'),\n\torder: 0,\n\ticon_url: imagePath('core', 'filetypes/link.svg'),\n}\n\n// only get the provider list once, even if functions of this file are imported multiple times by different apps/components\nwindow._vue_richtext_reference_providers ??= loadState('core', 'reference-provider-list', [])\n// single timestamps object used by every entity in the page\nwindow._vue_richtext_reference_provider_timestamps ??= loadState('core', 'reference-provider-timestamps', {})\n\n/**\n * @param providerId - The provider ID\n * @return The provider object\n */\nexport function getProvider(providerId: string): ReferenceProvider | undefined {\n\tif (providerId === anyLinkProviderId) {\n\t\treturn anyLinkProvider\n\t}\n\n\treturn getProviders().find((p) => p.id === providerId)\n}\n\n/**\n * Get raw provider list as it was provided by the server\n */\nexport function getProviders(): ReferenceProvider[] {\n\treturn window._vue_richtext_reference_providers.filter((p) => {\n\t\t// avoid providers with no associated search provider and no custom component registered\n\t\tconst keep = (!!p.search_providers_ids && p.search_providers_ids.length > 0) || isCustomPickerElementRegistered(p.id)\n\t\tif (!keep) {\n\t\t\tlogger.debug(`[smart picker] ${p.id} reference provider is discoverable but does not have any related search provider or custom picker component registered`)\n\t\t}\n\t\treturn keep\n\t})\n}\n\n/**\n * Helper function to sort a list of providers according to 2 factors:\n * - their \"last used timestamp\"\n * - their \"order\" property (coming from the provider declaration in the server implementation)\n *\n * @param providerList - List of provider objects\n * @return The sorted provider list\n */\nexport function sortProviders(providerList: ReferenceProvider[]): ReferenceProvider[] {\n\tconst timestamps = window._vue_richtext_reference_provider_timestamps\n\n\treturn providerList.sort((a, b) => {\n\t\treturn a.order === b.order\n\t\t\t? 0\n\t\t\t: a.order > b.order\n\t\t\t\t? 1\n\t\t\t\t: -1\n\t}).sort((a, b) => {\n\t\tconst ta = timestamps[a.id]\n\t\tconst tb = timestamps[b.id]\n\t\treturn ta === tb\n\t\t\t? 0\n\t\t\t: tb === undefined\n\t\t\t\t? -1\n\t\t\t\t: ta === undefined\n\t\t\t\t\t? 1\n\t\t\t\t\t: ta > tb\n\t\t\t\t\t\t? -1\n\t\t\t\t\t\t: 1\n\t})\n}\n\n/**\n * Helper function to search a provider from a search query\n * Result is a sorted list of providers\n *\n * @param query - The search query\n * @param limit - (optional) max number of results\n * @return The sorted/filtered provider list\n */\nexport function searchProvider(query: string, limit?: number): ReferenceProvider[] {\n\tconst providers = getProviders()\n\tconst escapedQuery = query.replace(/[/\\-\\\\^$*+?.()|[\\]{}]/g, '\\\\$&')\n\tconst regexp = new RegExp(escapedQuery, 'i')\n\tconst sortedProviders = sortProviders(providers)\n\tconst filteredSortedProviders = sortedProviders.filter((p) => {\n\t\treturn p.title.match(regexp)\n\t})\n\n\tconst searchResult = limit\n\t\t? filteredSortedProviders.slice(0, limit)\n\t\t: filteredSortedProviders\n\n\t// append the 'any link' provider in the full list or when there is no result\n\tif (query === '' || searchResult.length === 0) {\n\t\tsearchResult.push(anyLinkProvider)\n\t}\n\treturn searchResult\n}\n\n/**\n * Update the \"last used timestamp\" on the server side and then locally in the frontend\n *\n * @param providerId - The id of the search provider\n */\nexport async function touchProvider(providerId: number) {\n\tconst timestamp = Math.floor(Date.now() / 1000)\n\tconst url = generateOcsUrl('references/provider/{providerId}', { providerId })\n\n\tawait axios.put(url, { timestamp })\n\twindow._vue_richtext_reference_provider_timestamps[providerId] = timestamp\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * Check wether a given string is a valid URL.\n *\n * @param str - The potential URL\n */\nexport function isUrl(str: string): boolean {\n\ttry {\n\t\treturn Boolean(new URL(str))\n\t} catch {\n\t\treturn false\n\t}\n}\n","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div class=\"provider-list\">\n\t\t<NcSelect\n\t\t\tref=\"provider-select\"\n\t\t\tv-model=\"selectedProvider\"\n\t\t\tclass=\"provider-list--select\"\n\t\t\tinput-id=\"provider-select-input\"\n\t\t\tlabel=\"title\"\n\t\t\t:placeholder=\"multiselectPlaceholder\"\n\t\t\t:options=\"options\"\n\t\t\t:append-to-body=\"false\"\n\t\t\t:clear-search-on-select=\"true\"\n\t\t\t:clear-search-on-blur=\"() => false\"\n\t\t\t:filterable=\"false\"\n\t\t\t@search=\"onSearch\"\n\t\t\t@update:model-value=\"onProviderSelected\">\n\t\t\t<template #option=\"option\">\n\t\t\t\t<div v-if=\"option.isLink\" class=\"provider\">\n\t\t\t\t\t<LinkVariantIcon class=\"link-icon\" :size=\"20\" />\n\t\t\t\t\t<span>{{ option.title }}</span>\n\t\t\t\t</div>\n\t\t\t\t<div v-else class=\"provider\">\n\t\t\t\t\t<img\n\t\t\t\t\t\tclass=\"provider-icon\"\n\t\t\t\t\t\t:src=\"option.icon_url\"\n\t\t\t\t\t\t:alt=\"providerIconAlt\">\n\t\t\t\t\t<NcHighlight\n\t\t\t\t\t\tclass=\"option-text\"\n\t\t\t\t\t\t:search=\"query\"\n\t\t\t\t\t\t:text=\"option.title\" />\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t</NcSelect>\n\t\t<NcEmptyContent class=\"provider-list--empty-content\">\n\t\t\t<template #icon>\n\t\t\t\t<LinkVariantIcon />\n\t\t\t</template>\n\t\t</NcEmptyContent>\n\t</div>\n</template>\n\n<script>\nimport LinkVariantIcon from 'vue-material-design-icons/LinkVariant.vue'\nimport { searchProvider } from '../../../functions/reference/providerHelper.ts'\nimport { t } from '../../../l10n.ts'\nimport NcEmptyContent from '../../NcEmptyContent/index.ts'\nimport NcHighlight from '../../NcHighlight/index.ts'\nimport NcSelect from '../../NcSelect/index.js'\nimport { isUrl } from './utils.js'\n\nexport default {\n\tname: 'NcProviderList',\n\tcomponents: {\n\t\tNcSelect,\n\t\tNcHighlight,\n\t\tNcEmptyContent,\n\t\tLinkVariantIcon,\n\t},\n\n\temits: [\n\t\t'selectProvider',\n\t\t'submit',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tselectedProvider: null,\n\t\t\tquery: '',\n\t\t\tmultiselectPlaceholder: t('Select provider'),\n\t\t\tproviderIconAlt: t('Provider icon'),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\toptions() {\n\t\t\tconst result = []\n\t\t\tif (this.query !== '' && isUrl(this.query)) {\n\t\t\t\tresult.push({\n\t\t\t\t\tid: this.query,\n\t\t\t\t\ttitle: this.query,\n\t\t\t\t\tisLink: true,\n\t\t\t\t})\n\t\t\t}\n\t\t\tresult.push(...searchProvider(this.query))\n\t\t\treturn result\n\t\t},\n\t},\n\n\tmethods: {\n\t\tfocus() {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.$refs['provider-select']?.$el?.querySelector('#provider-select-input')?.focus()\n\t\t\t}, 300)\n\t\t},\n\n\t\tonProviderSelected(p) {\n\t\t\tif (p !== null) {\n\t\t\t\tif (p.isLink) {\n\t\t\t\t\tthis.$emit('submit', p.title)\n\t\t\t\t} else {\n\t\t\t\t\tthis.$emit('selectProvider', p)\n\t\t\t\t}\n\t\t\t\tthis.selectedProvider = null\n\t\t\t}\n\t\t},\n\n\t\tonSearch(query) {\n\t\t\tthis.query = query\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.provider-list {\n\twidth: 100%;\n\tmin-height: 400px;\n\tpadding: 0 16px 16px 16px;\n\tdisplay: flex;\n\tflex-direction: column;\n\n\t&--select {\n\t\twidth: 100%;\n\n\t\t.provider {\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\theight: 28px;\n\t\t\toverflow: hidden;\n\n\t\t\t.link-icon {\n\t\t\t\tmargin-inline-end: 8px;\n\t\t\t}\n\n\t\t\t.provider-icon {\n\t\t\t\twidth: 20px;\n\t\t\t\theight: 20px;\n\t\t\t\tobject-fit: contain;\n\t\t\t\tmargin-inline-end: 8px;\n\t\t\t\tfilter: var(--background-invert-if-dark);\n\t\t\t}\n\n\t\t\t.option-text {\n\t\t\t\toverflow: hidden;\n\t\t\t\ttext-overflow: ellipsis;\n\t\t\t\twhite-space: nowrap;\n\t\t\t}\n\n\t\t}\n\t}\n}\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<script setup lang=\"ts\">\nimport type { ReferenceWidgetObject } from './../../functions/reference/widgets.ts'\n\nimport { useElementSize, useIntersectionObserver } from '@vueuse/core'\nimport { computed, inject, nextTick, onBeforeUnmount, ref, useTemplateRef, watch } from 'vue'\nimport { routerKey, RouterLink } from 'vue-router'\nimport NcButton from '../../components/NcButton/NcButton.vue'\nimport { t } from '../../l10n.ts'\nimport { destroyWidget, hasFullWidth, hasInteractiveView, isWidgetRegistered, renderWidget } from './../../functions/reference/widgets.ts'\nimport { getRoute } from './autolink.ts'\n\nconst props = withDefaults(defineProps<{\n\t/**\n\t * A reference object as returned by the ReferenceProvider\n\t */\n\treference: ReferenceWidgetObject\n\t/**\n\t * Whether to render the widget in interactive mode (if available)\n\t */\n\tinteractive?: boolean\n\t/**\n\t * Whether to show user an option to enable to interactive mode (if available)\n\t */\n\tinteractiveOptIn?: boolean\n}>(), {\n\tinteractive: true,\n\tinteractiveOptIn: false,\n})\n\n/* 3 minutes outside of viewport before widget is removed from the DOM */\nconst IDLE_TIMEOUT = 3 * 60 * 1000\n\nconst router = inject(routerKey, null)\n\nconst isVisible = ref(false)\nconst customWidget = useTemplateRef('customWidget')\nconst widgetRoot = useTemplateRef('widgetRoot')\nconst { width } = useElementSize(widgetRoot)\n\nuseIntersectionObserver(widgetRoot, ([entry]) => {\n\tnextTick(() => {\n\t\tisVisible.value = entry!.isIntersecting\n\t})\n})\n\nconst showInteractive = ref(false)\nconst rendered = ref(false)\nlet idleTimeout: NodeJS.Timeout | null = null\n\nconst isInteractive = computed(() => {\n\treturn (!props.interactiveOptIn && props.interactive) || showInteractive.value\n})\n\nconst referenceHasFullWidth = computed(() => {\n\treturn hasFullWidth(props.reference.richObjectType)\n})\n\nconst hasCustomWidget = computed(() => {\n\treturn isWidgetRegistered(props.reference.richObjectType)\n})\n\nconst referenceHasInteractiveView = computed(() => {\n\treturn hasCustomWidget.value && hasInteractiveView(props.reference.richObjectType)\n})\n\nconst noAccess = computed(() => {\n\treturn !props.reference.accessible\n})\n\nconst numberOfLines = computed(() => {\n\t// no description for width < 450, one line until 550 and so on\n\tconst lineCountOffsets = [450, 550, 650, Infinity]\n\treturn lineCountOffsets.findIndex((max) => width.value < max)\n})\n\nconst descriptionStyle = computed(() => {\n\tif (numberOfLines.value === 0) {\n\t\treturn {\n\t\t\tdisplay: 'none',\n\t\t}\n\t}\n\tconst lineClamp = numberOfLines.value\n\treturn {\n\t\tlineClamp,\n\t\twebkitLineClamp: lineClamp,\n\t}\n})\n\nconst compactLink = computed(() => {\n\tconst link = props.reference.openGraphObject.link\n\tif (!link) {\n\t\treturn ''\n\t}\n\n\tif (link.startsWith('https://')) {\n\t\treturn link.substring(8)\n\t}\n\tif (link.startsWith('http://')) {\n\t\treturn link.substring(7)\n\t}\n\treturn link\n})\n\nconst route = computed(() => {\n\treturn getRoute(router, props.reference.openGraphObject.link)\n})\n\nconst referenceWidgetLinkComponent = computed(() => {\n\treturn route.value ? RouterLink : 'a'\n})\n\nconst referenceWidgetLinkProps = computed(() => {\n\treturn route.value\n\t\t? { to: route.value }\n\t\t: { href: props.reference.openGraphObject.link, target: '_blank' }\n})\n\nwatch(isVisible, (val) => {\n\tif (!val) {\n\t\tidleTimeout = setTimeout(() => {\n\t\t\t// If the widget is still outside of viewport after timeout, destroy it\n\t\t\tif (!isVisible.value) {\n\t\t\t\tdestroyReferenceWidget()\n\t\t\t}\n\t\t}, IDLE_TIMEOUT)\n\t\treturn\n\t}\n\n\tif (idleTimeout) {\n\t\tclearTimeout(idleTimeout)\n\t\tidleTimeout = null\n\t}\n\n\tif (!rendered.value) {\n\t\trenderReferenceWidget()\n\t}\n}, { immediate: true })\n\nonBeforeUnmount(() => {\n\tdestroyReferenceWidget()\n})\n\n/**\n * Enable interactive view of the widget, if available\n */\nfunction enableInteractive() {\n\tshowInteractive.value = true\n\trenderReferenceWidget()\n}\n\n/**\n * Render the reference widget\n */\nfunction renderReferenceWidget() {\n\tif (!customWidget.value) {\n\t\treturn\n\t}\n\n\tif (props.reference.richObjectType === 'open-graph') {\n\t\treturn\n\t}\n\n\tcustomWidget.value.innerHTML = ''\n\n\t// create a separate element so we can rerender on the ref again\n\tconst widget = document.createElement('div')\n\twidget.style.width = '100%'\n\tcustomWidget.value.appendChild(widget)\n\tnextTick(() => {\n\t\t// Waiting for the ref to become available\n\t\trenderWidget(widget, {\n\t\t\t...props.reference,\n\t\t\tinteractive: isInteractive.value,\n\t\t})\n\t\trendered.value = true\n\t})\n}\n\n/**\n * Destroy the reference widget\n */\nfunction destroyReferenceWidget() {\n\tif (rendered.value && widgetRoot.value) {\n\t\tdestroyWidget(props.reference.richObjectType, widgetRoot.value)\n\t\trendered.value = false\n\t}\n}\n</script>\n\n<template>\n\t<div ref=\"widgetRoot\" :class=\"{ 'toggle-interactive': referenceHasInteractiveView && !isInteractive }\">\n\t\t<div\n\t\t\tv-if=\"reference && hasCustomWidget\"\n\t\t\tref=\"customWidget\"\n\t\t\tclass=\"widget-custom\"\n\t\t\t:class=\"{ 'full-width': referenceHasFullWidth }\" />\n\n\t\t<component\n\t\t\t:is=\"referenceWidgetLinkComponent\"\n\t\t\tv-else-if=\"!noAccess && reference && reference.openGraphObject && !hasCustomWidget\"\n\t\t\tv-bind=\"referenceWidgetLinkProps\"\n\t\t\trel=\"noopener noreferrer\"\n\t\t\tclass=\"widget-default\">\n\t\t\t<img v-if=\"reference.openGraphObject.thumb\" class=\"widget-default--image\" :src=\"reference.openGraphObject.thumb\">\n\t\t\t<div class=\"widget-default--details\">\n\t\t\t\t<p class=\"widget-default--name\">\n\t\t\t\t\t{{ reference.openGraphObject.name }}\n\t\t\t\t</p>\n\t\t\t\t<p class=\"widget-default--description\" :style=\"descriptionStyle\">\n\t\t\t\t\t{{ reference.openGraphObject.description }}\n\t\t\t\t</p>\n\t\t\t\t<p class=\"widget-default--link\">\n\t\t\t\t\t{{ compactLink }}\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t</component>\n\t\t<NcButton v-if=\"interactiveOptIn && referenceHasInteractiveView && !isInteractive\" class=\"toggle-interactive--button\" @click=\"enableInteractive\">\n\t\t\t{{ t('Enable interactive view') }}\n\t\t</NcButton>\n\t</div>\n</template>\n\n<style lang=\"scss\" scoped>\n\n@mixin widget {\n\twidth: 100%;\n\tmargin: auto;\n\tmargin-bottom: calc(var(--default-grid-baseline, 4px) * 3);\n\tmargin-top: calc(var(--default-grid-baseline, 4px) * 3);\n\toverflow: hidden;\n\tborder: 2px solid var(--color-border);\n\tborder-radius: var(--border-radius-container);\n\tbackground-color: transparent;\n\tdisplay: flex;\n}\n\n.widget-custom {\n\t@include widget;\n\n\t&.full-width {\n\t\twidth: var(--widget-full-width, 100%) !important;\n\t\tinset-inline-start: calc( (var(--widget-full-width, 100%) - 100%) / 2 * -1);\n\t\tposition: relative;\n\t}\n}\n\n.widget-access {\n\t@include widget;\n\tpadding: calc(var(--default-grid-baseline, 4px) * 3);\n}\n\n.widget-default {\n\t@include widget;\n\n\t&--compact {\n\t\tflex-direction: column;\n\n\t\t.widget-default--image {\n\t\t\twidth: 100%;\n\t\t\theight: 150px;\n\t\t}\n\n\t\t.widget-default--details {\n\t\t\twidth: 100%;\n\t\t\tpadding-top: calc(var(--default-grid-baseline, 4px) * 2);\n\t\t\tpadding-bottom: calc(var(--default-grid-baseline, 4px) * 2);\n\t\t}\n\n\t\t.widget-default--description {\n\t\t\tdisplay: none;\n\t\t}\n\n\t}\n\n\t&--image {\n\t\twidth: 40%;\n\t\tbackground-position: center;\n\t\tbackground-size: cover;\n\t\tbackground-repeat: no-repeat;\n\t}\n\n\t&--name {\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\twhite-space: nowrap;\n\t\tfont-weight: bold;\n\t}\n\n\t&--details {\n\t\tpadding: calc(var(--default-grid-baseline, 4px) * 3);\n\t\twidth: 60%;\n\n\t\tp {\n\t\t\tmargin: 0;\n\t\t\tpadding: 0;\n\t\t}\n\t}\n\n\t&--description {\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 3;\n\t\tline-clamp: 3; /* stylelint-disable-line property-no-unknown */\n\t\t-webkit-box-orient: vertical;\n\t}\n\n\t&--link {\n\t\tcolor: var(--color-text-maxcontrast);\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\twhite-space: nowrap;\n\t}\n}\n\n.toggle-interactive {\n\tposition: relative;\n\t.toggle-interactive--button {\n\t\tposition: absolute;\n\t\tbottom: var(--default-grid-baseline);\n\t\tinset-inline-end: var(--default-grid-baseline);\n\t\tz-index: 10000;\n\t}\n}\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div class=\"raw-link\">\n\t\t<div class=\"input-wrapper\">\n\t\t\t<NcTextField\n\t\t\t\tref=\"url-input\"\n\t\t\t\tv-model=\"inputValue\"\n\t\t\t\t:show-trailing-button=\"inputValue !== ''\"\n\t\t\t\t:label=\"inputPlaceholder\"\n\t\t\t\t@trailing-button-click=\"onClear\"\n\t\t\t\t@update:model-value=\"onInput\"\n\t\t\t\t@keyup.enter=\"onSubmit\">\n\t\t\t\t<NcLoadingIcon v-if=\"loading\" :size=\"16\" />\n\t\t\t\t<LinkVariantIcon v-else :size=\"16\" />\n\t\t\t</NcTextField>\n\t\t</div>\n\t\t<NcReferenceWidget\n\t\t\tv-if=\"reference !== null\"\n\t\t\tclass=\"reference-widget\"\n\t\t\t:reference=\"reference\" />\n\t\t<NcEmptyContent\n\t\t\tv-else\n\t\t\tclass=\"raw-link--empty-content\">\n\t\t\t<template #icon>\n\t\t\t\t<img\n\t\t\t\t\tv-if=\"provider.icon_url\"\n\t\t\t\t\tclass=\"provider-icon\"\n\t\t\t\t\t:src=\"provider.icon_url\">\n\t\t\t\t<LinkVariantIcon v-else />\n\t\t\t</template>\n\t\t</NcEmptyContent>\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport debounce from 'debounce'\nimport LinkVariantIcon from 'vue-material-design-icons/LinkVariant.vue'\nimport NcReferenceWidget from '../NcReferenceWidget.vue'\nimport { t } from '../../../l10n.ts'\nimport { logger } from '../../../utils/logger.ts'\nimport NcEmptyContent from '../../NcEmptyContent/index.ts'\nimport NcLoadingIcon from '../../NcLoadingIcon/index.ts'\nimport NcTextField from '../../NcTextField/index.ts'\nimport { isUrl } from './utils.ts'\n\nexport default {\n\tname: 'NcRawLinkInput',\n\tcomponents: {\n\t\tLinkVariantIcon,\n\t\tNcEmptyContent,\n\t\tNcLoadingIcon,\n\t\tNcReferenceWidget,\n\t\tNcTextField,\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * The reference provider\n\t\t */\n\t\tprovider: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\temits: [\n\t\t'submit',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tinputValue: '',\n\t\t\tloading: false,\n\t\t\treference: null,\n\t\t\tabortController: null,\n\t\t\tinputPlaceholder: t('Enter link'),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisLinkValid() {\n\t\t\treturn isUrl(this.inputValue)\n\t\t},\n\n\t\tdebouncedUpdateReference() {\n\t\t\treturn debounce(this.updateReference, 500)\n\t\t},\n\t},\n\n\tmethods: {\n\t\tfocus() {\n\t\t\tthis.$refs['url-input'].$el.getElementsByTagName('input')[0]?.focus()\n\t\t},\n\n\t\tonSubmit(e) {\n\t\t\tconst value = e.target.value\n\t\t\tif (this.isLinkValid) {\n\t\t\t\tthis.$emit('submit', value)\n\t\t\t}\n\t\t},\n\n\t\tonClear() {\n\t\t\tthis.inputValue = ''\n\t\t\tthis.reference = null\n\t\t},\n\n\t\tonInput() {\n\t\t\tthis.reference = null\n\t\t\tif (this.abortController) {\n\t\t\t\tthis.abortController.abort()\n\t\t\t}\n\t\t\tif (this.isLinkValid) {\n\t\t\t\tthis.debouncedUpdateReference()\n\t\t\t}\n\t\t},\n\n\t\tupdateReference() {\n\t\t\tthis.loading = true\n\t\t\tthis.abortController = new AbortController()\n\t\t\taxios.get(generateOcsUrl('references/resolve', 2) + '?reference=' + encodeURIComponent(this.inputValue), {\n\t\t\t\tsignal: this.abortController.signal,\n\t\t\t})\n\t\t\t\t.then((response) => {\n\t\t\t\t\tthis.reference = response.data.ocs.data.references[this.inputValue]\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tlogger.error('[NcRawLinkInput] Failed to update reference', { error })\n\t\t\t\t})\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.loading = false\n\t\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.raw-link {\n\twidth: 100%;\n\tmin-height: 350px;\n\tdisplay: flex;\n\tflex-direction: column;\n\toverflow-y: auto;\n\tpadding: 0 16px 16px 16px;\n\n\t.input-wrapper {\n\t\twidth: 100%;\n\t}\n\n\t.reference-widget {\n\t\tdisplay: flex;\n\t}\n\n\t&--empty-content .provider-icon {\n\t\twidth: 150px;\n\t\theight: 150px;\n\t\tobject-fit: contain;\n\t\tfilter: var(--background-invert-if-dark);\n\t}\n\n\t&--input {\n\t\twidth: 99%;\n\t}\n}\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div class=\"result\">\n\t\t<div\n\t\t\tv-if=\"entry.icon\"\n\t\t\t:class=\"{ [entry.icon]: true, rounded: entry.rounded }\"\n\t\t\tclass=\"result--icon-class\" />\n\t\t<img\n\t\t\tv-else\n\t\t\tclass=\"result--image\"\n\t\t\t:class=\"{ rounded: entry.rounded }\"\n\t\t\t:src=\"entry.thumbnailUrl\">\n\t\t<div class=\"result--content\">\n\t\t\t<span class=\"result--content--name\">\n\t\t\t\t<NcHighlight :search=\"query\" :text=\"entry.title\" />\n\t\t\t</span>\n\t\t\t<span class=\"result--content--subline\">\n\t\t\t\t<NcHighlight :search=\"query\" :text=\"entry.subline\" />\n\t\t\t</span>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport NcHighlight from '../../NcHighlight/index.ts'\n\nexport default {\n\tname: 'NcSearchResult',\n\tcomponents: {\n\t\tNcHighlight,\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * Unified search result entry\n\t\t */\n\t\tentry: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\n\t\t/**\n\t\t * The query that led to getting this result\n\t\t * Used to highlight the entry text\n\t\t */\n\t\tquery: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.result {\n\tdisplay: flex;\n\talign-items: center;\n\theight: var(--default-clickable-area);\n\toverflow: hidden;\n\n\t&--icon-class,\n\t&--image {\n\t\twidth: 40px;\n\t\tmin-width: 40px;\n\t\theight: 40px;\n\t\tobject-fit: contain;\n\n\t\t&.rounded {\n\t\t\tborder-radius: 50%;\n\t\t}\n\t}\n\n\t&--content {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tpadding-inline-start: 10px;\n\t\toverflow: hidden;\n\n\t\t&--name,\n\t\t&--subline {\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\t\t}\n\t}\n}\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div class=\"smart-picker-search\" :class=\"{ 'with-empty-content': showEmptyContent }\">\n\t\t<NcSelect\n\t\t\tref=\"search-select\"\n\t\t\tv-model=\"selectedResult\"\n\t\t\tclass=\"smart-picker-search--select\"\n\t\t\tinput-id=\"search-select-input\"\n\t\t\tlabel=\"name\"\n\t\t\t:placeholder=\"mySearchPlaceholder\"\n\t\t\t:options=\"options\"\n\t\t\t:append-to-body=\"false\"\n\t\t\t:close-on-select=\"false\"\n\t\t\t:clear-search-on-select=\"false\"\n\t\t\t:clear-search-on-blur=\"() => false\"\n\t\t\t:reset-focus-on-options-change=\"false\"\n\t\t\t:filterable=\"false\"\n\t\t\t:autoscroll=\"true\"\n\t\t\t:reset-on-options-change=\"false\"\n\t\t\t:loading=\"searching\"\n\t\t\t@search=\"onSearchInput\"\n\t\t\t@update:model-value=\"onSelectResultSelected\">\n\t\t\t<template #option=\"option\">\n\t\t\t\t<div v-if=\"option.isRawLink\" class=\"custom-option\">\n\t\t\t\t\t<LinkVariantIcon class=\"option-simple-icon\" :size=\"20\" />\n\t\t\t\t\t<span class=\"option-text\">\n\t\t\t\t\t\t{{ t('Raw link {options}', { options: option.resourceUrl }) }}\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t\t<NcSearchResult\n\t\t\t\t\tv-else-if=\"option.resourceUrl\"\n\t\t\t\t\tclass=\"search-result\"\n\t\t\t\t\t:entry=\"option\"\n\t\t\t\t\t:query=\"searchQuery\" />\n\t\t\t\t<span v-else-if=\"option.isCustomGroupTitle\" class=\"custom-option group-name\">\n\t\t\t\t\t<img\n\t\t\t\t\t\tv-if=\"provider.icon_url\"\n\t\t\t\t\t\tclass=\"provider-icon group-name-icon\"\n\t\t\t\t\t\t:src=\"provider.icon_url\">\n\t\t\t\t\t<span class=\"option-text\">\n\t\t\t\t\t\t<strong>{{ option.name }}</strong>\n\t\t\t\t\t</span>\n\t\t\t\t</span>\n\t\t\t\t<span v-else-if=\"option.isMore\" class=\"custom-option\">\n\t\t\t\t\t<span v-if=\"option.isLoading\" class=\"option-simple-icon icon-loading-small\" />\n\t\t\t\t\t<DotsHorizontalIcon v-else class=\"option-simple-icon\" :size=\"20\" />\n\t\t\t\t\t<span class=\"option-text\">\n\t\t\t\t\t\t{{ t('Load more \"{options}\"', { options: option.name }) }}\n\t\t\t\t\t</span>\n\t\t\t\t</span>\n\t\t\t</template>\n\t\t\t<template #no-options>\n\t\t\t\t{{ noOptionsText }}\n\t\t\t</template>\n\t\t</NcSelect>\n\t\t<NcEmptyContent\n\t\t\tv-if=\"showEmptyContent\"\n\t\t\tclass=\"smart-picker-search--empty-content\">\n\t\t\t<template #icon>\n\t\t\t\t<img\n\t\t\t\t\tv-if=\"provider.icon_url\"\n\t\t\t\t\tclass=\"provider-icon\"\n\t\t\t\t\t:alt=\"providerIconAlt\"\n\t\t\t\t\t:src=\"provider.icon_url\">\n\t\t\t\t<LinkVariantIcon v-else />\n\t\t\t</template>\n\t\t</NcEmptyContent>\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport debounce from 'debounce'\nimport DotsHorizontalIcon from 'vue-material-design-icons/DotsHorizontal.vue'\nimport LinkVariantIcon from 'vue-material-design-icons/LinkVariant.vue'\nimport NcSearchResult from './NcSearchResult.vue'\nimport { t } from '../../../l10n.ts'\nimport NcEmptyContent from '../../NcEmptyContent/index.ts'\nimport NcSelect from '../../NcSelect/index.js'\nimport { isUrl } from './utils.ts'\n\nconst LIMIT = 5\n\nexport default {\n\tname: 'NcSearch',\n\tcomponents: {\n\t\tLinkVariantIcon,\n\t\tDotsHorizontalIcon,\n\t\tNcEmptyContent,\n\t\tNcSelect,\n\t\tNcSearchResult,\n\t},\n\n\t/* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n\tprops: {\n\t\t/**\n\t\t * The selected reference provider\n\t\t */\n\t\tprovider: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\n\t\tshowEmptyContent: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * Placeholder of the search\n\t\t */\n\t\tsearchPlaceholder: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\temits: [\n\t\t'submit',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tsearchQuery: '',\n\t\t\tselectedResult: null,\n\t\t\tresultsBySearchProvider: {},\n\t\t\tsearching: false,\n\t\t\tsearchingMoreOf: null,\n\t\t\tabortController: null,\n\t\t\tnoOptionsText: t('Start typing to search'),\n\t\t\tproviderIconAlt: t('Provider icon'),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tmySearchPlaceholder() {\n\t\t\treturn this.searchPlaceholder || t('Search')\n\t\t},\n\n\t\tsearchProviderIds() {\n\t\t\treturn this.provider.search_providers_ids\n\t\t},\n\n\t\toptions() {\n\t\t\tif (this.searchQuery === '') {\n\t\t\t\treturn []\n\t\t\t}\n\n\t\t\tconst options = []\n\t\t\tif (isUrl(this.searchQuery)) {\n\t\t\t\toptions.push(this.rawLinkEntry)\n\t\t\t}\n\t\t\toptions.push(...this.formattedSearchResults)\n\t\t\treturn options\n\t\t},\n\n\t\trawLinkEntry() {\n\t\t\treturn {\n\t\t\t\tid: 'rawLinkEntry',\n\t\t\t\tresourceUrl: this.searchQuery,\n\t\t\t\tisRawLink: true,\n\t\t\t}\n\t\t},\n\n\t\tformattedSearchResults() {\n\t\t\tconst results = []\n\t\t\tthis.searchProviderIds.forEach((pid) => {\n\t\t\t\tif (this.resultsBySearchProvider[pid].entries.length > 0) {\n\t\t\t\t\t// don't show group name entry if there is only one search provider and one result\n\t\t\t\t\tif (this.searchProviderIds.length > 1 || this.resultsBySearchProvider[pid].entries.length > 1) {\n\t\t\t\t\t\tresults.push({\n\t\t\t\t\t\t\tid: 'groupTitle-' + pid,\n\t\t\t\t\t\t\tname: this.resultsBySearchProvider[pid].name,\n\t\t\t\t\t\t\tisCustomGroupTitle: true,\n\t\t\t\t\t\t\tproviderId: pid,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\tconst providerEntriesWithId = this.resultsBySearchProvider[pid].entries.map((entry, index) => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tid: 'provider-' + pid + '-entry-' + index,\n\t\t\t\t\t\t\t...entry,\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\tresults.push(...providerEntriesWithId)\n\t\t\t\t\tif (this.resultsBySearchProvider[pid].isPaginated) {\n\t\t\t\t\t\tresults.push({\n\t\t\t\t\t\t\tid: 'moreOf-' + pid,\n\t\t\t\t\t\t\tname: this.resultsBySearchProvider[pid].name,\n\t\t\t\t\t\t\tisMore: true,\n\t\t\t\t\t\t\tproviderId: pid,\n\t\t\t\t\t\t\tisLoading: this.searchingMoreOf === pid,\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\treturn results\n\t\t},\n\n\t\tdebouncedUpdateSearch() {\n\t\t\treturn debounce(this.updateSearch, 500)\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.resetResults()\n\t},\n\n\tbeforeUnmount() {\n\t\tthis.cancelSearchRequests()\n\t},\n\n\tmethods: {\n\t\tt,\n\t\tresetResults() {\n\t\t\tconst resultsBySearchProvider = {}\n\t\t\tthis.searchProviderIds.forEach((pid) => {\n\t\t\t\tresultsBySearchProvider[pid] = {\n\t\t\t\t\tentries: [],\n\t\t\t\t}\n\t\t\t})\n\t\t\tthis.resultsBySearchProvider = resultsBySearchProvider\n\t\t},\n\n\t\tfocus() {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.$refs['search-select']?.$el?.querySelector('#search-select-input')?.focus()\n\t\t\t}, 300)\n\t\t},\n\n\t\tcancelSearchRequests() {\n\t\t\tif (this.abortController) {\n\t\t\t\tthis.abortController.abort()\n\t\t\t}\n\t\t},\n\n\t\tonSearchInput(query) {\n\t\t\tthis.searchQuery = query\n\t\t\tthis.debouncedUpdateSearch()\n\t\t},\n\n\t\tonSelectResultSelected(item) {\n\t\t\tif (item !== null) {\n\t\t\t\tif (item.resourceUrl) {\n\t\t\t\t\tthis.cancelSearchRequests()\n\t\t\t\t\tthis.$emit('submit', item.resourceUrl)\n\t\t\t\t} else if (item.isMore) {\n\t\t\t\t\tthis.searchMoreOf(item.providerId).then(() => {\n\t\t\t\t\t\t// allow clicking twice on the same \"more\" item\n\t\t\t\t\t\tthis.selectedResult = null\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tsearchMoreOf(searchProviderId) {\n\t\t\tthis.searchingMoreOf = searchProviderId\n\t\t\tthis.cancelSearchRequests()\n\t\t\treturn this.searchProviders(searchProviderId)\n\t\t},\n\n\t\tupdateSearch() {\n\t\t\tthis.cancelSearchRequests()\n\t\t\tthis.resetResults()\n\t\t\tif (this.searchQuery === '') {\n\t\t\t\tthis.searching = false\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\treturn this.searchProviders()\n\t\t},\n\n\t\tsearchProviders(searchProviderId = null) {\n\t\t\tthis.abortController = new AbortController()\n\t\t\tthis.searching = true\n\n\t\t\tconst searchPromises = searchProviderId === null\n\t\t\t\t? [...this.searchProviderIds].map((pid) => {\n\t\t\t\t\t\treturn this.searchOneProvider(pid)\n\t\t\t\t\t})\n\t\t\t\t: [this.searchOneProvider(searchProviderId, this.resultsBySearchProvider[searchProviderId]?.cursor ?? null)]\n\t\t\t// fake one to have a request error\n\t\t\t// searchPromises.push(this.searchOneProvider('nopid'))\n\n\t\t\treturn Promise.allSettled(searchPromises)\n\t\t\t\t.then((promises) => {\n\t\t\t\t\tconst isOneCanceled = !!promises.find((p) => {\n\t\t\t\t\t\treturn p.status === 'rejected' && (p.reason.name === 'CanceledError' || p.reason.code === 'ERR_CANCELED')\n\t\t\t\t\t})\n\t\t\t\t\t// nothing was canceled: not searching\n\t\t\t\t\tif (!isOneCanceled) {\n\t\t\t\t\t\tthis.searching = false\n\t\t\t\t\t\tthis.searchingMoreOf = null\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t},\n\n\t\tsearchOneProvider(providerId, cursor = null) {\n\t\t\tconst url = cursor === null\n\t\t\t\t? generateOcsUrl('search/providers/{providerId}/search?term={term}&limit={limit}', { providerId, term: this.searchQuery, limit: LIMIT })\n\t\t\t\t: generateOcsUrl('search/providers/{providerId}/search?term={term}&limit={limit}&cursor={cursor}', { providerId, term: this.searchQuery, limit: LIMIT, cursor })\n\t\t\treturn axios.get(url, {\n\t\t\t\tsignal: this.abortController.signal,\n\t\t\t})\n\t\t\t\t.then((response) => {\n\t\t\t\t\tconst data = response.data.ocs.data\n\t\t\t\t\tthis.resultsBySearchProvider[providerId].name = data.name\n\t\t\t\t\tthis.resultsBySearchProvider[providerId].cursor = data.cursor\n\t\t\t\t\tthis.resultsBySearchProvider[providerId].isPaginated = data.isPaginated\n\t\t\t\t\tthis.resultsBySearchProvider[providerId].entries.push(...data.entries)\n\t\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.smart-picker-search {\n\twidth: 100%;\n\tdisplay: flex;\n\tflex-direction: column;\n\tpadding: 0 16px 16px 16px;\n\t&.with-empty-content {\n\t\tmin-height: 400px;\n\t}\n\n\t.provider-icon {\n\t\twidth: 150px;\n\t\theight: 150px;\n\t\tobject-fit: contain;\n\t\tfilter: var(--background-invert-if-dark);\n\t}\n\n\t&--select {\n\t\twidth: 100%;\n\n\t\t.search-result {\n\t\t\twidth: 100%;\n\t\t}\n\n\t\t.group-name-icon,\n\t\t.option-simple-icon {\n\t\t\twidth: 20px;\n\t\t\theight: 20px;\n\t\t\tmargin: 0 20px 0 10px;\n\t\t}\n\n\t\t.custom-option {\n\t\t\theight: var(--default-clickable-area);\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t\toverflow: hidden;\n\t\t}\n\n\t\t.option-text {\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\t\t}\n\t}\n}\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<div\n\t\tclass=\"reference-picker\"\n\t\t:style=\"pickerWrapperStyle\"\n\t\ttabindex=\"-1\"\n\t\t@keydown.stop.prevent.esc=\"onEscapePressed\">\n\t\t<NcProviderList\n\t\t\tv-if=\"mode === MODES.providerList\"\n\t\t\tref=\"provider-list\"\n\t\t\t@select-provider=\"onProviderSelected\"\n\t\t\t@submit=\"submitLink\"\n\t\t\t@cancel=\"cancelProviderSelection\" />\n\t\t<NcRawLinkInput\n\t\t\tv-else-if=\"mode === MODES.standardLinkInput\"\n\t\t\tref=\"url-input\"\n\t\t\t:provider=\"selectedProvider\"\n\t\t\t@submit=\"submitLink\"\n\t\t\t@cancel=\"cancelRawLinkInput\" />\n\t\t<NcSearch\n\t\t\tv-else-if=\"mode === MODES.searchInput\"\n\t\t\tref=\"url-input\"\n\t\t\t:provider=\"selectedProvider\"\n\t\t\t@cancel=\"cancelSearch\"\n\t\t\t@submit=\"submitLink\" />\n\t\t<div\n\t\t\tv-else-if=\"mode === MODES.customElement\"\n\t\t\tclass=\"custom-element-wrapper\">\n\t\t\t<NcCustomPickerElement\n\t\t\t\t:provider=\"selectedProvider\"\n\t\t\t\tclass=\"custom-element\"\n\t\t\t\t@submit=\"submitLink\"\n\t\t\t\t@cancel=\"cancelCustomElement\" />\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport NcCustomPickerElement from './NcCustomPickerElement.vue'\nimport NcProviderList from './NcProviderList.vue'\nimport NcRawLinkInput from './NcRawLinkInput.vue'\nimport NcSearch from './NcSearch.vue'\nimport { isCustomPickerElementRegistered } from '../../../functions/reference/customPickerElements.ts'\nimport { touchProvider } from '../../../functions/reference/providerHelper.ts'\n\nconst MODES = {\n\tproviderList: 1,\n\tstandardLinkInput: 2,\n\tsearchInput: 3,\n\tcustomElement: 4,\n}\nexport default {\n\tname: 'NcReferencePicker',\n\tcomponents: {\n\t\tNcCustomPickerElement,\n\t\tNcProviderList,\n\t\tNcRawLinkInput,\n\t\tNcSearch,\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * Provider to select on creation\n\t\t * Default: null. Show the provider list\n\t\t */\n\t\tinitialProvider: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => null,\n\t\t},\n\n\t\t/**\n\t\t * Optional width in pixels\n\t\t * Default: 100%\n\t\t */\n\t\twidth: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Focus on the provider list select input on creation\n\t\t * Default: true\n\t\t */\n\t\tfocusOnCreate: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\n\temits: [\n\t\t'cancel',\n\t\t'cancelRawLink',\n\t\t'cancelSearch',\n\t\t'providerSelected',\n\t\t'submit',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tMODES,\n\t\t\tselectedProvider: this.initialProvider,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tmode() {\n\t\t\treturn this.selectedProvider === null\n\t\t\t\t? MODES.providerList\n\t\t\t\t: isCustomPickerElementRegistered(this.selectedProvider.id)\n\t\t\t\t\t? MODES.customElement\n\t\t\t\t\t: this.selectedProvider.search_providers_ids\n\t\t\t\t\t\t? MODES.searchInput\n\t\t\t\t\t\t: MODES.standardLinkInput\n\t\t},\n\n\t\tpickerWrapperStyle() {\n\t\t\treturn {\n\t\t\t\twidth: this.width ? this.width + 'px' : undefined,\n\t\t\t}\n\t\t},\n\t},\n\n\tmounted() {\n\t\tif (this.focusOnCreate) {\n\t\t\tif (this.initialProvider) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tthis.$refs['url-input']?.focus()\n\t\t\t\t}, 300)\n\t\t\t} else {\n\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\tthis.$refs['provider-list']?.focus()\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonEscapePressed() {\n\t\t\tif (this.selectedProvider !== null) {\n\t\t\t\tthis.deselectProvider()\n\t\t\t} else {\n\t\t\t\tthis.cancelProviderSelection()\n\t\t\t}\n\t\t},\n\n\t\tonProviderSelected(provider) {\n\t\t\tthis.selectedProvider = provider\n\t\t\tthis.$emit('providerSelected', provider)\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.$refs['url-input']?.focus()\n\t\t\t})\n\t\t},\n\n\t\tcancelCustomElement() {\n\t\t\tthis.deselectProvider()\n\t\t},\n\n\t\tcancelSearch() {\n\t\t\tthis.$emit('cancelSearch', this.selectedProvider?.title)\n\t\t\tthis.deselectProvider()\n\t\t},\n\n\t\tcancelRawLinkInput() {\n\t\t\tthis.$emit('cancelRawLink', this.selectedProvider?.title)\n\t\t\tthis.deselectProvider()\n\t\t},\n\n\t\tcancelProviderSelection() {\n\t\t\tthis.$emit('cancel')\n\t\t},\n\n\t\tsubmitLink(link) {\n\t\t\tif (this.selectedProvider !== null) {\n\t\t\t\ttouchProvider(this.selectedProvider.id)\n\t\t\t}\n\t\t\tthis.$emit('submit', link)\n\t\t\tthis.deselectProvider()\n\t\t},\n\n\t\tdeselectProvider() {\n\t\t\tthis.selectedProvider = null\n\t\t\tthis.$emit('providerSelected', null)\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.$refs['provider-list']?.focus()\n\t\t\t}, 300)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.reference-picker {\n\tdisplay: flex;\n\toverflow-y: auto;\n\twidth: 100%;\n\n\t.custom-element-wrapper {\n\t\tdisplay: flex;\n\t\toverflow-y: auto;\n\t\twidth: 100%;\n\t\t.custom-element {\n\t\t\tdisplay: flex;\n\t\t\toverflow-y: auto;\n\t\t\twidth: 100%;\n\t\t}\n\t}\n}\n</style>\n","<!--\n - SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<NcModal\n\t\tv-if=\"show\"\n\t\t:size=\"modalSize\"\n\t\tclass=\"reference-picker-modal\"\n\t\t@close=\"onCancel\">\n\t\t<div\n\t\t\tref=\"modal_content\"\n\t\t\tclass=\"reference-picker-modal--content\">\n\t\t\t<NcButton\n\t\t\t\tv-if=\"showBackButton\"\n\t\t\t\t:aria-label=\"backButtonTitle\"\n\t\t\t\t:title=\"backButtonTitle\"\n\t\t\t\tclass=\"back-button\"\n\t\t\t\t@click=\"onBackClicked\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<ArrowLeftIcon />\n\t\t\t\t</template>\n\t\t\t</NcButton>\n\t\t\t<NcButton\n\t\t\t\tclass=\"close-button\"\n\t\t\t\t:aria-label=\"closeButtonLabel\"\n\t\t\t\t:title=\"closeButtonTitle\"\n\t\t\t\tvariant=\"tertiary\"\n\t\t\t\t@click=\"onCancel\">\n\t\t\t\t<template #icon>\n\t\t\t\t\t<CloseIcon />\n\t\t\t\t</template>\n\t\t\t</NcButton>\n\t\t\t<h2 v-if=\"showModalName\">\n\t\t\t\t{{ modalName }}\n\t\t\t</h2>\n\t\t\t<NcReferencePicker\n\t\t\t\tref=\"referencePicker\"\n\t\t\t\t:initial-provider=\"initialProvider\"\n\t\t\t\t:focus-on-create=\"focusOnCreate\"\n\t\t\t\t@provider-selected=\"onProviderSelect\"\n\t\t\t\t@submit=\"onSubmit\"\n\t\t\t\t@cancel=\"onCancel\" />\n\t\t</div>\n\t</NcModal>\n</template>\n\n<script>\nimport { emit } from '@nextcloud/event-bus'\nimport ArrowLeftIcon from 'vue-material-design-icons/ArrowLeft.vue'\nimport CloseIcon from 'vue-material-design-icons/Close.vue'\nimport NcReferencePicker from './NcReferencePicker.vue'\nimport { getCustomPickerElementSize, isCustomPickerElementRegistered } from '../../../functions/reference/customPickerElements.ts'\nimport { t } from '../../../l10n.ts'\nimport NcButton from '../../NcButton/index.ts'\nimport NcModal from '../../NcModal/index.js'\n\nexport default {\n\tname: 'NcReferencePickerModal',\n\tcomponents: {\n\t\tNcReferencePicker,\n\t\tNcModal,\n\t\tNcButton,\n\t\tArrowLeftIcon,\n\t\tCloseIcon,\n\t},\n\n\tprops: {\n\t\t/**\n\t\t * Provider to select on creation\n\t\t * Show the provider list if no initial one is provided\n\t\t */\n\t\tinitialProvider: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => null,\n\t\t},\n\n\t\t/**\n\t\t * Focus on the input item on create\n\t\t */\n\t\tfocusOnCreate: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * If true, add the modal content to the Viewer trap elements via the event-bus\n\t\t */\n\t\tisInsideViewer: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\temits: [\n\t\t'cancel',\n\t\t'submit',\n\t],\n\n\tdata() {\n\t\treturn {\n\t\t\tshow: true,\n\t\t\tselectedProvider: this.initialProvider,\n\t\t\tbackButtonTitle: t('Back to provider selection'),\n\t\t\tcloseButtonTitle: t('Close'),\n\t\t\tcloseButtonLabel: t('Close Smart Picker'),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisProviderSelected() {\n\t\t\treturn this.selectedProvider !== null\n\t\t},\n\n\t\tshowBackButton() {\n\t\t\treturn this.initialProvider === null && this.isProviderSelected\n\t\t},\n\n\t\tmodalSize() {\n\t\t\treturn this.isProviderSelected && isCustomPickerElementRegistered(this.selectedProvider.id)\n\t\t\t\t? (getCustomPickerElementSize(this.selectedProvider.id) ?? 'large')\n\t\t\t\t: 'normal'\n\t\t},\n\n\t\tshowModalName() {\n\t\t\treturn !this.isProviderSelected || !isCustomPickerElementRegistered(this.selectedProvider.id)\n\t\t},\n\n\t\tmodalName() {\n\t\t\treturn this.isProviderSelected\n\t\t\t\t? this.selectedProvider.title\n\t\t\t\t: t('Smart Picker')\n\t\t},\n\t},\n\n\tmounted() {\n\t\tif (this.isInsideViewer) {\n\t\t\tconst elem = this.$refs.modal_content\n\t\t\temit('viewer:trapElements:changed', elem)\n\t\t}\n\t},\n\n\tmethods: {\n\t\tonCancel() {\n\t\t\tthis.show = false\n\t\t\tthis.$emit('cancel')\n\t\t},\n\n\t\tonSubmit(value) {\n\t\t\tthis.show = false\n\t\t\tthis.$emit('submit', value)\n\t\t},\n\n\t\tonProviderSelect(provider) {\n\t\t\tthis.selectedProvider = provider\n\t\t\t// provider was deselected and we started with an inital one: just close the modal\n\t\t\tif (provider === null && this.initialProvider !== null) {\n\t\t\t\tthis.onCancel()\n\t\t\t}\n\t\t},\n\n\t\tonBackClicked() {\n\t\t\tthis.$refs.referencePicker.deselectProvider()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n// this is to avoid scroll on the container and leave it to the result block\n.reference-picker-modal :deep(.modal-container) {\n\tdisplay: flex !important;\n}\n\n.reference-picker-modal--content {\n\twidth: 100%;\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\tjustify-content: center;\n\toverflow-y: auto;\n\n\t.close-button,\n\t.back-button {\n\t\tposition: absolute;\n\t\ttop: 4px;\n\t}\n\t.back-button {\n\t\tinset-inline-start: 4px;\n\t}\n\t.close-button {\n\t\tinset-inline-end: 4px;\n\t}\n\n\t> h2 {\n\t\tdisplay: flex;\n\t\tmargin: 12px 0 20px 0;\n\t\t.icon {\n\t\t\tmargin-inline-end: 8px;\n\t\t}\n\t}\n}\n</style>\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { createApp } from 'vue'\nimport NcReferencePickerModal from './../../components/NcRichText/NcReferencePicker/NcReferencePickerModal.vue'\nimport { getProvider } from './providerHelper.js'\n\n/**\n * Creates a reference picker modal and return a promise which provides the result\n *\n * @param providerId - Optional ID of initial selected provider\n * @param isInsideViewer - Should be true if this function is called while the Viewer is displayed\n */\nexport async function getLinkWithPicker(providerId?: string, isInsideViewer?: boolean): Promise<string> {\n\tconst modalId = 'referencePickerModal'\n\tconst modalElement = document.createElement('div')\n\tmodalElement.id = modalId\n\tdocument.body.append(modalElement)\n\n\tconst { promise, reject, resolve } = Promise.withResolvers<string>()\n\tconst initialProvider = (providerId && getProvider(providerId)) || null\n\tconst view = createApp(NcReferencePickerModal, {\n\t\tinitialProvider,\n\t\tisInsideViewer,\n\t\tonCancel() {\n\t\t\tview.unmount()\n\t\t\treject(new Error('User cancellation'))\n\t\t},\n\t\tonSubmit(link: string) {\n\t\t\tview.unmount()\n\t\t\tresolve(link)\n\t\t},\n\t})\n\tview.mount(modalElement)\n\n\treturn promise\n}\n"],"names":["_sfc_main","_hoisted_3","_createElementBlock","_mergeProps","_createElementVNode","_openBlock","_hoisted_1","NcHighlight","_createVNode","_withCtx","_hoisted_2","_toDisplayString","_normalizeClass","reference","_createBlock","_resolveDynamicComponent","_hoisted_4","interactiveOptIn","_unref","NcTextField","_hoisted_5","DotsHorizontalIcon","CloseIcon"],"mappings":"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","x_google_ignoreList":[0,2]}
@@ -0,0 +1,12 @@
1
+ import { inject } from "vue";
2
+ const APP_SETTINGS_REGISTRATION_KEY = /* @__PURE__ */ Symbol.for("NcAppSettingsDialog:registration");
3
+ const APP_SETTINGS_LEGACY_DESIGN_KEY = /* @__PURE__ */ Symbol.for("NcAppSettingsDialog:legacy");
4
+ function useAppSettingsDialog() {
5
+ return inject(APP_SETTINGS_REGISTRATION_KEY);
6
+ }
7
+ export {
8
+ APP_SETTINGS_LEGACY_DESIGN_KEY as A,
9
+ APP_SETTINGS_REGISTRATION_KEY as a,
10
+ useAppSettingsDialog as u
11
+ };
12
+ //# sourceMappingURL=useAppSettingsDialog-C73Wx6iQ.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useAppSettingsDialog-DbtEkXa4.mjs","sources":["../../src/components/NcAppSettingsDialog/useAppSettingsDialog.ts"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { InjectionKey, Ref, VNode } from 'vue'\n\nimport { inject } from 'vue'\n\ninterface AppSettingsRegistrationContext {\n\t/**\n\t * Register a new section on the app settings dialog\n\t *\n\t * @param id - The section ID\n\t * @param name - The section name\n\t * @param order - Optional section order in the list\n\t * @param icon - Optional icon component\n\t */\n\tregisterSection(id: string, name: string, order?: number, icon?: VNode[]): void\n\n\t/**\n\t * Unregistered from the app settings dialog to remove it from dialog\n\t *\n\t * @param id - The section ID\n\t */\n\tunregisterSection(id: string): void\n}\n\nexport const APP_SETTINGS_REGISTRATION_KEY: InjectionKey<AppSettingsRegistrationContext> = Symbol.for('NcAppSettingsDialog:registration')\nexport const APP_SETTINGS_LEGACY_DESIGN_KEY: InjectionKey<Ref<boolean>> = Symbol.for('NcAppSettingsDialog:legacy')\n\n/**\n * Get the provided methods from the app settings dialog.\n * This is to be used in the app settings sections.\n */\nexport function useAppSettingsDialog() {\n\treturn inject(APP_SETTINGS_REGISTRATION_KEY)!\n}\n"],"names":[],"mappings":";AA4BO,MAAM,gCAA8E,OAAO,IAAI,kCAAkC;AACjI,MAAM,iCAA6D,OAAO,IAAI,4BAA4B;AAM1G,SAAS,uBAAuB;AACtC,SAAO,OAAO,6BAA6B;AAC5C;"}
1
+ {"version":3,"file":"useAppSettingsDialog-C73Wx6iQ.mjs","sources":["../../src/components/NcAppSettingsDialog/useAppSettingsDialog.ts"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { InjectionKey, Ref, VNode } from 'vue'\n\nimport { inject } from 'vue'\n\ninterface AppSettingsRegistrationContext {\n\t/**\n\t * Register a new section on the app settings dialog\n\t *\n\t * @param id - The section ID\n\t * @param name - The section name\n\t * @param order - Optional section order in the list\n\t * @param icon - Optional icon component\n\t */\n\tregisterSection(id: string, name: string, order?: number, icon?: VNode[]): void\n\n\t/**\n\t * Unregistered from the app settings dialog to remove it from dialog\n\t *\n\t * @param id - The section ID\n\t */\n\tunregisterSection(id: string): void\n}\n\nexport const APP_SETTINGS_REGISTRATION_KEY: InjectionKey<AppSettingsRegistrationContext> = Symbol.for('NcAppSettingsDialog:registration')\nexport const APP_SETTINGS_LEGACY_DESIGN_KEY: InjectionKey<Ref<boolean>> = Symbol.for('NcAppSettingsDialog:legacy')\n\n/**\n * Get the provided methods from the app settings dialog.\n * This is to be used in the app settings sections.\n */\nexport function useAppSettingsDialog() {\n\treturn inject(APP_SETTINGS_REGISTRATION_KEY)!\n}\n"],"names":[],"mappings":";AA4BO,MAAM,gCAA8E,uBAAO,IAAI,kCAAkC;AACjI,MAAM,iCAA6D,uBAAO,IAAI,4BAA4B;AAM1G,SAAS,uBAAuB;AACtC,SAAO,OAAO,6BAA6B;AAC5C;"}
@@ -1,6 +1,6 @@
1
- import { d as mdiCheck, e as mdiContentCopy } from "./mdi-HQ-WBPmL.mjs";
1
+ import { d as mdiCheck, e as mdiContentCopy } from "./mdi-DvQxv1t7.mjs";
2
2
  import { ref, computed, toValue } from "vue";
3
- import { r as register, c as t22, a as t } from "./_l10n-CWKr1fUH.mjs";
3
+ import { r as register, e as t22, a as t } from "./_l10n-CgsPi8nC.mjs";
4
4
  register(t22);
5
5
  /*!
6
6
  * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
@@ -36,4 +36,4 @@ function useCopy(content) {
36
36
  export {
37
37
  useCopy as u
38
38
  };
39
- //# sourceMappingURL=useCopy-pTWmSjcP.mjs.map
39
+ //# sourceMappingURL=useCopy-D3yAxBJi.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useCopy-pTWmSjcP.mjs","sources":["../../src/composables/useCopy.ts"],"sourcesContent":["/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { MaybeRefOrGetter } from 'vue'\n\nimport { mdiCheck, mdiContentCopy } from '@mdi/js'\nimport { computed, ref, toValue } from 'vue'\nimport { t } from '../l10n.ts'\n\nconst DELAY = 2000\n\n/**\n * Copy content to clipboard with copied state\n *\n * @param content - Content to copy\n */\nexport function useCopy(content: MaybeRefOrGetter<string>) {\n\tconst isCopied = ref(false)\n\tconst icon = computed(() => isCopied.value ? mdiCheck : mdiContentCopy)\n\tconst altText = computed(() => isCopied.value ? t('Copied') : t('Copy to clipboard'))\n\n\t/**\n\t * Copy the content to clipboard\n\t */\n\tasync function copy() {\n\t\tif (isCopied.value) {\n\t\t\treturn\n\t\t}\n\n\t\tconst value = toValue(content)\n\t\ttry {\n\t\t\tawait navigator.clipboard.writeText(value)\n\t\t} catch {\n\t\t\t// Fallback for a case when clipboard API is not available or permission denied\n\t\t\tprompt('', value)\n\t\t}\n\n\t\tisCopied.value = true\n\t\tsetTimeout(() => {\n\t\t\tisCopied.value = false\n\t\t}, DELAY)\n\t}\n\n\treturn {\n\t\tisCopied,\n\t\tcopy,\n\t\ticon,\n\t\taltText,\n\t}\n}\n"],"names":[],"mappings":";;;;AAAA;AAAA;AAAA;AAAA;AAWA,MAAM,QAAQ;AAOP,SAAS,QAAQ,SAAmC;AAC1D,QAAM,WAAW,IAAI,KAAK;AAC1B,QAAM,OAAO,SAAS,MAAM,SAAS,QAAQ,WAAW,cAAc;AACtE,QAAM,UAAU,SAAS,MAAM,SAAS,QAAQ,EAAE,QAAQ,IAAI,EAAE,mBAAmB,CAAC;AAKpF,iBAAe,OAAO;AACrB,QAAI,SAAS,OAAO;AACnB;AAAA,IACD;AAEA,UAAM,QAAQ,QAAQ,OAAO;AAC7B,QAAI;AACH,YAAM,UAAU,UAAU,UAAU,KAAK;AAAA,IAC1C,QAAQ;AAEP,aAAO,IAAI,KAAK;AAAA,IACjB;AAEA,aAAS,QAAQ;AACjB,eAAW,MAAM;AAChB,eAAS,QAAQ;AAAA,IAClB,GAAG,KAAK;AAAA,EACT;AAEA,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEF;"}
1
+ {"version":3,"file":"useCopy-D3yAxBJi.mjs","sources":["../../src/composables/useCopy.ts"],"sourcesContent":["/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { MaybeRefOrGetter } from 'vue'\n\nimport { mdiCheck, mdiContentCopy } from '@mdi/js'\nimport { computed, ref, toValue } from 'vue'\nimport { t } from '../l10n.ts'\n\nconst DELAY = 2000\n\n/**\n * Copy content to clipboard with copied state\n *\n * @param content - Content to copy\n */\nexport function useCopy(content: MaybeRefOrGetter<string>) {\n\tconst isCopied = ref(false)\n\tconst icon = computed(() => isCopied.value ? mdiCheck : mdiContentCopy)\n\tconst altText = computed(() => isCopied.value ? t('Copied') : t('Copy to clipboard'))\n\n\t/**\n\t * Copy the content to clipboard\n\t */\n\tasync function copy() {\n\t\tif (isCopied.value) {\n\t\t\treturn\n\t\t}\n\n\t\tconst value = toValue(content)\n\t\ttry {\n\t\t\tawait navigator.clipboard.writeText(value)\n\t\t} catch {\n\t\t\t// Fallback for a case when clipboard API is not available or permission denied\n\t\t\tprompt('', value)\n\t\t}\n\n\t\tisCopied.value = true\n\t\tsetTimeout(() => {\n\t\t\tisCopied.value = false\n\t\t}, DELAY)\n\t}\n\n\treturn {\n\t\tisCopied,\n\t\tcopy,\n\t\ticon,\n\t\taltText,\n\t}\n}\n"],"names":[],"mappings":";;;;AAAA;AAAA;AAAA;AAAA;AAWA,MAAM,QAAQ;AAOP,SAAS,QAAQ,SAAmC;AAC1D,QAAM,WAAW,IAAI,KAAK;AAC1B,QAAM,OAAO,SAAS,MAAM,SAAS,QAAQ,WAAW,cAAc;AACtE,QAAM,UAAU,SAAS,MAAM,SAAS,QAAQ,EAAE,QAAQ,IAAI,EAAE,mBAAmB,CAAC;AAKpF,iBAAe,OAAO;AACrB,QAAI,SAAS,OAAO;AACnB;AAAA,IACD;AAEA,UAAM,QAAQ,QAAQ,OAAO;AAC7B,QAAI;AACH,YAAM,UAAU,UAAU,UAAU,KAAK;AAAA,IAC1C,QAAQ;AAEP,aAAO,IAAI,KAAK;AAAA,IACjB;AAEA,aAAS,QAAQ;AACjB,eAAW,MAAM;AAChB,eAAS,QAAQ;AAAA,IAClB,GAAG,KAAK;AAAA,EACT;AAEA,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEF;"}
@@ -0,0 +1,7 @@
1
+ const NC_ACTIONS_IS_SEMANTIC_MENU = /* @__PURE__ */ Symbol.for("NcActions:isSemanticMenu");
2
+ const NC_ACTIONS_CLOSE_MENU = /* @__PURE__ */ Symbol.for("NcActions:closeMenu");
3
+ export {
4
+ NC_ACTIONS_CLOSE_MENU as N,
5
+ NC_ACTIONS_IS_SEMANTIC_MENU as a
6
+ };
7
+ //# sourceMappingURL=useNcActions-BzPO2c4h.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useNcActions-CiGWxAJE.mjs","sources":["../../src/components/NcActions/useNcActions.ts"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { ComputedRef, InjectionKey } from 'vue'\n\nexport const NC_ACTIONS_IS_SEMANTIC_MENU: InjectionKey<ComputedRef<boolean>> = Symbol.for('NcActions:isSemanticMenu')\nexport const NC_ACTIONS_CLOSE_MENU: InjectionKey<(returnFocus: boolean) => void> = Symbol.for('NcActions:closeMenu')\n\n// TODO: once NcActions migrated from mixins - add composables to created and use NcAction provider/context\n"],"names":[],"mappings":"AAOO,MAAM,8BAAkE,OAAO,IAAI,0BAA0B;AAC7G,MAAM,wBAAsE,OAAO,IAAI,qBAAqB;"}
1
+ {"version":3,"file":"useNcActions-BzPO2c4h.mjs","sources":["../../src/components/NcActions/useNcActions.ts"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { ComputedRef, InjectionKey } from 'vue'\n\nexport const NC_ACTIONS_IS_SEMANTIC_MENU: InjectionKey<ComputedRef<boolean>> = Symbol.for('NcActions:isSemanticMenu')\nexport const NC_ACTIONS_CLOSE_MENU: InjectionKey<(returnFocus: boolean) => void> = Symbol.for('NcActions:closeMenu')\n\n// TODO: once NcActions migrated from mixins - add composables to created and use NcAction provider/context\n"],"names":[],"mappings":"AAOO,MAAM,8BAAkE,uBAAO,IAAI,0BAA0B;AAC7G,MAAM,wBAAsE,uBAAO,IAAI,qBAAqB;"}
@@ -1,5 +1,5 @@
1
1
  import { inject } from "vue";
2
- const NC_FORM_BOX_CONTEXT_KEY = Symbol.for("NcFormBox:context");
2
+ const NC_FORM_BOX_CONTEXT_KEY = /* @__PURE__ */ Symbol.for("NcFormBox:context");
3
3
  function useNcFormBox() {
4
4
  return inject(NC_FORM_BOX_CONTEXT_KEY, {
5
5
  isInFormBox: false,
@@ -10,4 +10,4 @@ export {
10
10
  NC_FORM_BOX_CONTEXT_KEY as N,
11
11
  useNcFormBox as u
12
12
  };
13
- //# sourceMappingURL=useNcFormBox-DA9iwXWY.mjs.map
13
+ //# sourceMappingURL=useNcFormBox-Djlh582y.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useNcFormBox-DA9iwXWY.mjs","sources":["../../src/components/NcFormBox/useNcFormBox.ts"],"sourcesContent":["/*\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { InjectionKey } from 'vue'\n\nimport { inject } from 'vue'\n\nexport const NC_FORM_BOX_CONTEXT_KEY: InjectionKey<{\n\tisInFormBox: false\n\tformBoxItemClass: undefined\n} | {\n\tisInFormBox: true\n\tformBoxItemClass: string\n}> = Symbol.for('NcFormBox:context')\n\n/**\n * Get NcFormBox context with a fallback\n * TODO: make it public?\n */\nexport function useNcFormBox() {\n\treturn inject(NC_FORM_BOX_CONTEXT_KEY, {\n\t\tisInFormBox: false,\n\t\tformBoxItemClass: undefined,\n\t})\n}\n"],"names":[],"mappings":";AASO,MAAM,0BAMR,OAAO,IAAI,mBAAmB;AAM5B,SAAS,eAAe;AAC9B,SAAO,OAAO,yBAAyB;AAAA,IACtC,aAAa;AAAA,IACb,kBAAkB;AAAA,EAAA,CAClB;AACF;"}
1
+ {"version":3,"file":"useNcFormBox-Djlh582y.mjs","sources":["../../src/components/NcFormBox/useNcFormBox.ts"],"sourcesContent":["/*\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { InjectionKey } from 'vue'\n\nimport { inject } from 'vue'\n\nexport const NC_FORM_BOX_CONTEXT_KEY: InjectionKey<{\n\tisInFormBox: false\n\tformBoxItemClass: undefined\n} | {\n\tisInFormBox: true\n\tformBoxItemClass: string\n}> = Symbol.for('NcFormBox:context')\n\n/**\n * Get NcFormBox context with a fallback\n * TODO: make it public?\n */\nexport function useNcFormBox() {\n\treturn inject(NC_FORM_BOX_CONTEXT_KEY, {\n\t\tisInFormBox: false,\n\t\tformBoxItemClass: undefined,\n\t})\n}\n"],"names":[],"mappings":";AASO,MAAM,0BAMR,uBAAO,IAAI,mBAAmB;AAM5B,SAAS,eAAe;AAC9B,SAAO,OAAO,yBAAyB;AAAA,IACtC,aAAa;AAAA,IACb,kBAAkB;AAAA,EAAA,CAClB;AACF;"}
@@ -3,7 +3,7 @@ import { inject } from "vue";
3
3
  * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
4
4
  * SPDX-License-Identifier: AGPL-3.0-or-later
5
5
  */
6
- const INSIDE_RADIO_GROUP_KEY = Symbol.for("insideRadioGroup");
6
+ const INSIDE_RADIO_GROUP_KEY = /* @__PURE__ */ Symbol.for("insideRadioGroup");
7
7
  function useInsideRadioGroup() {
8
8
  return inject(INSIDE_RADIO_GROUP_KEY, void 0);
9
9
  }
@@ -11,4 +11,4 @@ export {
11
11
  INSIDE_RADIO_GROUP_KEY as I,
12
12
  useInsideRadioGroup as u
13
13
  };
14
- //# sourceMappingURL=useNcRadioGroup-DaZbEKbf.mjs.map
14
+ //# sourceMappingURL=useNcRadioGroup-D6llQmAl.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useNcRadioGroup-DaZbEKbf.mjs","sources":["../../src/components/NcRadioGroup/useNcRadioGroup.ts"],"sourcesContent":["/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { ComputedRef, InjectionKey } from 'vue'\n\nimport { inject } from 'vue'\n\nexport const INSIDE_RADIO_GROUP_KEY: InjectionKey<ComputedRef<{ modelValue: string, onUpdate: (value: string) => void, register: (isButton: boolean) => void }>> = Symbol.for('insideRadioGroup')\n\n/**\n * To check if inside a radio group and if yes inject the current modelValue as well as the onUpdate method.\n */\nexport function useInsideRadioGroup() {\n\treturn inject(INSIDE_RADIO_GROUP_KEY, undefined)\n}\n"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AASO,MAAM,yBAAsJ,OAAO,IAAI,kBAAkB;AAKzL,SAAS,sBAAsB;AACrC,SAAO,OAAO,wBAAwB,MAAS;AAChD;"}
1
+ {"version":3,"file":"useNcRadioGroup-D6llQmAl.mjs","sources":["../../src/components/NcRadioGroup/useNcRadioGroup.ts"],"sourcesContent":["/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { ComputedRef, InjectionKey } from 'vue'\n\nimport { inject } from 'vue'\n\nexport const INSIDE_RADIO_GROUP_KEY: InjectionKey<ComputedRef<{ modelValue: string, onUpdate: (value: string) => void, register: (isButton: boolean) => void }>> = Symbol.for('insideRadioGroup')\n\n/**\n * To check if inside a radio group and if yes inject the current modelValue as well as the onUpdate method.\n */\nexport function useInsideRadioGroup() {\n\treturn inject(INSIDE_RADIO_GROUP_KEY, undefined)\n}\n"],"names":[],"mappings":";AAAA;AAAA;AAAA;AAAA;AASO,MAAM,yBAAsJ,uBAAO,IAAI,kBAAkB;AAKzL,SAAS,sBAAsB;AACrC,SAAO,OAAO,wBAAwB,MAAS;AAChD;"}
@@ -1,4 +1,4 @@
1
- import { N } from "../../chunks/NcActionButton-DCWUru2b.mjs";
1
+ import { N } from "../../chunks/NcActionButton-BHXE4UKQ.mjs";
2
2
  export {
3
3
  N as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { N } from "../../chunks/NcActionButtonGroup-QgGuZcPA.mjs";
1
+ import { N } from "../../chunks/NcActionButtonGroup-B2MGnwK_.mjs";
2
2
  export {
3
3
  N as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { N } from "../../chunks/NcActionCaption-Fumfjzxj.mjs";
1
+ import { N } from "../../chunks/NcActionCaption-Cgd3J8jw.mjs";
2
2
  export {
3
3
  N as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { N } from "../../chunks/NcActionCheckbox-CwrO3g3I.mjs";
1
+ import { N } from "../../chunks/NcActionCheckbox-BTHrh-Mu.mjs";
2
2
  export {
3
3
  N as default
4
4
  };