@nextcloud/vue 9.0.0-alpha.6 → 9.0.0-alpha.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +155 -18
- package/README.md +62 -63
- package/dist/assets/{NcActionButton-BLoWchS5.css → NcActionButton-CVjVxm7I.css} +19 -16
- package/dist/assets/{NcActionCaption-B7FZTc3Y.css → NcActionCaption-BNDtcWJ7.css} +4 -4
- package/dist/assets/{NcActionCheckbox-CoQEhC0c.css → NcActionCheckbox-CnTyr-NN.css} +18 -17
- package/dist/assets/{NcActionInput-BEvIPQv2.css → NcActionInput-D19t1QsM.css} +71 -65
- package/dist/assets/{NcActionLink-Dxv-rmRR.css → NcActionLink-DA3ebr8W.css} +5 -2
- package/dist/assets/{NcActionRadio-CsMcYeMT.css → NcActionRadio-C7Kqlz6k.css} +19 -18
- package/dist/assets/{NcActionRouter-CflTO8Z-.css → NcActionRouter-BtJqkgqu.css} +5 -2
- package/dist/assets/{NcActionText-CV2sRLti.css → NcActionText-FHEPUweO.css} +5 -2
- package/dist/assets/{NcActionTextEditable-Nufxk13g.css → NcActionTextEditable-DzNRmwkV.css} +70 -64
- package/dist/assets/{NcActions-P5DOkDHr.css → NcActions-BepWTc-7.css} +12 -15
- package/dist/assets/{NcAppContent-CyHAUPNL.css → NcAppContent-BZ3rplmb.css} +23 -23
- package/dist/assets/{NcAppNavigation-B21SNH2o.css → NcAppNavigation-_K9H-MtG.css} +12 -12
- package/dist/assets/{NcAppNavigationCaption-Ddf7LHGR.css → NcAppNavigationCaption-B6mZd0E3.css} +9 -8
- package/dist/assets/{NcAppNavigationItem-OPiz-90P.css → NcAppNavigationItem-PKTHyQue.css} +16 -9
- package/dist/assets/{NcAppNavigationNewItem-BoSjpr5m.css → NcAppNavigationNewItem-rCrG0Uuo.css} +44 -37
- package/dist/assets/NcAppNavigationSettings-BDc6Mtek.css +29 -0
- package/dist/assets/{NcAppSidebar-DJR5EHRN.css → NcAppSidebar-g99AGRiQ.css} +43 -43
- package/dist/assets/{NcAvatar-0pU8ivmq.css → NcAvatar-Bg20-FW4.css} +25 -25
- package/dist/assets/NcBlurHash-7aGtE-_T.css +8 -0
- package/dist/assets/{NcButton-DoYn-HfJ.css → NcButton-C50FLvfa.css} +47 -47
- package/dist/assets/{NcCheckboxRadioSwitch-CG-8Isv_.css → NcCheckboxRadioSwitch-jfJIoM4m.css} +41 -41
- package/dist/assets/{NcColorPicker-B4Vqq3HN.css → NcColorPicker-3h8DrL_S.css} +28 -30
- package/dist/assets/{NcDateTimePicker-D67l0SAR.css → NcDateTimePicker-CRb2xZzf.css} +70 -17
- package/dist/assets/NcDateTimePickerNative-pbWtBuzt.css +60 -0
- package/dist/assets/{NcDialog-DG8bAh01.css → NcDialog-DL7A_udP.css} +15 -15
- package/dist/assets/{NcEmojiPicker-BDp_Jc8K.css → NcEmojiPicker-Bfk2pnZE.css} +90 -68
- package/dist/assets/{NcHeaderButton-8c2zDKtV.css → NcHeaderButton-cVjCMSVn.css} +8 -7
- package/dist/assets/{NcHeaderMenu-CDlSXB2d.css → NcHeaderMenu-QJK2rMK3.css} +12 -11
- package/dist/assets/{NcMentionBubble-C6t8od-_.css → NcMentionBubble-BL05HUeF.css} +12 -13
- package/dist/assets/{NcPasswordField-By-kPRJC.css → NcPasswordField-Bl9fhgy-.css} +2 -2
- package/dist/assets/{NcPopover-BGWT8K0v.css → NcPopover-ChETNAVH.css} +16 -5
- package/dist/assets/{NcRelatedResourcesPanel-CrarpPeQ.css → NcRelatedResourcesPanel-Chjd8iT7.css} +14 -14
- package/dist/assets/{NcRichContenteditable-heb9EQV3.css → NcRichContenteditable-BwHgQWPX.css} +41 -39
- package/dist/assets/NcRichText-fo4QE8--.css +326 -0
- package/dist/assets/{NcUserBubble-DE3IWeZN.css → NcUserBubble-tSs2XTDQ.css} +11 -11
- package/dist/assets/{index-BHBrLd2w.css → index-BRaTLqzR.css} +61 -61
- package/dist/assets/{referencePickerModal-CZYRGXDd.css → referencePickerModal-Cy43S4js.css} +46 -46
- package/dist/chunks/{AlertCircleOutline-DoHidQlr.mjs → AlertCircleOutline-DVzpKQVu.mjs} +1 -1
- package/dist/chunks/{AlertCircleOutline-DoHidQlr.mjs.map → AlertCircleOutline-DVzpKQVu.mjs.map} +1 -1
- package/dist/chunks/{ArrowLeft-DCZ3CkUw.mjs → ArrowLeft-CanHG70H.mjs} +1 -1
- package/dist/chunks/{ArrowLeft-DCZ3CkUw.mjs.map → ArrowLeft-CanHG70H.mjs.map} +1 -1
- package/dist/chunks/{ArrowRight-CCodNfTT.mjs → ArrowRight-DQT24Cb-.mjs} +1 -1
- package/dist/chunks/{ArrowRight-CCodNfTT.mjs.map → ArrowRight-DQT24Cb-.mjs.map} +1 -1
- package/dist/chunks/{Check-DDuGOKMw.mjs → Check-5i4xKnkl.mjs} +1 -1
- package/dist/chunks/{Check-DDuGOKMw.mjs.map → Check-5i4xKnkl.mjs.map} +1 -1
- package/dist/chunks/{ChevronDown-C6gc637b.mjs → ChevronDown-FiGpp0KT.mjs} +1 -1
- package/dist/chunks/{ChevronDown-C6gc637b.mjs.map → ChevronDown-FiGpp0KT.mjs.map} +1 -1
- package/dist/chunks/{ChevronLeft-uQipmOWv.mjs → ChevronLeft-FfC-tiIS.mjs} +1 -1
- package/dist/chunks/{ChevronLeft-uQipmOWv.mjs.map → ChevronLeft-FfC-tiIS.mjs.map} +1 -1
- package/dist/chunks/{ChevronRight-D4KvRLyO.mjs → ChevronRight-LvtA5_hq.mjs} +1 -1
- package/dist/chunks/{ChevronRight-D4KvRLyO.mjs.map → ChevronRight-LvtA5_hq.mjs.map} +1 -1
- package/dist/chunks/{ChevronUp-ChH8oB7p.mjs → ChevronUp-DPXFp1ss.mjs} +1 -1
- package/dist/chunks/{ChevronUp-ChH8oB7p.mjs.map → ChevronUp-DPXFp1ss.mjs.map} +1 -1
- package/dist/chunks/{Close-9bmgDVZE.mjs → Close-idsVwGrC.mjs} +1 -1
- package/dist/chunks/{Close-9bmgDVZE.mjs.map → Close-idsVwGrC.mjs.map} +1 -1
- package/dist/chunks/{DotsHorizontal-bCAjz9wZ.mjs → DotsHorizontal-AMVAlTNH.mjs} +1 -1
- package/dist/chunks/{DotsHorizontal-bCAjz9wZ.mjs.map → DotsHorizontal-AMVAlTNH.mjs.map} +1 -1
- package/dist/chunks/{GenColors-Cw7N7vRg.mjs → GenColors-G1ZRJcz5.mjs} +1 -1
- package/dist/chunks/{GenColors-Cw7N7vRg.mjs.map → GenColors-G1ZRJcz5.mjs.map} +1 -1
- package/dist/chunks/GenRandomId-CMooMQt0.mjs.map +1 -1
- package/dist/chunks/{NcActionButton-B3JQywgv.mjs → NcActionButton-DBFJTCO5.mjs} +10 -10
- package/dist/chunks/{NcActionButton-B3JQywgv.mjs.map → NcActionButton-DBFJTCO5.mjs.map} +1 -1
- package/dist/chunks/{NcActionButtonGroup-DtHcJpaH.mjs → NcActionButtonGroup-nwHeJeV7.mjs} +3 -3
- package/dist/chunks/{NcActionButtonGroup-DtHcJpaH.mjs.map → NcActionButtonGroup-nwHeJeV7.mjs.map} +1 -1
- package/dist/chunks/{NcActionCaption-BeVuTBKE.mjs → NcActionCaption-DmOKI_Kc.mjs} +3 -3
- package/dist/chunks/{NcActionCaption-BeVuTBKE.mjs.map → NcActionCaption-DmOKI_Kc.mjs.map} +1 -1
- package/dist/chunks/{NcActionCheckbox-DdLcVat_.mjs → NcActionCheckbox-yPCmA5vr.mjs} +3 -3
- package/dist/chunks/{NcActionCheckbox-DdLcVat_.mjs.map → NcActionCheckbox-yPCmA5vr.mjs.map} +1 -1
- package/dist/chunks/{NcActionInput-CxPmTwTo.mjs → NcActionInput-DTzVHmHn.mjs} +9 -9
- package/dist/chunks/{NcActionInput-CxPmTwTo.mjs.map → NcActionInput-DTzVHmHn.mjs.map} +1 -1
- package/dist/chunks/{NcActionLink-9TfevQgn.mjs → NcActionLink-CG3cKif-.mjs} +2 -2
- package/dist/chunks/{NcActionLink-9TfevQgn.mjs.map → NcActionLink-CG3cKif-.mjs.map} +1 -1
- package/dist/chunks/{NcActionRadio-CV0AtyQD.mjs → NcActionRadio-BWPi0DII.mjs} +20 -14
- package/dist/chunks/NcActionRadio-BWPi0DII.mjs.map +1 -0
- package/dist/chunks/{NcActionRouter-RKft3XO3.mjs → NcActionRouter-C7VSuJLq.mjs} +2 -2
- package/dist/chunks/{NcActionRouter-RKft3XO3.mjs.map → NcActionRouter-C7VSuJLq.mjs.map} +1 -1
- package/dist/chunks/{NcActionSeparator-DKFXmIJ5.mjs → NcActionSeparator-Doekl1NX.mjs} +2 -2
- package/dist/chunks/{NcActionSeparator-DKFXmIJ5.mjs.map → NcActionSeparator-Doekl1NX.mjs.map} +1 -1
- package/dist/chunks/{NcActionText-ChktUmp9.mjs → NcActionText-ByD1mFXe.mjs} +2 -2
- package/dist/chunks/{NcActionText-ChktUmp9.mjs.map → NcActionText-ByD1mFXe.mjs.map} +1 -1
- package/dist/chunks/{NcActionTextEditable-D3Iix8Je.mjs → NcActionTextEditable-DLKA6lfe.mjs} +20 -5
- package/dist/chunks/NcActionTextEditable-DLKA6lfe.mjs.map +1 -0
- package/dist/chunks/{NcActions-BJ703bdY.mjs → NcActions-DxTtucKk.mjs} +14 -61
- package/dist/chunks/NcActions-DxTtucKk.mjs.map +1 -0
- package/dist/chunks/{NcAppContent-DcqJmTNj.mjs → NcAppContent-Cu9zhNK3.mjs} +20 -19
- package/dist/chunks/NcAppContent-Cu9zhNK3.mjs.map +1 -0
- package/dist/chunks/{NcAppContentDetails-Ch6NJvAl.mjs → NcAppContentDetails-DsEEBJ0U.mjs} +1 -1
- package/dist/chunks/{NcAppContentDetails-Ch6NJvAl.mjs.map → NcAppContentDetails-DsEEBJ0U.mjs.map} +1 -1
- package/dist/chunks/{NcAppContentList-DGwk3AvB.mjs → NcAppContentList-DnLY_sWw.mjs} +1 -1
- package/dist/chunks/{NcAppContentList-DGwk3AvB.mjs.map → NcAppContentList-DnLY_sWw.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigation-DKl5GKDr.mjs → NcAppNavigation-BxUvXgeG.mjs} +7 -7
- package/dist/chunks/{NcAppNavigation-DKl5GKDr.mjs.map → NcAppNavigation-BxUvXgeG.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationCaption-yvL3fHpB.mjs → NcAppNavigationCaption-S_2Jmwqr.mjs} +4 -4
- package/dist/chunks/{NcAppNavigationCaption-yvL3fHpB.mjs.map → NcAppNavigationCaption-S_2Jmwqr.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationIconBullet-DXwKXzN2.mjs → NcAppNavigationIconBullet-B1kc4u65.mjs} +2 -2
- package/dist/chunks/{NcAppNavigationIconBullet-DXwKXzN2.mjs.map → NcAppNavigationIconBullet-B1kc4u65.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationItem-Ba6kwsU9.mjs → NcAppNavigationItem-C7bIZuo2.mjs} +11 -11
- package/dist/chunks/NcAppNavigationItem-C7bIZuo2.mjs.map +1 -0
- package/dist/chunks/{NcAppNavigationList-HRNlIV27.mjs → NcAppNavigationList-DX_Yo23V.mjs} +2 -2
- package/dist/chunks/{NcAppNavigationList-HRNlIV27.mjs.map → NcAppNavigationList-DX_Yo23V.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationNew-D2aD0z-u.mjs → NcAppNavigationNew-BO-Llutk.mjs} +3 -3
- package/dist/chunks/{NcAppNavigationNew-D2aD0z-u.mjs.map → NcAppNavigationNew-BO-Llutk.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationNewItem-BPYFl_Xy.mjs → NcAppNavigationNewItem-D7CYmmOm.mjs} +5 -5
- package/dist/chunks/{NcAppNavigationNewItem-BPYFl_Xy.mjs.map → NcAppNavigationNewItem-D7CYmmOm.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationSearch-pTeRzg7y.mjs → NcAppNavigationSearch-DLbzvkkq.mjs} +5 -5
- package/dist/chunks/{NcAppNavigationSearch-pTeRzg7y.mjs.map → NcAppNavigationSearch-DLbzvkkq.mjs.map} +1 -1
- package/dist/chunks/NcAppNavigationSettings-vM8ajNNK.mjs +131 -0
- package/dist/chunks/NcAppNavigationSettings-vM8ajNNK.mjs.map +1 -0
- package/dist/chunks/{NcAppNavigationSpacer-BQFYpMbq.mjs → NcAppNavigationSpacer-CzBLuQL8.mjs} +2 -2
- package/dist/chunks/{NcAppNavigationSpacer-BQFYpMbq.mjs.map → NcAppNavigationSpacer-CzBLuQL8.mjs.map} +1 -1
- package/dist/chunks/{NcAppNavigationToggle-CEun9mHr.mjs → NcAppNavigationToggle-DBtf139E.mjs} +4 -4
- package/dist/chunks/{NcAppNavigationToggle-CEun9mHr.mjs.map → NcAppNavigationToggle-DBtf139E.mjs.map} +1 -1
- package/dist/chunks/{NcAppSettingsDialog-CQ1KFqAh.mjs → NcAppSettingsDialog-CdFUuydh.mjs} +4 -4
- package/dist/chunks/{NcAppSettingsDialog-CQ1KFqAh.mjs.map → NcAppSettingsDialog-CdFUuydh.mjs.map} +1 -1
- package/dist/chunks/{NcAppSettingsSection-BzqBBgS2.mjs → NcAppSettingsSection-CssmXyZ0.mjs} +2 -2
- package/dist/chunks/{NcAppSettingsSection-BzqBBgS2.mjs.map → NcAppSettingsSection-CssmXyZ0.mjs.map} +1 -1
- package/dist/chunks/{NcAppSidebar-C0VSug_j.mjs → NcAppSidebar-Dav-iGv2.mjs} +16 -16
- package/dist/chunks/{NcAppSidebar-C0VSug_j.mjs.map → NcAppSidebar-Dav-iGv2.mjs.map} +1 -1
- package/dist/chunks/{NcAppSidebarTab-zBqyKIgn.mjs → NcAppSidebarTab-DG51ajic.mjs} +2 -2
- package/dist/chunks/{NcAppSidebarTab-zBqyKIgn.mjs.map → NcAppSidebarTab-DG51ajic.mjs.map} +1 -1
- package/dist/chunks/{NcAvatar-CB2n3G0J.mjs → NcAvatar-A1YnlIoN.mjs} +16 -19
- package/dist/chunks/NcAvatar-A1YnlIoN.mjs.map +1 -0
- package/dist/chunks/NcBlurHash-BiFktE2N.mjs +98 -0
- package/dist/chunks/NcBlurHash-BiFktE2N.mjs.map +1 -0
- package/dist/chunks/{NcBreadcrumb-ChOkGtT6.mjs → NcBreadcrumb-D5cRcQg5.mjs} +5 -5
- package/dist/chunks/{NcBreadcrumb-ChOkGtT6.mjs.map → NcBreadcrumb-D5cRcQg5.mjs.map} +1 -1
- package/dist/chunks/{NcBreadcrumbs-CcWv0nYL.mjs → NcBreadcrumbs-CnWT9rE5.mjs} +9 -9
- package/dist/chunks/{NcBreadcrumbs-CcWv0nYL.mjs.map → NcBreadcrumbs-CnWT9rE5.mjs.map} +1 -1
- package/dist/chunks/{NcButton-C3eisBbK.mjs → NcButton-QmfEsvXC.mjs} +3 -5
- package/dist/chunks/NcButton-QmfEsvXC.mjs.map +1 -0
- package/dist/chunks/{NcCheckboxRadioSwitch-Zndby-mL.mjs → NcCheckboxRadioSwitch-Ctdu7_UC.mjs} +22 -31
- package/dist/chunks/NcCheckboxRadioSwitch-Ctdu7_UC.mjs.map +1 -0
- package/dist/chunks/{NcChip-DxejjHGT.mjs → NcChip-BnD-EmBn.mjs} +6 -6
- package/dist/chunks/{NcChip-DxejjHGT.mjs.map → NcChip-BnD-EmBn.mjs.map} +1 -1
- package/dist/chunks/{NcCollectionList-DckB8BUh.mjs → NcCollectionList-9YfN6xAi.mjs} +7 -7
- package/dist/chunks/{NcCollectionList-DckB8BUh.mjs.map → NcCollectionList-9YfN6xAi.mjs.map} +1 -1
- package/dist/chunks/{NcColorPicker-Bh4f-X_s.mjs → NcColorPicker-DQqAv2wB.mjs} +10 -10
- package/dist/chunks/NcColorPicker-DQqAv2wB.mjs.map +1 -0
- package/dist/chunks/{NcContent-CfyPkDba.mjs → NcContent-CsDFFKvH.mjs} +5 -5
- package/dist/chunks/{NcContent-CfyPkDba.mjs.map → NcContent-CsDFFKvH.mjs.map} +1 -1
- package/dist/chunks/{NcCounterBubble-DIOmLH9G.mjs → NcCounterBubble-6B_JNUUS.mjs} +2 -2
- package/dist/chunks/{NcCounterBubble-DIOmLH9G.mjs.map → NcCounterBubble-6B_JNUUS.mjs.map} +1 -1
- package/dist/chunks/{NcDashboardWidget-DC7EvOH5.mjs → NcDashboardWidget-ROT13m5A.mjs} +7 -7
- package/dist/chunks/{NcDashboardWidget-DC7EvOH5.mjs.map → NcDashboardWidget-ROT13m5A.mjs.map} +1 -1
- package/dist/chunks/{NcDashboardWidgetItem-Bmm83kUk.mjs → NcDashboardWidgetItem-DoYOYxck.mjs} +5 -5
- package/dist/chunks/{NcDashboardWidgetItem-Bmm83kUk.mjs.map → NcDashboardWidgetItem-DoYOYxck.mjs.map} +1 -1
- package/dist/chunks/NcDateTime-D3snW0sN.mjs +65 -0
- package/dist/chunks/NcDateTime-D3snW0sN.mjs.map +1 -0
- package/dist/chunks/{NcDateTimePicker-BMkjvfOV.mjs → NcDateTimePicker-DUPn2UCM.mjs} +7 -7
- package/dist/chunks/{NcDateTimePicker-BMkjvfOV.mjs.map → NcDateTimePicker-DUPn2UCM.mjs.map} +1 -1
- package/dist/chunks/{NcDateTimePickerNative-I2YJ1mqx.mjs → NcDateTimePickerNative-Dbc6pBXk.mjs} +11 -9
- package/dist/chunks/NcDateTimePickerNative-Dbc6pBXk.mjs.map +1 -0
- package/dist/chunks/{NcDialog-bRHxABY1.mjs → NcDialog-B81mllwn.mjs} +21 -12
- package/dist/chunks/NcDialog-B81mllwn.mjs.map +1 -0
- package/dist/chunks/{NcDialogButton.vue_vue_type_script_setup_true_lang-CBKNl2vE.mjs → NcDialogButton.vue_vue_type_script_setup_true_lang-DgWqkSL7.mjs} +12 -9
- package/dist/chunks/{NcDialogButton.vue_vue_type_script_setup_true_lang-CBKNl2vE.mjs.map → NcDialogButton.vue_vue_type_script_setup_true_lang-DgWqkSL7.mjs.map} +1 -1
- package/dist/chunks/{NcEllipsisedOption-BaL7DZ1K.mjs → NcEllipsisedOption-D4OggsNq.mjs} +2 -2
- package/dist/chunks/{NcEllipsisedOption-BaL7DZ1K.mjs.map → NcEllipsisedOption-D4OggsNq.mjs.map} +1 -1
- package/dist/chunks/{NcEmojiPicker-DIv_bq9B.mjs → NcEmojiPicker-DKGBXunS.mjs} +67 -51
- package/dist/chunks/NcEmojiPicker-DKGBXunS.mjs.map +1 -0
- package/dist/chunks/{NcEmptyContent-BoGB3vFC.mjs → NcEmptyContent-D-wBvEi4.mjs} +2 -2
- package/dist/chunks/{NcEmptyContent-BoGB3vFC.mjs.map → NcEmptyContent-D-wBvEi4.mjs.map} +1 -1
- package/dist/chunks/{NcGuestContent-DVqg5Bq4.mjs → NcGuestContent-iQpV7mLC.mjs} +2 -2
- package/dist/chunks/{NcGuestContent-DVqg5Bq4.mjs.map → NcGuestContent-iQpV7mLC.mjs.map} +1 -1
- package/dist/chunks/{NcHeaderButton-DagheXHN.mjs → NcHeaderButton-Cq62USyt.mjs} +4 -4
- package/dist/chunks/NcHeaderButton-Cq62USyt.mjs.map +1 -0
- package/dist/chunks/NcHeaderMenu-BRiroRYT.mjs +142 -0
- package/dist/chunks/NcHeaderMenu-BRiroRYT.mjs.map +1 -0
- package/dist/chunks/NcHighlight-BHtRIzqk.mjs.map +1 -1
- package/dist/chunks/{NcIconSvgWrapper-DbL6OP85.mjs → NcIconSvgWrapper-BYTrkA66.mjs} +2 -2
- package/dist/chunks/{NcIconSvgWrapper-DbL6OP85.mjs.map → NcIconSvgWrapper-BYTrkA66.mjs.map} +1 -1
- package/dist/chunks/{NcInputConfirmCancel-CHdSVEcQ.mjs → NcInputConfirmCancel-xnrPAGac.mjs} +6 -6
- package/dist/chunks/{NcInputConfirmCancel-CHdSVEcQ.mjs.map → NcInputConfirmCancel-xnrPAGac.mjs.map} +1 -1
- package/dist/chunks/{NcInputField-BMtTTtl5.mjs → NcInputField-CzC820tG.mjs} +5 -5
- package/dist/chunks/{NcInputField-BMtTTtl5.mjs.map → NcInputField-CzC820tG.mjs.map} +1 -1
- package/dist/chunks/{NcListItem-D04-5zRU.mjs → NcListItem-DFLsabmR.mjs} +4 -4
- package/dist/chunks/{NcListItem-D04-5zRU.mjs.map → NcListItem-DFLsabmR.mjs.map} +1 -1
- package/dist/chunks/{NcListItemIcon-DcBo1GLm.mjs → NcListItemIcon-BK9GBjoD.mjs} +5 -7
- package/dist/chunks/{NcListItemIcon-DcBo1GLm.mjs.map → NcListItemIcon-BK9GBjoD.mjs.map} +1 -1
- package/dist/chunks/{NcLoadingIcon-DREmHXr2.mjs → NcLoadingIcon-CsMn1bFR.mjs} +2 -2
- package/dist/chunks/{NcLoadingIcon-DREmHXr2.mjs.map → NcLoadingIcon-CsMn1bFR.mjs.map} +1 -1
- package/dist/chunks/{getAvatarUrl-DxvUjKMi.mjs → NcMentionBubble.vue_vue_type_style_index_0_scoped_6c8d0da9_lang-DYJMHclV.mjs} +1 -0
- package/dist/chunks/NcMentionBubble.vue_vue_type_style_index_0_scoped_6c8d0da9_lang-DYJMHclV.mjs.map +1 -0
- package/dist/chunks/{NcNoteCard-BwQvZ3pf.mjs → NcNoteCard-XoSOund1.mjs} +2 -2
- package/dist/chunks/{NcNoteCard-BwQvZ3pf.mjs.map → NcNoteCard-XoSOund1.mjs.map} +1 -1
- package/dist/chunks/{NcPasswordField-OK30bZq8.mjs → NcPasswordField-BLHAdm-k.mjs} +6 -7
- package/dist/chunks/NcPasswordField-BLHAdm-k.mjs.map +1 -0
- package/dist/chunks/{NcPopover-Cmspgso4.mjs → NcPopover-D4D97Y3j.mjs} +11 -12
- package/dist/chunks/NcPopover-D4D97Y3j.mjs.map +1 -0
- package/dist/chunks/{NcProgressBar-C2r8oqsv.mjs → NcProgressBar-Bx8bMkd4.mjs} +2 -2
- package/dist/chunks/{NcProgressBar-C2r8oqsv.mjs.map → NcProgressBar-Bx8bMkd4.mjs.map} +1 -1
- package/dist/chunks/{NcRelatedResourcesPanel-DvA5dHwS.mjs → NcRelatedResourcesPanel-DsuNT9hM.mjs} +13 -8
- package/dist/chunks/NcRelatedResourcesPanel-DsuNT9hM.mjs.map +1 -0
- package/dist/chunks/{NcRichContenteditable-s2Cz698X.mjs → NcRichContenteditable-BkSojqgy.mjs} +27 -27
- package/dist/chunks/NcRichContenteditable-BkSojqgy.mjs.map +1 -0
- package/dist/chunks/{NcRichText-DeQGaF-c.mjs → NcRichText-Cn583bql.mjs} +29 -60
- package/dist/chunks/NcRichText-Cn583bql.mjs.map +1 -0
- package/dist/chunks/{NcSavingIndicatorIcon-BiGAtlKQ.mjs → NcSavingIndicatorIcon-icWy8J5x.mjs} +1 -1
- package/dist/chunks/{NcSavingIndicatorIcon-BiGAtlKQ.mjs.map → NcSavingIndicatorIcon-icWy8J5x.mjs.map} +1 -1
- package/dist/chunks/{NcSelect-J_CQazCj.mjs → NcSelect-B61ik8an.mjs} +10 -10
- package/dist/chunks/{NcSelect-J_CQazCj.mjs.map → NcSelect-B61ik8an.mjs.map} +1 -1
- package/dist/chunks/{NcSelectTags-BZ22veGg.mjs → NcSelectTags-Dx3nG6jx.mjs} +4 -4
- package/dist/chunks/{NcSelectTags-BZ22veGg.mjs.map → NcSelectTags-Dx3nG6jx.mjs.map} +1 -1
- package/dist/chunks/{NcSettingsInputText-Bjw2RqKu.mjs → NcSettingsInputText-B5FrLCL9.mjs} +3 -3
- package/dist/chunks/{NcSettingsInputText-Bjw2RqKu.mjs.map → NcSettingsInputText-B5FrLCL9.mjs.map} +1 -1
- package/dist/chunks/{NcSettingsSection-MATJGEoF.mjs → NcSettingsSection-CAdn6gS9.mjs} +3 -3
- package/dist/chunks/{NcSettingsSection-MATJGEoF.mjs.map → NcSettingsSection-CAdn6gS9.mjs.map} +1 -1
- package/dist/chunks/{NcSettingsSelectGroup-iglfU6Rr.mjs → NcSettingsSelectGroup-CKIbxms2.mjs} +4 -4
- package/dist/chunks/{NcSettingsSelectGroup-iglfU6Rr.mjs.map → NcSettingsSelectGroup-CKIbxms2.mjs.map} +1 -1
- package/dist/chunks/{NcTextArea-D_kk5GuX.mjs → NcTextArea-C-PMlEbl.mjs} +4 -4
- package/dist/chunks/{NcTextArea-D_kk5GuX.mjs.map → NcTextArea-C-PMlEbl.mjs.map} +1 -1
- package/dist/chunks/{NcTextField-XbpY0pop.mjs → NcTextField-CNV42Zey.mjs} +5 -5
- package/dist/chunks/NcTextField-CNV42Zey.mjs.map +1 -0
- package/dist/chunks/{NcTimezonePicker-CMpvPeCI.mjs → NcTimezonePicker-tZmX1Qp4.mjs} +3 -3
- package/dist/chunks/{NcTimezonePicker-CMpvPeCI.mjs.map → NcTimezonePicker-tZmX1Qp4.mjs.map} +1 -1
- package/dist/chunks/{NcUserBubble-DJFSxKtO.mjs → NcUserBubble-MfDc1YR2.mjs} +6 -6
- package/dist/chunks/{NcUserBubble-DJFSxKtO.mjs.map → NcUserBubble-MfDc1YR2.mjs.map} +1 -1
- package/dist/chunks/{NcUserStatusIcon-DjoGxkTB.mjs → NcUserStatusIcon-vtnkNASH.mjs} +4 -3
- package/dist/chunks/{NcUserStatusIcon-DjoGxkTB.mjs.map → NcUserStatusIcon-vtnkNASH.mjs.map} +1 -1
- package/dist/chunks/{ScopeComponent-77f9B57X.mjs → ScopeComponent-DgRMJomt.mjs} +1 -1
- package/dist/chunks/{ScopeComponent-77f9B57X.mjs.map → ScopeComponent-DgRMJomt.mjs.map} +1 -1
- package/dist/chunks/_l10n-BEP_UzXI.mjs +133 -0
- package/dist/chunks/_l10n-BEP_UzXI.mjs.map +1 -0
- package/dist/chunks/actionGlobal-BZFdtdJL.mjs.map +1 -1
- package/dist/chunks/actionText-aI0owku1.mjs.map +1 -1
- package/dist/chunks/autolink-CKPk5rzg.mjs.map +1 -1
- package/dist/chunks/emoji-BY_D0V5K.mjs.map +1 -1
- package/dist/chunks/focusTrap-DmkaYJTC.mjs +31 -0
- package/dist/chunks/focusTrap-DmkaYJTC.mjs.map +1 -0
- package/dist/chunks/{index-CrKUsc__.mjs → index-BF8joS9W.mjs} +2 -2
- package/dist/chunks/{index-CrKUsc__.mjs.map → index-BF8joS9W.mjs.map} +1 -1
- package/dist/chunks/{index-CtB0UiwH.mjs → index-wLgC9ACl.mjs} +4 -7
- package/dist/chunks/index-wLgC9ACl.mjs.map +1 -0
- package/dist/chunks/logger-D3RVzcfQ.mjs +5 -0
- package/dist/chunks/logger-D3RVzcfQ.mjs.map +1 -0
- package/dist/chunks/{referencePickerModal-DPmXigHR.mjs → referencePickerModal-CzI44bxD.mjs} +16 -16
- package/dist/chunks/referencePickerModal-CzI44bxD.mjs.map +1 -0
- package/dist/chunks/rtl-v0UOPAM7.mjs +5 -0
- package/dist/chunks/rtl-v0UOPAM7.mjs.map +1 -0
- package/dist/chunks/{NcDateTime-BsCT_tyH.mjs → useFormatDateTime-Cvc8YJRE.mjs} +2 -63
- package/dist/chunks/useFormatDateTime-Cvc8YJRE.mjs.map +1 -0
- package/dist/chunks/useTrapStackControl-b3A_383w.mjs +22 -0
- package/dist/chunks/useTrapStackControl-b3A_383w.mjs.map +1 -0
- package/dist/chunks/{usernameToColor-CgZYBI2J.mjs → usernameToColor-B_Q_sS3j.mjs} +1 -1
- package/dist/chunks/{usernameToColor-CgZYBI2J.mjs.map → usernameToColor-B_Q_sS3j.mjs.map} +1 -1
- package/dist/components/NcActionButton/NcActionButton.vue.d.ts +1 -1
- package/dist/components/NcActionButton/index.mjs +1 -1
- package/dist/components/NcActionButtonGroup/index.mjs +1 -1
- package/dist/components/NcActionCaption/index.mjs +1 -1
- package/dist/components/NcActionCheckbox/index.mjs +1 -1
- package/dist/components/NcActionInput/index.mjs +1 -1
- package/dist/components/NcActionLink/index.mjs +1 -1
- package/dist/components/NcActionRadio/NcActionRadio.vue.d.ts +10 -8
- package/dist/components/NcActionRadio/index.mjs +1 -1
- package/dist/components/NcActionRouter/index.mjs +1 -1
- package/dist/components/NcActionSeparator/index.mjs +1 -1
- package/dist/components/NcActionText/index.mjs +1 -1
- package/dist/components/NcActionTextEditable/NcActionTextEditable.vue.d.ts +4 -1
- package/dist/components/NcActionTextEditable/index.mjs +1 -1
- package/dist/components/NcActions/NcActions.vue.d.ts +0 -19
- package/dist/components/NcActions/index.mjs +1 -1
- package/dist/components/NcAppContent/index.mjs +1 -1
- package/dist/components/NcAppContentDetails/index.mjs +1 -1
- package/dist/components/NcAppContentList/index.mjs +1 -1
- package/dist/components/NcAppNavigation/NcAppNavigation.vue.d.ts +16 -16
- package/dist/components/NcAppNavigation/index.mjs +1 -1
- package/dist/components/NcAppNavigationCaption/NcAppNavigationCaption.vue.d.ts +0 -3
- package/dist/components/NcAppNavigationCaption/index.mjs +1 -1
- package/dist/components/NcAppNavigationIconBullet/index.mjs +1 -1
- package/dist/components/NcAppNavigationItem/NcAppNavigationItem.vue.d.ts +2 -5
- package/dist/components/NcAppNavigationItem/index.mjs +1 -1
- package/dist/components/NcAppNavigationList/index.mjs +1 -1
- package/dist/components/NcAppNavigationNew/index.mjs +1 -1
- package/dist/components/NcAppNavigationNewItem/index.mjs +1 -1
- package/dist/components/NcAppNavigationSearch/index.mjs +1 -1
- package/dist/components/NcAppNavigationSettings/NcAppNavigationSettings.vue.d.ts +49 -0
- package/dist/components/NcAppNavigationSettings/index.mjs +1 -1
- package/dist/components/NcAppNavigationSpacer/index.mjs +1 -1
- package/dist/components/NcAppNavigationToggle/index.mjs +1 -1
- package/dist/components/NcAppSettingsDialog/index.mjs +1 -1
- package/dist/components/NcAppSettingsSection/index.mjs +1 -1
- package/dist/components/NcAppSidebar/index.mjs +1 -1
- package/dist/components/NcAppSidebarTab/index.mjs +1 -1
- package/dist/components/NcAvatar/index.mjs +1 -1
- package/dist/components/NcBlurHash/NcBlurHash.vue.d.ts +31 -0
- package/dist/components/NcBlurHash/index.d.ts +5 -0
- package/dist/components/NcBlurHash/index.mjs +4 -0
- package/dist/components/NcBlurHash/index.mjs.map +1 -0
- package/dist/components/NcBreadcrumb/NcBreadcrumb.vue.d.ts +0 -3
- package/dist/components/NcBreadcrumb/index.mjs +1 -1
- package/dist/components/NcBreadcrumbs/NcBreadcrumbs.vue.d.ts +1 -7
- package/dist/components/NcBreadcrumbs/index.mjs +1 -1
- package/dist/components/NcButton/index.mjs +1 -1
- package/dist/components/NcCheckboxRadioSwitch/index.mjs +1 -1
- package/dist/components/NcChip/index.mjs +1 -1
- package/dist/components/NcCollectionList/index.mjs +1 -1
- package/dist/components/NcColorPicker/index.mjs +1 -1
- package/dist/components/NcContent/NcContent.vue.d.ts +1 -1
- package/dist/components/NcContent/index.mjs +1 -1
- package/dist/components/NcCounterBubble/index.mjs +1 -1
- package/dist/components/NcDashboardWidget/index.mjs +1 -1
- package/dist/components/NcDashboardWidgetItem/index.mjs +1 -1
- package/dist/components/NcDateTime/index.mjs +1 -1
- package/dist/components/NcDateTimePicker/index.mjs +1 -1
- package/dist/components/NcDateTimePickerNative/index.mjs +1 -1
- package/dist/components/NcDialog/NcDialog.vue.d.ts +15 -7
- package/dist/components/NcDialog/index.mjs +1 -1
- package/dist/components/NcDialogButton/NcDialogButton.vue.d.ts +6 -2
- package/dist/components/NcDialogButton/index.mjs +1 -1
- package/dist/components/NcEllipsisedOption/index.mjs +1 -1
- package/dist/components/NcEmojiPicker/NcEmojiPicker.vue.d.ts +12 -1
- package/dist/components/NcEmojiPicker/index.mjs +1 -1
- package/dist/components/NcEmptyContent/index.mjs +1 -1
- package/dist/components/NcGuestContent/index.mjs +1 -1
- package/dist/components/NcHeaderButton/index.mjs +1 -1
- package/dist/components/NcHeaderMenu/NcHeaderMenu.vue.d.ts +243 -0
- package/dist/components/NcHeaderMenu/index.mjs +1 -1
- package/dist/components/NcIconSvgWrapper/index.mjs +1 -1
- package/dist/components/NcInputField/index.mjs +1 -1
- package/dist/components/NcListItem/NcListItem.vue.d.ts +0 -3
- package/dist/components/NcListItem/index.mjs +1 -1
- package/dist/components/NcListItemIcon/index.mjs +1 -1
- package/dist/components/NcLoadingIcon/index.mjs +1 -1
- package/dist/components/NcModal/index.mjs +15 -15
- package/dist/components/NcModal/index.mjs.map +1 -1
- package/dist/components/NcNoteCard/index.mjs +1 -1
- package/dist/components/NcPasswordField/index.mjs +1 -1
- package/dist/components/NcPopover/NcPopover.vue.d.ts +2 -0
- package/dist/components/NcPopover/index.mjs +1 -1
- package/dist/components/NcProgressBar/index.mjs +1 -1
- package/dist/components/NcRelatedResourcesPanel/index.mjs +1 -1
- package/dist/components/NcRichContenteditable/index.mjs +2 -2
- package/dist/components/NcRichText/NcReferencePicker/utils.d.ts +1 -1
- package/dist/components/NcRichText/NcRichText.vue.d.ts +2 -45
- package/dist/components/NcRichText/index.mjs +4 -4
- package/dist/components/NcRichText/remarkUnescape.d.ts +1 -0
- package/dist/components/NcSavingIndicatorIcon/index.mjs +1 -1
- package/dist/components/NcSelect/index.mjs +1 -1
- package/dist/components/NcSelectTags/index.mjs +1 -1
- package/dist/components/NcSettingsInputText/index.mjs +1 -1
- package/dist/components/NcSettingsSection/index.mjs +1 -1
- package/dist/components/NcSettingsSelectGroup/index.mjs +1 -1
- package/dist/components/NcTextArea/index.mjs +1 -1
- package/dist/components/NcTextField/index.mjs +1 -1
- package/dist/components/NcTimezonePicker/index.mjs +1 -1
- package/dist/components/NcUserBubble/index.mjs +1 -1
- package/dist/components/NcUserStatusIcon/index.mjs +1 -1
- package/dist/components/NcVNodes/index.mjs.map +1 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/composables/index.d.ts +1 -1
- package/dist/composables/useHotKey/index.d.ts +32 -4
- package/dist/composables/useHotKey/index.mjs +22 -20
- package/dist/composables/useHotKey/index.mjs.map +1 -1
- package/dist/composables/useIsDarkTheme/index.mjs.map +1 -1
- package/dist/composables/useIsFullscreen/index.mjs.map +1 -1
- package/dist/composables/useIsMobile/index.mjs.map +1 -1
- package/dist/composables/useTrapStackControl.d.ts +12 -0
- package/dist/directives/Focus/index.mjs.map +1 -1
- package/dist/directives/Linkify/index.mjs +11 -1
- package/dist/directives/Linkify/index.mjs.map +1 -1
- package/dist/directives/Tooltip/index.mjs +1 -1
- package/dist/directives/Tooltip/index.mjs.map +1 -1
- package/dist/functions/a11y/index.mjs.map +1 -1
- package/dist/functions/dialog/index.mjs.map +1 -1
- package/dist/functions/index.d.ts +2 -1
- package/dist/functions/isDarkTheme/index.mjs.map +1 -1
- package/dist/functions/preloadImage/index.d.ts +9 -0
- package/dist/functions/preloadImage/index.mjs +16 -0
- package/dist/functions/preloadImage/index.mjs.map +1 -0
- package/dist/functions/reference/index.mjs +2 -2
- package/dist/functions/reference/widgets.d.ts +1 -1
- package/dist/functions/registerReference/index.mjs +2 -2
- package/dist/functions/usernameToColor/index.mjs +1 -1
- package/dist/index.mjs +130 -127
- package/dist/index.mjs.map +1 -1
- package/dist/mixins/index.d.ts +0 -1
- package/dist/mixins/richEditor/index.mjs +1 -2
- package/dist/mixins/richEditor/index.mjs.map +1 -1
- package/dist/utils/focusTrap.d.ts +26 -1
- package/dist/utils/rtl.d.ts +5 -0
- package/package.json +56 -49
- package/dist/assets/NcAppNavigationSettings-CZNoJ2IO.css +0 -77
- package/dist/assets/NcDateTimePickerNative-DLch-JRA.css +0 -47
- package/dist/assets/NcRichText-C_CIawDX.css +0 -412
- package/dist/chunks/Linkify-BtgR-dXX.mjs +0 -14
- package/dist/chunks/Linkify-BtgR-dXX.mjs.map +0 -1
- package/dist/chunks/NcActionRadio-CV0AtyQD.mjs.map +0 -1
- package/dist/chunks/NcActionTextEditable-D3Iix8Je.mjs.map +0 -1
- package/dist/chunks/NcActions-BJ703bdY.mjs.map +0 -1
- package/dist/chunks/NcAppContent-DcqJmTNj.mjs.map +0 -1
- package/dist/chunks/NcAppNavigationItem-Ba6kwsU9.mjs.map +0 -1
- package/dist/chunks/NcAppNavigationSettings-Bc4ZZ9rU.mjs +0 -142
- package/dist/chunks/NcAppNavigationSettings-Bc4ZZ9rU.mjs.map +0 -1
- package/dist/chunks/NcAvatar-CB2n3G0J.mjs.map +0 -1
- package/dist/chunks/NcButton-C3eisBbK.mjs.map +0 -1
- package/dist/chunks/NcCheckboxRadioSwitch-Zndby-mL.mjs.map +0 -1
- package/dist/chunks/NcColorPicker-Bh4f-X_s.mjs.map +0 -1
- package/dist/chunks/NcDateTime-BsCT_tyH.mjs.map +0 -1
- package/dist/chunks/NcDateTimePickerNative-I2YJ1mqx.mjs.map +0 -1
- package/dist/chunks/NcDialog-bRHxABY1.mjs.map +0 -1
- package/dist/chunks/NcEmojiPicker-DIv_bq9B.mjs.map +0 -1
- package/dist/chunks/NcHeaderButton-DagheXHN.mjs.map +0 -1
- package/dist/chunks/NcHeaderMenu-DWrnJYhw.mjs +0 -260
- package/dist/chunks/NcHeaderMenu-DWrnJYhw.mjs.map +0 -1
- package/dist/chunks/NcPasswordField-OK30bZq8.mjs.map +0 -1
- package/dist/chunks/NcPopover-Cmspgso4.mjs.map +0 -1
- package/dist/chunks/NcRelatedResourcesPanel-DvA5dHwS.mjs.map +0 -1
- package/dist/chunks/NcRichContenteditable-s2Cz698X.mjs.map +0 -1
- package/dist/chunks/NcRichText-DeQGaF-c.mjs.map +0 -1
- package/dist/chunks/NcTextField-XbpY0pop.mjs.map +0 -1
- package/dist/chunks/_l10n-D7WwrqS-.mjs +0 -126
- package/dist/chunks/_l10n-D7WwrqS-.mjs.map +0 -1
- package/dist/chunks/focusTrap-Cecv_gjR.mjs +0 -7
- package/dist/chunks/focusTrap-Cecv_gjR.mjs.map +0 -1
- package/dist/chunks/getAvatarUrl-DxvUjKMi.mjs.map +0 -1
- package/dist/chunks/index-CtB0UiwH.mjs.map +0 -1
- package/dist/chunks/referencePickerModal-DPmXigHR.mjs.map +0 -1
- package/dist/mixins/clickOutsideOptions/index.d.ts +0 -15
- package/dist/mixins/clickOutsideOptions/index.mjs +0 -21
- package/dist/mixins/clickOutsideOptions/index.mjs.map +0 -1
- /package/dist/assets/{NcActionButtonGroup-CQxLn2fv.css → NcActionButtonGroup-BND4GQdv.css} +0 -0
- /package/dist/assets/{NcActionSeparator-CEbb5P6P.css → NcActionSeparator-Ct2RnclR.css} +0 -0
- /package/dist/assets/{NcAppNavigationIconBullet-By_0o2dG.css → NcAppNavigationIconBullet-CeBYVy6t.css} +0 -0
- /package/dist/assets/{NcAppNavigationList-BHK_PY3c.css → NcAppNavigationList-CLLHyHIn.css} +0 -0
- /package/dist/assets/{NcAppNavigationNew-R0QcGqvG.css → NcAppNavigationNew-L_VNZNL4.css} +0 -0
- /package/dist/assets/{NcAppNavigationSearch-C5RevjgZ.css → NcAppNavigationSearch-Bsr4esEc.css} +0 -0
- /package/dist/assets/{NcAppNavigationSpacer-DiE3sVy0.css → NcAppNavigationSpacer-BJj8CIpA.css} +0 -0
- /package/dist/assets/{NcAppNavigationToggle-D2c7IdEL.css → NcAppNavigationToggle-By3_rHPL.css} +0 -0
- /package/dist/assets/{NcAppSettingsDialog-B6Pliptg.css → NcAppSettingsDialog-c8Xj_A-1.css} +0 -0
- /package/dist/assets/{NcAppSettingsSection-Y3DmEyQ2.css → NcAppSettingsSection-DnDcGk1v.css} +0 -0
- /package/dist/assets/{NcAppSidebarTab-Cp0hG2NU.css → NcAppSidebarTab-BFy7uyWe.css} +0 -0
- /package/dist/assets/{NcBreadcrumb-10d4k_Pc.css → NcBreadcrumb-r0TATv9A.css} +0 -0
- /package/dist/assets/{NcBreadcrumbs-aYVMDayQ.css → NcBreadcrumbs-Bbd8rdwH.css} +0 -0
- /package/dist/assets/{NcChip-JjMdjcjN.css → NcChip-BWWUudAH.css} +0 -0
- /package/dist/assets/{NcCollectionList-B4azFVAf.css → NcCollectionList-COXbQt16.css} +0 -0
- /package/dist/assets/{NcContent-CQc_dM2n.css → NcContent-BgziefsK.css} +0 -0
- /package/dist/assets/{NcCounterBubble-BfI32Juo.css → NcCounterBubble-DWgyYB0d.css} +0 -0
- /package/dist/assets/{NcDashboardWidget-Hc2DAw3Y.css → NcDashboardWidget-Cdxxd7ei.css} +0 -0
- /package/dist/assets/{NcDashboardWidgetItem-CCjoWolF.css → NcDashboardWidgetItem-B8_6-_k8.css} +0 -0
- /package/dist/assets/{NcEllipsisedOption-CTvngv1F.css → NcEllipsisedOption-DGr9_bIL.css} +0 -0
- /package/dist/assets/{NcEmptyContent-C-nruaFh.css → NcEmptyContent-DZSuQ2yE.css} +0 -0
- /package/dist/assets/{NcGuestContent-Dh5z5Dgm.css → NcGuestContent-C9lbC3vg.css} +0 -0
- /package/dist/assets/{NcIconSvgWrapper-CtTf2c7f.css → NcIconSvgWrapper-DQFhmjCC.css} +0 -0
- /package/dist/assets/{NcInputConfirmCancel-DBjIHKvN.css → NcInputConfirmCancel-D46m8Alt.css} +0 -0
- /package/dist/assets/{NcInputField-CthOpVGS.css → NcInputField-CRvNH5sg.css} +0 -0
- /package/dist/assets/{NcListItem-oz15CnUw.css → NcListItem-BEfZK5UK.css} +0 -0
- /package/dist/assets/{NcListItemIcon-d5-l-ZB1.css → NcListItemIcon-E21VFJqd.css} +0 -0
- /package/dist/assets/{NcLoadingIcon-BSONDy7x.css → NcLoadingIcon-x1d284UU.css} +0 -0
- /package/dist/assets/{NcNoteCard-CImn6F9p.css → NcNoteCard-C6xb7vi0.css} +0 -0
- /package/dist/assets/{NcProgressBar-BsqdCn-x.css → NcProgressBar--z-WqmX4.css} +0 -0
- /package/dist/assets/{NcSelect-EIXtZSVn.css → NcSelect-GdIw6cIy.css} +0 -0
- /package/dist/assets/{NcSettingsInputText-C3j73xA0.css → NcSettingsInputText-BTOyFeAK.css} +0 -0
- /package/dist/assets/{NcSettingsSection-DXQyhMdq.css → NcSettingsSection-Dyrgo_fF.css} +0 -0
- /package/dist/assets/{NcSettingsSelectGroup-CGfaysRv.css → NcSettingsSelectGroup-DhyosmOr.css} +0 -0
- /package/dist/assets/{NcTextArea-CUPKm8vZ.css → NcTextArea-BfSGN55r.css} +0 -0
- /package/dist/assets/{NcUserStatusIcon-FLA1tQpD.css → NcUserStatusIcon-Du-BEPk_.css} +0 -0
- /package/dist/assets/{index-4CSl8xev.css → index-DQ4Plm4r.css} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_l10n-BEP_UzXI.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actionGlobal-BZFdtdJL.mjs","sources":["../../src/mixins/actionGlobal.js"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport default {\n\tbeforeUpdate() {\n\t\tthis.text = this.getText()\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\t// $slots are not reactive.\n\t\t\t// We need to update the content manually\n\t\t\ttext: this.getText(),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisLongText() {\n\t\t\treturn this.text && this.text.trim().length > 20\n\t\t},\n\t},\n\n\tmethods: {\n\t\tgetText() {\n\t\t\treturn this.$slots.default?.()[0].children?.trim?.() || ''\n\t\t},\n\t},\n}\n"],"names":[],"mappings":"AAKA,MAAe,oBAAA;AAAA,EACd,eAAe;AACd,SAAK,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"actionGlobal-BZFdtdJL.mjs","sources":["../../src/mixins/actionGlobal.js"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport default {\n\tbeforeUpdate() {\n\t\tthis.text = this.getText()\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\t// $slots are not reactive.\n\t\t\t// We need to update the content manually\n\t\t\ttext: this.getText(),\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisLongText() {\n\t\t\treturn this.text && this.text.trim().length > 20\n\t\t},\n\t},\n\n\tmethods: {\n\t\tgetText() {\n\t\t\treturn this.$slots.default?.()[0].children?.trim?.() || ''\n\t\t},\n\t},\n}\n"],"names":[],"mappings":"AAKA,MAAe,oBAAA;AAAA,EACd,eAAe;AACd,SAAK,OAAO,KAAK,QAAO;AAAA,EACxB;AAAA,EAED,OAAO;AACN,WAAO;AAAA;AAAA;AAAA,MAGN,MAAM,KAAK,QAAS;AAAA,IACvB;AAAA,EACE;AAAA,EAED,UAAU;AAAA,IACT,aAAa;AACZ,aAAO,KAAK,QAAQ,KAAK,KAAK,KAAM,EAAC,SAAS;AAAA,IAC9C;AAAA,EACD;AAAA,EAED,SAAS;AAAA,IACR,UAAU;AACT,aAAO,KAAK,OAAO,UAAO,EAAK,CAAC,EAAE,UAAU,YAAY;AAAA,IACxD;AAAA,EACD;AACF;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actionText-aI0owku1.mjs","sources":["../../src/utils/GetParent.js","../../src/mixins/actionText.js"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * Get the first parent component matching the provided name\n *\n * @param {object} context the context to search from (usually this)\n * @param {string} name the parent name\n * @return {object|undefined} the parent component\n */\nconst GetParent = function(context, name) {\n\tlet parent = context.$parent\n\twhile (parent) {\n\t\tif (parent.$options.name === name) {\n\t\t\treturn parent\n\t\t}\n\t\tparent = parent.$parent\n\t}\n}\n\nexport default GetParent\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport actionGlobal from './actionGlobal.js'\nimport GetParent from '../utils/GetParent.js'\n\nexport default {\n\tmixins: [actionGlobal],\n\tprops: {\n\t\t/**\n\t\t * Icon to show with the action, can be either a CSS class or an URL\n\t\t */\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * The main text content of the entry.\n\t\t */\n\t\tname: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * The title attribute of the element.\n\t\t */\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * Whether we close the Actions menu after the click\n\t\t */\n\t\tcloseAfterClick: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t/**\n\t\t * Aria label for the button. Not needed if the button has text.\n\t\t */\n\t\tariaLabel: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * @deprecated To be removed in @nextcloud/vue 9. Migration guide: remove ariaHidden prop from NcAction* components.\n\t\t * @todo Add a check in @nextcloud/vue 9 that this prop is not provided,\n\t\t * otherwise root element will inherit incorrect aria-hidden.\n\t\t */\n\t\tariaHidden: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\temits: [\n\t\t'click',\n\t],\n\n\tcomputed: {\n\t\t/**\n\t\t * Check if icon prop is an URL\n\t\t * @return {boolean} Whether the icon prop is an URL\n\t\t */\n\t\tisIconUrl() {\n\t\t\ttry {\n\t\t\t\treturn !!(new URL(this.icon, this.icon.startsWith('/') ? window.location.origin : undefined))\n\t\t\t} catch (error) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonClick(event) {\n\t\t\t/**\n\t\t\t * Emitted when the action is clicked\n\t\t\t *\n\t\t\t * @type {Event}\n\t\t\t */\n\t\t\tthis.$emit('click', event)\n\n\t\t\tif (this.closeAfterClick) {\n\t\t\t\tconst parent = GetParent(this, 'NcActions')\n\t\t\t\tif (parent && parent.closeMenu) {\n\t\t\t\t\tparent.closeMenu(false)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n}\n"],"names":["actionGlobal"],"mappings":";AAYA,MAAM,YAAY,SAAS,SAAS,MAAM;AACzC,MAAI,SAAS,QAAQ;AACrB,SAAO,QAAQ;AACd,QAAI,OAAO,SAAS,SAAS,MAAM;AAClC,aAAO;AAAA,
|
|
1
|
+
{"version":3,"file":"actionText-aI0owku1.mjs","sources":["../../src/utils/GetParent.js","../../src/mixins/actionText.js"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * Get the first parent component matching the provided name\n *\n * @param {object} context the context to search from (usually this)\n * @param {string} name the parent name\n * @return {object|undefined} the parent component\n */\nconst GetParent = function(context, name) {\n\tlet parent = context.$parent\n\twhile (parent) {\n\t\tif (parent.$options.name === name) {\n\t\t\treturn parent\n\t\t}\n\t\tparent = parent.$parent\n\t}\n}\n\nexport default GetParent\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport actionGlobal from './actionGlobal.js'\nimport GetParent from '../utils/GetParent.js'\n\nexport default {\n\tmixins: [actionGlobal],\n\tprops: {\n\t\t/**\n\t\t * Icon to show with the action, can be either a CSS class or an URL\n\t\t */\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * The main text content of the entry.\n\t\t */\n\t\tname: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * The title attribute of the element.\n\t\t */\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\t/**\n\t\t * Whether we close the Actions menu after the click\n\t\t */\n\t\tcloseAfterClick: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t/**\n\t\t * Aria label for the button. Not needed if the button has text.\n\t\t */\n\t\tariaLabel: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\t/**\n\t\t * @deprecated To be removed in @nextcloud/vue 9. Migration guide: remove ariaHidden prop from NcAction* components.\n\t\t * @todo Add a check in @nextcloud/vue 9 that this prop is not provided,\n\t\t * otherwise root element will inherit incorrect aria-hidden.\n\t\t */\n\t\tariaHidden: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\n\temits: [\n\t\t'click',\n\t],\n\n\tcomputed: {\n\t\t/**\n\t\t * Check if icon prop is an URL\n\t\t * @return {boolean} Whether the icon prop is an URL\n\t\t */\n\t\tisIconUrl() {\n\t\t\ttry {\n\t\t\t\treturn !!(new URL(this.icon, this.icon.startsWith('/') ? window.location.origin : undefined))\n\t\t\t} catch (error) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonClick(event) {\n\t\t\t/**\n\t\t\t * Emitted when the action is clicked\n\t\t\t *\n\t\t\t * @type {Event}\n\t\t\t */\n\t\t\tthis.$emit('click', event)\n\n\t\t\tif (this.closeAfterClick) {\n\t\t\t\tconst parent = GetParent(this, 'NcActions')\n\t\t\t\tif (parent && parent.closeMenu) {\n\t\t\t\t\tparent.closeMenu(false)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n}\n"],"names":["actionGlobal"],"mappings":";AAYA,MAAM,YAAY,SAAS,SAAS,MAAM;AACzC,MAAI,SAAS,QAAQ;AACrB,SAAO,QAAQ;AACd,QAAI,OAAO,SAAS,SAAS,MAAM;AAClC,aAAO;AAAA,IACV;AACE,aAAS,OAAO;AAAA,EAClB;AACA;ACZA,MAAe,kBAAA;AAAA,EACd,QAAQ,CAACA,iBAAY;AAAA,EACrB,OAAO;AAAA;AAAA;AAAA;AAAA,IAIN,MAAM;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,IACT;AAAA;AAAA;AAAA;AAAA,IAID,MAAM;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,IACT;AAAA;AAAA;AAAA;AAAA,IAID,OAAO;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,IACT;AAAA;AAAA;AAAA;AAAA,IAID,iBAAiB;AAAA,MAChB,MAAM;AAAA,MACN,SAAS;AAAA,IACT;AAAA;AAAA;AAAA;AAAA,IAID,WAAW;AAAA,MACV,MAAM;AAAA,MACN,SAAS;AAAA,IACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMD,YAAY;AAAA,MACX,MAAM;AAAA,MACN,SAAS;AAAA,IACT;AAAA,EACD;AAAA,EAED,OAAO;AAAA,IACN;AAAA,EACA;AAAA,EAED,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,IAKT,YAAY;AACX,UAAI;AACH,eAAO,CAAC,CAAE,IAAI,IAAI,KAAK,MAAM,KAAK,KAAK,WAAW,GAAG,IAAI,OAAO,SAAS,SAAS,MAAS;AAAA,MAC3F,SAAQ,OAAO;AACf,eAAO;AAAA,MACX;AAAA,IACG;AAAA,EACD;AAAA,EAED,SAAS;AAAA,IACR,QAAQ,OAAO;AAMd,WAAK,MAAM,SAAS,KAAK;AAEzB,UAAI,KAAK,iBAAiB;AACzB,cAAM,SAAS,UAAU,MAAM,WAAW;AAC1C,YAAI,UAAU,OAAO,WAAW;AAC/B,iBAAO,UAAU,KAAK;AAAA,QAC3B;AAAA,MACA;AAAA,IACG;AAAA,EACD;AACF;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autolink-CKPk5rzg.mjs","sources":["../../src/components/NcRichText/helpers.js","../../src/components/NcRichText/autolink.ts"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * Regex pattern to match links to be resolved by the link-reference provider\n *\n * @type {RegExp}\n */\nexport const URL_PATTERN = /(\\s|^)(https?:\\/\\/)([-A-Z0-9+_.]+(?::[0-9]+)?(?:\\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*)(\\s|$)/ig\n\n/**\n * Regex pattern to identify strings as links and then making them clickable\n *\n * @type {RegExp}\n */\nexport const URL_PATTERN_AUTOLINK = /(\\s|\\(|^)((https?:\\/\\/)([-A-Z0-9+_.]+[-A-Z0-9]+(?::[0-9]+)?(?:\\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*))(?=\\s|\\)|$)/ig\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { URL_PATTERN_AUTOLINK } from './helpers.js'\n\nimport type { Router } from 'vue-router'\nimport { getBaseUrl, getRootUrl } from '@nextcloud/router'\nimport { u } from 'unist-builder'\nimport { visit, SKIP } from 'unist-util-visit'\nimport { defineComponent, h } from 'vue'\n\nconst NcLink = defineComponent({\n\tname: 'NcLink',\n\tprops: {\n\t\thref: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\trender() {\n\t\treturn h('a', {\n\t\t\thref: this.href,\n\t\t\trel: 'noopener noreferrer',\n\t\t\ttarget: '_blank',\n\t\t\tclass: 'rich-text--external-link',\n\t\t}, [this.href.trim()])\n\t},\n})\n\nexport const remarkAutolink = function({ autolink, useMarkdown, useExtendedMarkdown }) {\n\treturn function(tree) {\n\t\t// remark-gfm has its own autolink parser which can not be disabled\n\t\t// and thus a local one is not needed\n\t\tif (useExtendedMarkdown || !useMarkdown || !autolink) {\n\t\t\treturn\n\t\t}\n\n\t\tvisit(tree, (node) => node.type === 'text', (node, index, parent) => {\n\t\t\tlet parsed = parseUrl(node.value)\n\t\t\tif (typeof parsed === 'string') {\n\t\t\t\tparsed = [u('text', parsed)]\n\t\t\t} else {\n\t\t\t\tparsed = parsed\n\t\t\t\t\t.map((n) => {\n\t\t\t\t\t\tif (typeof n === 'string') {\n\t\t\t\t\t\t\treturn u('text', n)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn u('link', {\n\t\t\t\t\t\t\turl: n.props.href,\n\t\t\t\t\t\t}, [u('text', n.props.href)])\n\t\t\t\t\t})\n\t\t\t\t\t.filter((x) => x)\n\t\t\t\t\t.flat()\n\t\t\t}\n\n\t\t\tparent.children.splice(index, 1, ...parsed)\n\t\t\treturn [SKIP, (index ?? 0) + parsed.length]\n\t\t})\n\t}\n}\n\nexport const parseUrl = (text: string) => {\n\tlet match = URL_PATTERN_AUTOLINK.exec(text)\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tconst list: (string|Record<string, any>)[] = []\n\tlet start = 0\n\twhile (match !== null) {\n\t\tlet href = match[2]\n\t\tlet textAfter\n\t\tlet textBefore = text.substring(start, match.index + match[1].length)\n\t\tif (href[0] === ' ') {\n\t\t\ttextBefore += href[0]\n\t\t\thref = href.substring(1).trim()\n\t\t}\n\t\tconst lastChar = href[(href.length - 1)]\n\t\tif (lastChar === '.' || lastChar === ',' || lastChar === ';' || (match[0][0] === '(' && lastChar === ')')) {\n\t\t\thref = href.substring(0, href.length - 1)\n\t\t\ttextAfter = lastChar\n\t\t}\n\t\tlist.push(textBefore)\n\t\tlist.push({ component: NcLink, props: { href } })\n\t\tif (textAfter) {\n\t\t\tlist.push(textAfter)\n\t\t}\n\t\tstart = match.index + match[0].length\n\t\tmatch = URL_PATTERN_AUTOLINK.exec(text)\n\t}\n\tlist.push(text.substring(start))\n\tconst joinedText = list.map((item) => typeof item === 'string' ? item : item.props.href).join('')\n\tif (text === joinedText) {\n\t\treturn list\n\t}\n\tconsole.error('Failed to reassemble the chunked text: ' + text)\n\treturn text\n}\n\n/**\n * Try to get path for router link from an absolute or relative URL.\n *\n * @param {Router} router - VueRouter instance of the router link\n * @param {string} url - absolute URL to parse\n * @return {string|null} a path that can be used in the router link or null if this URL doesn't match this router config\n * @example http://cloud.ltd/nextcloud/index.php/apps/files/favorites?fileid=2#fragment => /files/favorites?fileid=2#fragment\n */\nexport const getRoute = (router: Router, url: string): string | null => {\n\t/**\n\t * http://cloud.ltd /nextcloud /index.php /apps/files /favorites?fileid=2#fragment\n\t * |_____origin____|___________router-base____________| |\n\t * |__________base____________| |______________relative-url______________|\n\t * | |___root___|_optional_|__app-base__|_________router-path_______|\n\t */\n\n\tconst removePrefix = (str, prefix) => str.startsWith(prefix) ? str.slice(prefix.length) : str\n\tconst removePrefixes = (str, ...prefixes) => prefixes.reduce((acc, prefix) => removePrefix(acc, prefix), str)\n\n\t// Router is not defined in the app => not an app route\n\tif (!router) {\n\t\treturn null\n\t}\n\n\tconst isAbsoluteURL = /^https?:\\/\\//.test(url)\n\n\t// URL is a \"mailto:\", \"tel:\" or any custom app protocol link\n\tconst isNonHttpLink = /^[a-z][a-z0-9+.-]*:.+/.test(url)\n\tif (!isAbsoluteURL && isNonHttpLink) {\n\t\treturn null\n\t}\n\n\t// URL is not a link to this Nextcloud server instance => not an app route\n\tif (isAbsoluteURL && !url.startsWith(getBaseUrl())) {\n\t\treturn null\n\t}\n\n\tif (!isAbsoluteURL && !url.startsWith('/')) {\n\t\t// Relative URL without a leading slash are not allowed\n\t\t// VueRouter handles such urls according to the URL RFC,\n\t\t// for example, being on /call/abc page, link \"def\" is resolved as \"/call/def\" relative to \"/call/\".\n\t\t// We don't want to support such links,\n\t\t// so relative URL MUST start with a slash.\n\t\treturn null\n\t}\n\n\t// URL relative to the instance root\n\tconst relativeUrl = isAbsoluteURL ? removePrefixes(url, getBaseUrl(), '/index.php') : url\n\n\t// Router base relative to the instance root (app-base above)\n\tconst relativeRouterBase = removePrefixes(router.options.history.base, getRootUrl(), '/index.php')\n\n\t// Root route may have an empty '' path, fallback to '/'\n\tconst potentialRouterPath = removePrefixes(relativeUrl, relativeRouterBase) || '/'\n\n\t// Check if there is actually matching route in the router for this path\n\tconst route = router.resolve(potentialRouterPath)\n\n\tif (!route.matched.length) {\n\t\treturn null\n\t}\n\n\treturn route.fullPath\n}\n"],"names":[],"mappings":";;;;AAUY,MAAC,cAAc;AAOpB,MAAM,uBAAuB;ACJpC,MAAM,SAAS,gBAAgB;AAAA,EAC9B,MAAM;AAAA,EACN,OAAO;AAAA,IACN,MAAM;AAAA,MACL,MAAM;AAAA,MACN,UAAU;AAAA,
|
|
1
|
+
{"version":3,"file":"autolink-CKPk5rzg.mjs","sources":["../../src/components/NcRichText/helpers.js","../../src/components/NcRichText/autolink.ts"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * Regex pattern to match links to be resolved by the link-reference provider\n *\n * @type {RegExp}\n */\nexport const URL_PATTERN = /(\\s|^)(https?:\\/\\/)([-A-Z0-9+_.]+(?::[0-9]+)?(?:\\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*)(\\s|$)/ig\n\n/**\n * Regex pattern to identify strings as links and then making them clickable\n *\n * @type {RegExp}\n */\nexport const URL_PATTERN_AUTOLINK = /(\\s|\\(|^)((https?:\\/\\/)([-A-Z0-9+_.]+[-A-Z0-9]+(?::[0-9]+)?(?:\\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*))(?=\\s|\\)|$)/ig\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { URL_PATTERN_AUTOLINK } from './helpers.js'\n\nimport type { Router } from 'vue-router'\nimport { getBaseUrl, getRootUrl } from '@nextcloud/router'\nimport { u } from 'unist-builder'\nimport { visit, SKIP } from 'unist-util-visit'\nimport { defineComponent, h } from 'vue'\n\nconst NcLink = defineComponent({\n\tname: 'NcLink',\n\tprops: {\n\t\thref: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\trender() {\n\t\treturn h('a', {\n\t\t\thref: this.href,\n\t\t\trel: 'noopener noreferrer',\n\t\t\ttarget: '_blank',\n\t\t\tclass: 'rich-text--external-link',\n\t\t}, [this.href.trim()])\n\t},\n})\n\nexport const remarkAutolink = function({ autolink, useMarkdown, useExtendedMarkdown }) {\n\treturn function(tree) {\n\t\t// remark-gfm has its own autolink parser which can not be disabled\n\t\t// and thus a local one is not needed\n\t\tif (useExtendedMarkdown || !useMarkdown || !autolink) {\n\t\t\treturn\n\t\t}\n\n\t\tvisit(tree, (node) => node.type === 'text', (node, index, parent) => {\n\t\t\tlet parsed = parseUrl(node.value)\n\t\t\tif (typeof parsed === 'string') {\n\t\t\t\tparsed = [u('text', parsed)]\n\t\t\t} else {\n\t\t\t\tparsed = parsed\n\t\t\t\t\t.map((n) => {\n\t\t\t\t\t\tif (typeof n === 'string') {\n\t\t\t\t\t\t\treturn u('text', n)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn u('link', {\n\t\t\t\t\t\t\turl: n.props.href,\n\t\t\t\t\t\t}, [u('text', n.props.href)])\n\t\t\t\t\t})\n\t\t\t\t\t.filter((x) => x)\n\t\t\t\t\t.flat()\n\t\t\t}\n\n\t\t\tparent.children.splice(index, 1, ...parsed)\n\t\t\treturn [SKIP, (index ?? 0) + parsed.length]\n\t\t})\n\t}\n}\n\nexport const parseUrl = (text: string) => {\n\tlet match = URL_PATTERN_AUTOLINK.exec(text)\n\t// eslint-disable-next-line @typescript-eslint/no-explicit-any\n\tconst list: (string|Record<string, any>)[] = []\n\tlet start = 0\n\twhile (match !== null) {\n\t\tlet href = match[2]\n\t\tlet textAfter\n\t\tlet textBefore = text.substring(start, match.index + match[1].length)\n\t\tif (href[0] === ' ') {\n\t\t\ttextBefore += href[0]\n\t\t\thref = href.substring(1).trim()\n\t\t}\n\t\tconst lastChar = href[(href.length - 1)]\n\t\tif (lastChar === '.' || lastChar === ',' || lastChar === ';' || (match[0][0] === '(' && lastChar === ')')) {\n\t\t\thref = href.substring(0, href.length - 1)\n\t\t\ttextAfter = lastChar\n\t\t}\n\t\tlist.push(textBefore)\n\t\tlist.push({ component: NcLink, props: { href } })\n\t\tif (textAfter) {\n\t\t\tlist.push(textAfter)\n\t\t}\n\t\tstart = match.index + match[0].length\n\t\tmatch = URL_PATTERN_AUTOLINK.exec(text)\n\t}\n\tlist.push(text.substring(start))\n\tconst joinedText = list.map((item) => typeof item === 'string' ? item : item.props.href).join('')\n\tif (text === joinedText) {\n\t\treturn list\n\t}\n\tconsole.error('Failed to reassemble the chunked text: ' + text)\n\treturn text\n}\n\n/**\n * Try to get path for router link from an absolute or relative URL.\n *\n * @param {Router} router - VueRouter instance of the router link\n * @param {string} url - absolute URL to parse\n * @return {string|null} a path that can be used in the router link or null if this URL doesn't match this router config\n * @example http://cloud.ltd/nextcloud/index.php/apps/files/favorites?fileid=2#fragment => /files/favorites?fileid=2#fragment\n */\nexport const getRoute = (router: Router, url: string): string | null => {\n\t/**\n\t * http://cloud.ltd /nextcloud /index.php /apps/files /favorites?fileid=2#fragment\n\t * |_____origin____|___________router-base____________| |\n\t * |__________base____________| |______________relative-url______________|\n\t * | |___root___|_optional_|__app-base__|_________router-path_______|\n\t */\n\n\tconst removePrefix = (str, prefix) => str.startsWith(prefix) ? str.slice(prefix.length) : str\n\tconst removePrefixes = (str, ...prefixes) => prefixes.reduce((acc, prefix) => removePrefix(acc, prefix), str)\n\n\t// Router is not defined in the app => not an app route\n\tif (!router) {\n\t\treturn null\n\t}\n\n\tconst isAbsoluteURL = /^https?:\\/\\//.test(url)\n\n\t// URL is a \"mailto:\", \"tel:\" or any custom app protocol link\n\tconst isNonHttpLink = /^[a-z][a-z0-9+.-]*:.+/.test(url)\n\tif (!isAbsoluteURL && isNonHttpLink) {\n\t\treturn null\n\t}\n\n\t// URL is not a link to this Nextcloud server instance => not an app route\n\tif (isAbsoluteURL && !url.startsWith(getBaseUrl())) {\n\t\treturn null\n\t}\n\n\tif (!isAbsoluteURL && !url.startsWith('/')) {\n\t\t// Relative URL without a leading slash are not allowed\n\t\t// VueRouter handles such urls according to the URL RFC,\n\t\t// for example, being on /call/abc page, link \"def\" is resolved as \"/call/def\" relative to \"/call/\".\n\t\t// We don't want to support such links,\n\t\t// so relative URL MUST start with a slash.\n\t\treturn null\n\t}\n\n\t// URL relative to the instance root\n\tconst relativeUrl = isAbsoluteURL ? removePrefixes(url, getBaseUrl(), '/index.php') : url\n\n\t// Router base relative to the instance root (app-base above)\n\tconst relativeRouterBase = removePrefixes(router.options.history.base, getRootUrl(), '/index.php')\n\n\t// Root route may have an empty '' path, fallback to '/'\n\tconst potentialRouterPath = removePrefixes(relativeUrl, relativeRouterBase) || '/'\n\n\t// Check if there is actually matching route in the router for this path\n\tconst route = router.resolve(potentialRouterPath)\n\n\tif (!route.matched.length) {\n\t\treturn null\n\t}\n\n\treturn route.fullPath\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emoji-BY_D0V5K.mjs","sources":["../../src/functions/emoji/emoji.ts"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getBuilder } from '@nextcloud/browser-storage'\nimport { EmojiIndex, frequently } from 'emoji-mart-vue-fast'\n\nimport data from 'emoji-mart-vue-fast/data/all.json'\n\nconst storage = getBuilder('nextcloud-vue').persist(true).build()\n\n// Shared emoji index and skinTone for all emojiSearch function calls\n// Will be initialized on the first call\nlet emojiIndex\n\n/**\n * Skin tones supported by Unicode Emojis (Fitzpatrick scale)\n * The numeric values align with `emoji-mart-vue`\n */\nexport enum EmojiSkinTone {\n\tNeutral = 1,\n\tLight = 2,\n\tMediumLight = 3,\n\tMedium = 4,\n\tMediumDark = 5,\n\tDark = 6,\n}\n\n/**\n * Get the list of emojis by search filter or the list of frequently used emojis\n *\n * @param query Emoji search filter string; if no string or empty string is given, the list of frequently used emojis is returned\n * @param maxResults Maximum of returned emojis\n * @return {object[]} list of found emojis in the same format as the emoji-mart-vue-fast's EmojiIndex\n */\nexport function emojiSearch(query: string, maxResults: number = 10): object[] {\n\t// If this is the first call of function - initialize EmojiIndex\n\tif (!emojiIndex) {\n\t\temojiIndex = new EmojiIndex(data)\n\t}\n\tconst currentSkinTone = getCurrentSkinTone()\n\n\tlet results\n\tif (query) {\n\t\tresults = emojiIndex.search(`:${query}`, maxResults)\n\t\tif (results.length < maxResults) {\n\t\t\tresults = results.concat(emojiIndex.search(query, maxResults - results.length))\n\t\t}\n\t} else {\n\t\tresults = frequently.get(maxResults).map((id: number) => emojiIndex.emoji(id)) || []\n\t}\n\n\treturn results.map((emoji) => emoji.getSkin(currentSkinTone))\n}\n\n/**\n * Add emoji to the list of recent emojis.\n * This list can be got from emojiSearch function and it is used in NcEmojiPicker.\n *\n * @param emojiData object with `id` property\n * @param emojiData.id the emoji ID from emoji index\n */\nexport function emojiAddRecent(emojiData: { id: string }): void {\n\tfrequently.add(emojiData)\n}\n\n/**\n * Get the current skin tone index used for emojis\n *\n * @return {EmojiSkinTone} The skin tone\n */\nexport function getCurrentSkinTone(): EmojiSkinTone {\n\tconst skinTone = Number.parseInt(storage.getItem('NcEmojiPicker::currentSkinTone') ?? '1')\n\t// Clamp skinTone to valid ranges\n\treturn Math.min(Math.max(skinTone, EmojiSkinTone.Neutral), EmojiSkinTone.Dark)\n}\n\n/**\n * Set the current active skin tone for emojis\n *\n * @param skinTone Skin tone\n */\nexport function setCurrentSkinTone(skinTone: EmojiSkinTone): void {\n\t// Clamp skinTone to valid ranges\n\tskinTone = Math.min(Math.max(skinTone, EmojiSkinTone.Neutral), EmojiSkinTone.Dark)\n\tstorage.setItem('NcEmojiPicker::currentSkinTone', skinTone.toString())\n}\n"],"names":["EmojiSkinTone"],"mappings":";;;AAUA,MAAM,UAAU,WAAW,eAAe,EAAE,QAAQ,IAAI,EAAE;
|
|
1
|
+
{"version":3,"file":"emoji-BY_D0V5K.mjs","sources":["../../src/functions/emoji/emoji.ts"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getBuilder } from '@nextcloud/browser-storage'\nimport { EmojiIndex, frequently } from 'emoji-mart-vue-fast'\n\nimport data from 'emoji-mart-vue-fast/data/all.json'\n\nconst storage = getBuilder('nextcloud-vue').persist(true).build()\n\n// Shared emoji index and skinTone for all emojiSearch function calls\n// Will be initialized on the first call\nlet emojiIndex\n\n/**\n * Skin tones supported by Unicode Emojis (Fitzpatrick scale)\n * The numeric values align with `emoji-mart-vue`\n */\nexport enum EmojiSkinTone {\n\tNeutral = 1,\n\tLight = 2,\n\tMediumLight = 3,\n\tMedium = 4,\n\tMediumDark = 5,\n\tDark = 6,\n}\n\n/**\n * Get the list of emojis by search filter or the list of frequently used emojis\n *\n * @param query Emoji search filter string; if no string or empty string is given, the list of frequently used emojis is returned\n * @param maxResults Maximum of returned emojis\n * @return {object[]} list of found emojis in the same format as the emoji-mart-vue-fast's EmojiIndex\n */\nexport function emojiSearch(query: string, maxResults: number = 10): object[] {\n\t// If this is the first call of function - initialize EmojiIndex\n\tif (!emojiIndex) {\n\t\temojiIndex = new EmojiIndex(data)\n\t}\n\tconst currentSkinTone = getCurrentSkinTone()\n\n\tlet results\n\tif (query) {\n\t\tresults = emojiIndex.search(`:${query}`, maxResults)\n\t\tif (results.length < maxResults) {\n\t\t\tresults = results.concat(emojiIndex.search(query, maxResults - results.length))\n\t\t}\n\t} else {\n\t\tresults = frequently.get(maxResults).map((id: number) => emojiIndex.emoji(id)) || []\n\t}\n\n\treturn results.map((emoji) => emoji.getSkin(currentSkinTone))\n}\n\n/**\n * Add emoji to the list of recent emojis.\n * This list can be got from emojiSearch function and it is used in NcEmojiPicker.\n *\n * @param emojiData object with `id` property\n * @param emojiData.id the emoji ID from emoji index\n */\nexport function emojiAddRecent(emojiData: { id: string }): void {\n\tfrequently.add(emojiData)\n}\n\n/**\n * Get the current skin tone index used for emojis\n *\n * @return {EmojiSkinTone} The skin tone\n */\nexport function getCurrentSkinTone(): EmojiSkinTone {\n\tconst skinTone = Number.parseInt(storage.getItem('NcEmojiPicker::currentSkinTone') ?? '1')\n\t// Clamp skinTone to valid ranges\n\treturn Math.min(Math.max(skinTone, EmojiSkinTone.Neutral), EmojiSkinTone.Dark)\n}\n\n/**\n * Set the current active skin tone for emojis\n *\n * @param skinTone Skin tone\n */\nexport function setCurrentSkinTone(skinTone: EmojiSkinTone): void {\n\t// Clamp skinTone to valid ranges\n\tskinTone = Math.min(Math.max(skinTone, EmojiSkinTone.Neutral), EmojiSkinTone.Dark)\n\tstorage.setItem('NcEmojiPicker::currentSkinTone', skinTone.toString())\n}\n"],"names":["EmojiSkinTone"],"mappings":";;;AAUA,MAAM,UAAU,WAAW,eAAe,EAAE,QAAQ,IAAI,EAAE,MAAM;AAIhE,IAAI;AAMQ,IAAA,kCAAAA,mBAAL;AACNA,iBAAAA,eAAA,aAAU,CAAV,IAAA;AACAA,iBAAAA,eAAA,WAAQ,CAAR,IAAA;AACAA,iBAAAA,eAAA,iBAAc,CAAd,IAAA;AACAA,iBAAAA,eAAA,YAAS,CAAT,IAAA;AACAA,iBAAAA,eAAA,gBAAa,CAAb,IAAA;AACAA,iBAAAA,eAAA,UAAO,CAAP,IAAA;AANWA,SAAAA;AAAA,GAAA,iBAAA,CAAA,CAAA;AAgBI,SAAA,YAAY,OAAe,aAAqB,IAAc;AAE7E,MAAI,CAAC,YAAY;AACH,iBAAA,IAAI,WAAW,IAAI;AAAA,EAAA;AAEjC,QAAM,kBAAkB,mBAAmB;AAEvC,MAAA;AACJ,MAAI,OAAO;AACV,cAAU,WAAW,OAAO,IAAI,KAAK,IAAI,UAAU;AAC/C,QAAA,QAAQ,SAAS,YAAY;AACtB,gBAAA,QAAQ,OAAO,WAAW,OAAO,OAAO,aAAa,QAAQ,MAAM,CAAC;AAAA,IAAA;AAAA,EAC/E,OACM;AACN,cAAU,WAAW,IAAI,UAAU,EAAE,IAAI,CAAC,OAAe,WAAW,MAAM,EAAE,CAAC,KAAK,CAAC;AAAA,EAAA;AAGpF,SAAO,QAAQ,IAAI,CAAC,UAAU,MAAM,QAAQ,eAAe,CAAC;AAC7D;AASO,SAAS,eAAe,WAAiC;AAC/D,aAAW,IAAI,SAAS;AACzB;AAOO,SAAS,qBAAoC;AACnD,QAAM,WAAW,OAAO,SAAS,QAAQ,QAAQ,gCAAgC,KAAK,GAAG;AAEzF,SAAO,KAAK;AAAA,IAAI,KAAK;AAAA,MAAI;AAAA,MAAU;AAAA;AAAA;IAAwB;AAAA;AAAA,EAAkB;AAC9E;AAOO,SAAS,mBAAmB,UAA+B;AAEjE,aAAW,KAAK;AAAA,IAAI,KAAK;AAAA,MAAI;AAAA,MAAU;AAAA;AAAA;IAAwB;AAAA;AAAA,EAAkB;AACjF,UAAQ,QAAQ,kCAAkC,SAAS,SAAA,CAAU;AACtE;"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
function getTrapStack() {
|
|
2
|
+
window._nc_focus_trap ??= [];
|
|
3
|
+
return window._nc_focus_trap;
|
|
4
|
+
}
|
|
5
|
+
function createTrapStackController() {
|
|
6
|
+
let pausedStack = [];
|
|
7
|
+
return {
|
|
8
|
+
/**
|
|
9
|
+
* Pause the current focus-trap stack
|
|
10
|
+
*/
|
|
11
|
+
pause() {
|
|
12
|
+
pausedStack = [...getTrapStack()];
|
|
13
|
+
for (const trap of pausedStack) {
|
|
14
|
+
trap.pause();
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
/**
|
|
18
|
+
* Unpause the paused focus trap stack
|
|
19
|
+
*/
|
|
20
|
+
unpause() {
|
|
21
|
+
for (const trap of pausedStack) {
|
|
22
|
+
trap.unpause();
|
|
23
|
+
}
|
|
24
|
+
pausedStack = [];
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export {
|
|
29
|
+
createTrapStackController as c,
|
|
30
|
+
getTrapStack as g
|
|
31
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"focusTrap-DmkaYJTC.mjs","sources":["../../src/utils/focusTrap.ts"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { FocusTrap } from 'focus-trap'\n\ndeclare global {\n\tinterface Window {\n\t\t_nc_focus_trap: FocusTrap[]\n\t}\n}\n\n/**\n * Get the default global focus trap stack\n */\nexport function getTrapStack() {\n\t// Create global stack if undefined\n\twindow._nc_focus_trap ??= []\n\n\treturn window._nc_focus_trap\n}\n\n/**\n * Create controller to pause/unpause the global focus trap stack.\n *\n * When some component manually implements its own focus-trap without using global focus-trap stack,\n * it also needs to pause the global stack to avoid conflict.\n */\nexport function createTrapStackController() {\n\t/**\n\t * Stack of focus traps that were paused to unpause the exact stack later\n\t */\n\tlet pausedStack: FocusTrap[] = []\n\n\treturn {\n\t\t/**\n\t\t * Pause the current focus-trap stack\n\t\t */\n\t\tpause() {\n\t\t\tpausedStack = [...getTrapStack()]\n\t\t\tfor (const trap of pausedStack) {\n\t\t\t\ttrap.pause()\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Unpause the paused focus trap stack\n\t\t */\n\t\tunpause() {\n\t\t\tfor (const trap of pausedStack) {\n\t\t\t\ttrap.unpause()\n\t\t\t}\n\t\t\tpausedStack = []\n\t\t},\n\t}\n}\n"],"names":[],"mappings":"AAgBO,SAAS,eAAe;AAE9B,SAAO,mBAAmB,CAAC;AAE3B,SAAO,OAAO;AACf;AAQO,SAAS,4BAA4B;AAI3C,MAAI,cAA2B,CAAC;AAEzB,SAAA;AAAA;AAAA;AAAA;AAAA,IAIN,QAAQ;AACO,oBAAA,CAAC,GAAG,cAAc;AAChC,iBAAW,QAAQ,aAAa;AAC/B,aAAK,MAAM;AAAA,MAAA;AAAA,IAEb;AAAA;AAAA;AAAA;AAAA,IAIA,UAAU;AACT,iBAAW,QAAQ,aAAa;AAC/B,aAAK,QAAQ;AAAA,MAAA;AAEd,oBAAc,CAAC;AAAA,IAAA;AAAA,EAEjB;AACD;"}
|
|
@@ -107,8 +107,8 @@ export {
|
|
|
107
107
|
renderCustomPickerElement as c,
|
|
108
108
|
isCustomPickerElementRegistered as d,
|
|
109
109
|
destroyCustomPickerElement as e,
|
|
110
|
-
|
|
111
|
-
|
|
110
|
+
destroyWidget as f,
|
|
111
|
+
hasFullWidth as g,
|
|
112
112
|
hasInteractiveView as h,
|
|
113
113
|
isWidgetRegistered as i,
|
|
114
114
|
getCustomPickerElementSize as j,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-BF8joS9W.mjs","sources":["../../src/functions/reference/widgets.ts","../../src/functions/reference/customPickerElements.js"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\ninterface WidgetRenderProperties {\n\trichObjectType: string;\n\trichObject: object;\n\taccessible: boolean;\n\tinteractive: boolean;\n}\n\ntype widgetRenderCallback = (el: HTMLElement, properties: WidgetRenderProperties) => void;\ntype widgetDestroyCallback = (el: HTMLElement) => void;\n\ninterface WidgetProps {\n\tid: string;\n\thasInteractiveView: boolean;\n\tfullWidth: boolean;\n\tcallback: widgetRenderCallback;\n\tonDestroy: widgetDestroyCallback;\n}\n\ninterface WidgetPropsOptional {\n\thasInteractiveView?: boolean;\n\tfullWidth?: boolean;\n}\n\ndeclare global {\n\tinterface Window {\n\t\t_vue_richtext_widgets: Record<string, WidgetProps>;\n\t\t_registerWidget: (id: string, callback: widgetRenderCallback, onDestroy: widgetDestroyCallback, props: WidgetPropsOptional) => void;\n\t}\n}\n\nif (!window._vue_richtext_widgets) {\n\twindow._vue_richtext_widgets = {}\n}\n\nconst isWidgetRegistered = (id: string) => {\n\treturn !!window._vue_richtext_widgets[id]\n}\n\nconst hasInteractiveView = (id: string) => {\n\treturn !!window._vue_richtext_widgets[id]?.hasInteractiveView\n}\n\nexport const hasFullWidth = (id: string) => {\n\treturn !!window._vue_richtext_widgets[id]?.fullWidth\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst registerWidget = (id: string, callback: widgetRenderCallback, onDestroy = (el: HTMLElement) => {}, props: WidgetPropsOptional) => {\n\tconst propsWithDefaults = {\n\t\thasInteractiveView: true,\n\t\tfullWidth: false,\n\t\t...props,\n\t}\n\n\tif (window._vue_richtext_widgets[id]) {\n\t\tconsole.error('Widget for id ' + id + ' already registered')\n\t\treturn\n\t}\n\n\twindow._vue_richtext_widgets[id] = {\n\t\tid,\n\t\tcallback,\n\t\tonDestroy,\n\t\t...propsWithDefaults,\n\t}\n}\n\nconst renderWidget = (el: HTMLElement, { richObjectType, richObject, accessible, interactive }) => {\n\tif (richObjectType === 'open-graph') {\n\t\treturn\n\t}\n\n\tif (!window._vue_richtext_widgets[richObjectType]) {\n\t\tconsole.error('Widget for rich object type ' + richObjectType + ' not registered')\n\t\treturn\n\t}\n\n\twindow._vue_richtext_widgets[richObjectType].callback(el, { richObjectType, richObject, accessible, interactive })\n}\n\nconst destroyWidget = (richObjectType: string, el: HTMLElement) => {\n\tif (richObjectType === 'open-graph') {\n\t\treturn\n\t}\n\n\tif (!window._vue_richtext_widgets[richObjectType]) {\n\t\treturn\n\t}\n\n\twindow._vue_richtext_widgets[richObjectType].onDestroy(el)\n}\n\nwindow._registerWidget = (id: string, callback: widgetRenderCallback, onDestroy: widgetDestroyCallback, props: WidgetPropsOptional) => {\n\tregisterWidget(id, callback, onDestroy, props)\n}\n\nexport {\n\tregisterWidget,\n\trenderWidget,\n\tdestroyWidget,\n\tisWidgetRegistered,\n\thasInteractiveView,\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nif (!window._vue_richtext_custom_picker_elements) {\n\twindow._vue_richtext_custom_picker_elements = {}\n}\n\n/**\n * Representation of the render callback result\n * It contains a dom element and an object (Vue instance or other fancy things)\n */\nclass NcCustomPickerRenderResult {\n\n\t/**\n\t * @param {HTMLElement} element The HTML element\n\t * @param {object} object The object\n\t */\n\tconstructor(element, object) {\n\t\tthis.element = element\n\t\tthis.object = object\n\t}\n\n}\n\nconst isCustomPickerElementRegistered = (id) => {\n\treturn !!window._vue_richtext_custom_picker_elements[id]\n}\n\nconst getCustomPickerElementSize = (id) => {\n\tconst size = window._vue_richtext_custom_picker_elements[id]?.size\n\tif (['small', 'normal', 'large', 'full'].includes(size)) {\n\t\treturn size\n\t}\n\treturn null\n}\n\nconst registerCustomPickerElement = (id, callback, onDestroy = (el) => {}, size = 'large') => {\n\tif (window._vue_richtext_custom_picker_elements[id]) {\n\t\tconsole.error('Custom reference picker element for id ' + id + ' already registered')\n\t\treturn\n\t}\n\n\twindow._vue_richtext_custom_picker_elements[id] = {\n\t\tid,\n\t\tcallback,\n\t\tonDestroy,\n\t\tsize,\n\t}\n}\n\nconst renderCustomPickerElement = (el, { providerId, accessible }) => {\n\tif (!window._vue_richtext_custom_picker_elements[providerId]) {\n\t\tconsole.error('Custom reference picker element for reference provider ID ' + providerId + ' not registered')\n\t\treturn\n\t}\n\n\treturn window._vue_richtext_custom_picker_elements[providerId].callback(el, { providerId, accessible })\n}\n\nconst destroyCustomPickerElement = (providerId, el, renderResult) => {\n\tif (!window._vue_richtext_custom_picker_elements[providerId]) {\n\t\treturn\n\t}\n\n\twindow._vue_richtext_custom_picker_elements[providerId].onDestroy(el, renderResult)\n}\n\nwindow._registerCustomPickerElement = registerCustomPickerElement\n\nexport {\n\tNcCustomPickerRenderResult,\n\tregisterCustomPickerElement,\n\trenderCustomPickerElement,\n\tdestroyCustomPickerElement,\n\tisCustomPickerElementRegistered,\n\tgetCustomPickerElementSize,\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
import { openBlock, createElementBlock, normalizeClass, createElementVNode, normalizeStyle, toDisplayString, createApp } from "vue";
|
|
4
|
-
/* empty css */
|
|
1
|
+
import { g as getAvatarUrl } from "./NcMentionBubble.vue_vue_type_style_index_0_scoped_6c8d0da9_lang-DYJMHclV.mjs";
|
|
2
|
+
import { createElementBlock, openBlock, normalizeClass, createElementVNode, normalizeStyle, toDisplayString, createApp } from "vue";
|
|
5
3
|
import { _ as _export_sfc } from "./_plugin-vue_export-helper-1tPrXgE0.mjs";
|
|
6
|
-
import { L as Linkify } from "./Linkify-BtgR-dXX.mjs";
|
|
7
4
|
import escapeHtml from "escape-html";
|
|
8
5
|
import stripTags from "striptags";
|
|
9
6
|
const _sfc_main = {
|
|
@@ -90,7 +87,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
90
87
|
])
|
|
91
88
|
], 2);
|
|
92
89
|
}
|
|
93
|
-
const NcMentionBubble = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-
|
|
90
|
+
const NcMentionBubble = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-6c8d0da9"]]);
|
|
94
91
|
const MENTION_START = /(?=[a-z0-9_\-@.'])\B/.source;
|
|
95
92
|
const MENTION_SIMPLE = /(@[a-z0-9_\-@.']+)/.source;
|
|
96
93
|
const MENTION_GUEST = /@"(?:guest|email){1}\/[a-f0-9]+"/.source;
|
|
@@ -118,7 +115,7 @@ const richEditor = {
|
|
|
118
115
|
const splitValue = sanitizedValue.split(USERID_REGEX).map((part) => part.split(USERID_REGEX_WITH_SPACE)).flat();
|
|
119
116
|
return splitValue.map((part) => {
|
|
120
117
|
if (!part.startsWith("@")) {
|
|
121
|
-
return
|
|
118
|
+
return part;
|
|
122
119
|
}
|
|
123
120
|
const id = part.slice(1).replace(/"/gi, "");
|
|
124
121
|
return this.genSelectTemplate(id);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-wLgC9ACl.mjs","sources":["../../src/components/NcRichContenteditable/NcMentionBubble.vue","../../src/mixins/richEditor/index.js"],"sourcesContent":["<!--\n - SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<span :class=\"{'mention-bubble--primary': primary}\"\n\t\tclass=\"mention-bubble\"\n\t\tcontenteditable=\"false\">\n\t\t<span class=\"mention-bubble__wrapper\">\n\t\t\t<span class=\"mention-bubble__content\">\n\t\t\t\t<!-- Avatar or icon -->\n\t\t\t\t<span :class=\"[icon, `mention-bubble__icon--${avatarUrl ? 'with-avatar' : ''}`]\"\n\t\t\t\t\t:style=\"avatarUrl ? { backgroundImage: `url(${avatarUrl})` } : null\"\n\t\t\t\t\tclass=\"mention-bubble__icon\" />\n\n\t\t\t\t<!-- Title -->\n\t\t\t\t<span role=\"heading\" class=\"mention-bubble__title\" :title=\"labelWithFallback\" />\n\t\t\t</span>\n\n\t\t\t<!-- Selectable text for copy/paste -->\n\t\t\t<span role=\"none\" class=\"mention-bubble__select\">{{ mentionText }}</span>\n\t\t</span>\n\t</span>\n</template>\n\n<script>\nimport { getAvatarUrl } from '../../utils/getAvatarUrl.ts'\n\nexport default {\n\tname: 'NcMentionBubble',\n\n\tprops: {\n\t\tid: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\t/**\n\t\t * @deprecated Use `label` instead\n\t\t */\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\trequired: false,\n\t\t\tdefault: null,\n\t\t},\n\t\tlabel: {\n\t\t\ttype: String,\n\t\t\trequired: false,\n\t\t\tdefault: null,\n\t\t},\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ticonUrl: {\n\t\t\ttype: [String, null],\n\t\t\tdefault: null,\n\t\t},\n\t\tsource: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tprimary: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tcomputed: {\n\t\tavatarUrl() {\n\t\t\tif (this.iconUrl) {\n\t\t\t\treturn this.iconUrl\n\t\t\t}\n\n\t\t\treturn this.id && this.source === 'users'\n\t\t\t\t? this.getAvatarUrl(this.id, 44)\n\t\t\t\t: null\n\t\t},\n\t\tmentionText() {\n\t\t\treturn !this.id.includes(' ') && !this.id.includes('/')\n\t\t\t\t? `@${this.id}`\n\t\t\t\t: `@\"${this.id}\"`\n\t\t},\n\t\t// Fallback to title for compatibility\n\t\tlabelWithFallback() {\n\t\t\treturn this.label || this.title\n\t\t},\n\t},\n\n\tmethods: {\n\t\tgetAvatarUrl,\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n$bubble-height: 20px;\n$bubble-max-width: 150px;\n$bubble-padding: 2px;\n$bubble-avatar-size: $bubble-height - 2 * $bubble-padding;\n\n.mention-bubble {\n\t&--primary &__content {\n\t\tcolor: var(--color-primary-element-text);\n\t\tbackground-color: var(--color-primary-element);\n\t}\n\n\t&__wrapper {\n\t\tmax-width: $bubble-max-width;\n\t\t// Align with text\n\t\theight: $bubble-height - $bubble-padding;\n\t\tvertical-align: text-bottom;\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t}\n\n\t&__content {\n\t\tdisplay: inline-flex;\n\t\toverflow: hidden;\n\t\talign-items: center;\n\t\tmax-width: 100%;\n\t\theight: $bubble-height ;\n\t\t-webkit-user-select: none;\n\t\tuser-select: none;\n\t\tpadding-inline: $bubble-padding $bubble-padding * 3;\n\t\tborder-radius: math.div($bubble-height, 2);\n\t\tbackground-color: var(--color-background-dark);\n\t}\n\n\t&__icon {\n\t\tposition: relative;\n\t\twidth: $bubble-avatar-size;\n\t\theight: $bubble-avatar-size;\n\t\tborder-radius: math.div($bubble-avatar-size, 2);\n\t\tbackground-color: var(--color-background-darker);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: center;\n\t\tbackground-size: $bubble-avatar-size - 2 * $bubble-padding;\n\n\t\t&--with-avatar {\n\t\t\tcolor: inherit;\n\t\t\tbackground-size: cover;\n\t\t}\n\t}\n\n\t&__title {\n\t\toverflow: hidden;\n\t\tmargin-inline-start: $bubble-padding;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\t// Put title in ::before so it is not selectable\n\t\t&::before {\n\t\t\tcontent: attr(title);\n\t\t}\n\t}\n\n\t// Hide the mention id so it is selectable\n\t&__select {\n\t\tposition: absolute;\n\t\tz-index: -1;\n\t\tinset-inline-start: -100vw;\n\t\twidth: 1px;\n\t\theight: 1px;\n\t\toverflow: hidden;\n\t}\n}\n\n</style>\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport NcMentionBubble from '../../components/NcRichContenteditable/NcMentionBubble.vue'\n\nimport escapeHtml from 'escape-html'\nimport stripTags from 'striptags'\nimport { createApp } from 'vue'\n\n// Referenced from public function getMentions(): https://github.com/nextcloud/server/blob/master/lib/private/Comments/Comment.php\n// Beginning or whitespace. Uses positive lookahead (to work on MobileSafari <16.4)\nconst MENTION_START = /(?=[a-z0-9_\\-@.'])\\B/.source\n// Capturing groups like: @user-id, @\"guest/abc16def\", @\"federated_user/user-id\", @\"user-id with space\"\nconst MENTION_SIMPLE = /(@[a-z0-9_\\-@.']+)/.source\nconst MENTION_GUEST = /@"(?:guest|email){1}\\/[a-f0-9]+"/.source\nconst MENTION_PREFIXED = /@"(?:federated_)?(?:group|team|user){1}\\/[a-z0-9_\\-@.' /:]+"/.source\nconst MENTION_WITH_SPACE = /@"[a-z0-9_\\-@.' ]+"/.source\nconst MENTION_COMPLEX = `(${MENTION_GUEST}|${MENTION_PREFIXED}|${MENTION_WITH_SPACE})`\n// Concatenated regular expressions\nexport const USERID_REGEX = new RegExp(`${MENTION_START}${MENTION_SIMPLE}`, 'gi')\nexport const USERID_REGEX_WITH_SPACE = new RegExp(`${MENTION_START}${MENTION_COMPLEX}`, 'gi')\n\nexport default {\n\tprops: {\n\t\tuserData: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => ({}),\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Convert the value string to html for the inner content\n\t\t *\n\t\t * @param {string} value the content without html\n\t\t * @return {string} rendered html\n\t\t */\n\t\trenderContent(value) {\n\t\t\t// Sanitize the value prop\n\t\t\tconst sanitizedValue = escapeHtml(value)\n\n\t\t\t// Extract all the userIds\n\t\t\tconst splitValue = sanitizedValue.split(USERID_REGEX)\n\t\t\t\t.map(part => part.split(USERID_REGEX_WITH_SPACE)).flat()\n\n\t\t\t// Replace userIds by html\n\t\t\treturn splitValue\n\t\t\t\t.map(part => {\n\t\t\t\t\t// When splitting, the string is always putting the userIds\n\t\t\t\t\t// on the uneven indexes. We only want to generate the mentions html\n\t\t\t\t\tif (!part.startsWith('@')) {\n\t\t\t\t\t\treturn part\n\t\t\t\t\t}\n\n\t\t\t\t\t// Extracting the id, nuking the leading @ and all \"\n\t\t\t\t\tconst id = part.slice(1).replace(/"/gi, '')\n\t\t\t\t\t// Compiling template and prepend with the space we removed during the split\n\t\t\t\t\treturn this.genSelectTemplate(id)\n\t\t\t\t})\n\t\t\t\t.join('')\n\t\t\t\t.replace(/\\n/gmi, '<br>')\n\t\t\t\t.replace(/&/gmi, '&')\n\t\t},\n\n\t\t/**\n\t\t * Convert the innerHtml content to a string with mentions as text\n\t\t *\n\t\t * @param {string} content the content without html\n\t\t * @return {string}\n\t\t */\n\t\tparseContent(content) {\n\t\t\tlet text = content\n\t\t\t// Replace break lines with new lines\n\t\t\ttext = text.replace(/<br>/gmi, '\\n')\n\t\t\t// Replace some html special characters\n\t\t\ttext = text.replace(/ /gmi, ' ')\n\t\t\ttext = text.replace(/&/gmi, '&')\n\n\t\t\t// Convert the mentions to text only\n\t\t\t// first we replace divs with new lines\n\t\t\ttext = text.replace(/<\\/div>/gmi, '\\n')\n\t\t\t// then we remove all leftover html\n\t\t\ttext = stripTags(text, '<div>')\n\t\t\ttext = stripTags(text)\n\n\t\t\treturn text\n\t\t},\n\n\t\t/**\n\t\t * Generate an autocompletion popup entry template\n\t\t *\n\t\t * @param {string} value the value to match against the userData\n\t\t * @return {string}\n\t\t */\n\t\tgenSelectTemplate(value) {\n\t\t\t// The value returned by this function will replace the trigger '@'\n\t\t\t// and the search text, so when there is no match we simply return\n\t\t\t// '@' and the text.\n\t\t\tif (typeof value === 'undefined') {\n\t\t\t\treturn `${this.autocompleteTribute.current.collection.trigger}${this.autocompleteTribute.current.mentionText}`\n\t\t\t}\n\n\t\t\tconst data = this.userData[value]\n\n\t\t\t// Fallback to @mention in case no data matches\n\t\t\tif (!data) {\n\t\t\t\t// return @value if matches MENTION_SIMPLE, @\"value\" otherwise\n\t\t\t\treturn [' ', '/', ':'].every(char => !value.includes(char))\n\t\t\t\t\t? `@${value}`\n\t\t\t\t\t: `@\"${value}\"`\n\t\t\t}\n\n\t\t\t// Return template and make sure we strip off new lines, tabs and consecutive whitespaces\n\t\t\treturn this.renderComponentHtml(data, NcMentionBubble)\n\t\t\t\t.replace(/[\\n\\t]/gmi, '')\n\t\t\t\t.replace(/>\\s+</g, '><')\n\t\t},\n\n\t\t/**\n\t\t * Render a component and return its html content\n\t\t *\n\t\t * @param {object} props the props to pass to the component\n\t\t * @param {object} component the component to render\n\t\t * @return {string} the rendered html\n\t\t */\n\t\trenderComponentHtml(props, component) {\n\t\t\tconst Item = createApp(component, {\n\t\t\t\t...props,\n\t\t\t})\n\n\t\t\t// Prepare mountpoint\n\t\t\tconst mount = document.createElement('div')\n\t\t\tmount.style.display = 'none'\n\t\t\tdocument.body.appendChild(mount)\n\n\t\t\t// Mount and get raw html\n\t\t\tItem.mount(mount)\n\t\t\tconst renderedHtml = mount.innerHTML\n\n\t\t\t// Destroy\n\t\t\tItem.unmount()\n\t\t\tmount.remove()\n\n\t\t\treturn renderedHtml\n\t\t},\n\t},\n}\n"],"names":["_createElementBlock","_normalizeClass","_createElementVNode","_normalizeStyle","_toDisplayString"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger-D3RVzcfQ.mjs","sources":["../../src/utils/logger.js"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.detectUser()\n\t.setApp('@nextcloud/vue')\n\t.build()\n"],"names":[],"mappings":";AAOA,MAAA,SAAe,iBAAgB,EAC7B,WAAU,EACV,OAAO,gBAAgB,EACvB,MAAK;"}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
import '../assets/referencePickerModal-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import '../assets/referencePickerModal-Cy43S4js.css';
|
|
2
|
+
import { c as renderCustomPickerElement, e as destroyCustomPickerElement, d as isCustomPickerElementRegistered, f as destroyWidget, a as renderWidget, i as isWidgetRegistered, h as hasInteractiveView, g as hasFullWidth, j as getCustomPickerElementSize } from "./index-BF8joS9W.mjs";
|
|
3
|
+
import { createElementBlock, openBlock, mergeProps, createElementVNode, createCommentVNode, toDisplayString, resolveComponent, createVNode, withCtx, ref, nextTick, normalizeClass, createBlock, resolveDynamicComponent, normalizeStyle, createTextVNode, withKeys, withModifiers, createApp } from "vue";
|
|
4
4
|
import { _ as _export_sfc } from "./_plugin-vue_export-helper-1tPrXgE0.mjs";
|
|
5
|
-
import { r as register,
|
|
5
|
+
import { r as register, Q as t7, a as t, R as t42, S as t37, T as t21, U as t22, u as t39, V as t29, D as t17, W as t11 } from "./_l10n-BEP_UzXI.mjs";
|
|
6
6
|
import axios from "@nextcloud/axios";
|
|
7
7
|
import { loadState } from "@nextcloud/initial-state";
|
|
8
8
|
import { imagePath, generateOcsUrl } from "@nextcloud/router";
|
|
9
|
-
import { N as NcEmptyContent } from "./NcEmptyContent-
|
|
9
|
+
import { N as NcEmptyContent } from "./NcEmptyContent-D-wBvEi4.mjs";
|
|
10
10
|
import { _ as _sfc_main$9 } from "./NcHighlight-BHtRIzqk.mjs";
|
|
11
|
-
import { N as NcSelect } from "./NcSelect-
|
|
11
|
+
import { N as NcSelect } from "./NcSelect-B61ik8an.mjs";
|
|
12
12
|
import { useElementSize, useIntersectionObserver } from "@vueuse/core";
|
|
13
13
|
import { RouterLink } from "vue-router";
|
|
14
14
|
import { g as getRoute } from "./autolink-CKPk5rzg.mjs";
|
|
15
|
-
import { N as NcButton } from "./NcButton-
|
|
16
|
-
import { N as NcLoadingIcon } from "./NcLoadingIcon-
|
|
17
|
-
import { N as NcTextField } from "./NcTextField-
|
|
18
|
-
import { D as DotsHorizontal } from "./DotsHorizontal-
|
|
15
|
+
import { N as NcButton } from "./NcButton-QmfEsvXC.mjs";
|
|
16
|
+
import { N as NcLoadingIcon } from "./NcLoadingIcon-CsMn1bFR.mjs";
|
|
17
|
+
import { N as NcTextField } from "./NcTextField-CNV42Zey.mjs";
|
|
18
|
+
import { D as DotsHorizontal } from "./DotsHorizontal-AMVAlTNH.mjs";
|
|
19
19
|
import NcModal from "../components/NcModal/index.mjs";
|
|
20
20
|
import { emit } from "@nextcloud/event-bus";
|
|
21
|
-
import { A as ArrowLeft } from "./ArrowLeft-
|
|
22
|
-
import { C as Close } from "./Close-
|
|
21
|
+
import { A as ArrowLeft } from "./ArrowLeft-CanHG70H.mjs";
|
|
22
|
+
import { C as Close } from "./Close-idsVwGrC.mjs";
|
|
23
23
|
const _sfc_main$8 = {
|
|
24
24
|
name: "NcCustomPickerElement",
|
|
25
25
|
props: {
|
|
@@ -325,7 +325,7 @@ function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
325
325
|
})
|
|
326
326
|
]);
|
|
327
327
|
}
|
|
328
|
-
const NcProviderList = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["render", _sfc_render$6], ["__scopeId", "data-v-
|
|
328
|
+
const NcProviderList = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["render", _sfc_render$6], ["__scopeId", "data-v-f61ca5dc"]]);
|
|
329
329
|
register(t21);
|
|
330
330
|
const IDLE_TIMEOUT = 3 * 60 * 1e3;
|
|
331
331
|
const _sfc_main$5 = {
|
|
@@ -529,7 +529,7 @@ function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
529
529
|
}, 8, ["onClick"])) : createCommentVNode("", true)
|
|
530
530
|
], 2);
|
|
531
531
|
}
|
|
532
|
-
const NcReferenceWidget = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["render", _sfc_render$5], ["__scopeId", "data-v-
|
|
532
|
+
const NcReferenceWidget = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["render", _sfc_render$5], ["__scopeId", "data-v-236df0ce"]]);
|
|
533
533
|
register(t22);
|
|
534
534
|
const _sfc_main$4 = {
|
|
535
535
|
name: "NcRawLinkInput",
|
|
@@ -716,7 +716,7 @@ function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
716
716
|
])
|
|
717
717
|
]);
|
|
718
718
|
}
|
|
719
|
-
const NcSearchResult = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["render", _sfc_render$3], ["__scopeId", "data-v-
|
|
719
|
+
const NcSearchResult = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["render", _sfc_render$3], ["__scopeId", "data-v-ff4bcbf3"]]);
|
|
720
720
|
register(t29, t37, t39);
|
|
721
721
|
const LIMIT = 5;
|
|
722
722
|
const _sfc_main$2 = {
|
|
@@ -1325,7 +1325,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
1325
1325
|
_: 1
|
|
1326
1326
|
}, 8, ["size", "onClose"])) : createCommentVNode("", true);
|
|
1327
1327
|
}
|
|
1328
|
-
const NcReferencePickerModal = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-
|
|
1328
|
+
const NcReferencePickerModal = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-fdc92258"]]);
|
|
1329
1329
|
async function getLinkWithPicker(providerId = null, isInsideViewer = void 0) {
|
|
1330
1330
|
return await new Promise((resolve, reject) => {
|
|
1331
1331
|
const modalId = "referencePickerModal";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"referencePickerModal-CzI44bxD.mjs","sources":["../../src/components/NcRichText/NcReferencePicker/NcCustomPickerElement.vue","../../src/functions/reference/providerHelper.js","../../src/components/NcRichText/NcReferencePicker/utils.js","../../node_modules/vue-material-design-icons/LinkVariant.vue","../../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.js"],"sourcesContent":["<!--\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 { renderCustomPickerElement, isCustomPickerElementRegistered, destroyCustomPickerElement } from './../../../functions/reference/customPickerElements.js'\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\temits: [\n\t\t'cancel',\n\t\t'submit',\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tisRegistered: isCustomPickerElementRegistered(this.provider.id),\n\t\t\trenderResult: null,\n\t\t}\n\t},\n\tmounted() {\n\t\tif (this.isRegistered) {\n\t\t\tthis.renderElement()\n\t\t}\n\t},\n\tbeforeUnmount() {\n\t\tif (this.isRegistered) {\n\t\t\tdestroyCustomPickerElement(this.provider.id, this.$el, this.renderResult)\n\t\t}\n\t},\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\t\tonSubmit(value) {\n\t\t\tthis.$emit('submit', value)\n\t\t},\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","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { isCustomPickerElementRegistered } from './customPickerElements.js'\n\nimport { t } from '../../l10n.js'\n\nimport axios from '@nextcloud/axios'\nimport { loadState } from '@nextcloud/initial-state'\nimport { generateOcsUrl, imagePath } from '@nextcloud/router'\n\nexport const anyLinkProviderId = 'any-link'\n\nconst anyLinkProvider = {\n\tid: anyLinkProviderId,\n\ttitle: t('Any link'),\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\nif (!window._vue_richtext_reference_providers) {\n\twindow._vue_richtext_reference_providers = loadState('core', 'reference-provider-list', [])\n}\n\n// single timestamps object used by every entity in the page\nif (!window._vue_richtext_reference_provider_timestamps) {\n\twindow._vue_richtext_reference_provider_timestamps = loadState('core', 'reference-provider-timestamps', {})\n}\n\n/**\n * @param {string} providerId The provider ID\n * @return {object} The provider object\n */\nexport function getProvider(providerId) {\n\tif (providerId === anyLinkProviderId) {\n\t\treturn anyLinkProvider\n\t}\n\treturn getProviders().find(p => p.id === providerId)\n}\n\n/**\n * @return {Array} Raw provider list as it was provided by the server\n */\nexport function getProviders() {\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\tconsole.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 {Array} providerList list of provider objects\n * @return {Array} the sorted provider list\n */\nexport function sortProviders(providerList) {\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 {string} query The search query\n * @param {number} limit (optional) max number of results\n * @return {Array} the sorted/filtered provider list\n */\nexport function searchProvider(query, limit = null) {\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\tconst searchResult = limit\n\t\t? filteredSortedProviders.slice(0, limit)\n\t\t: filteredSortedProviders\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 {number} providerId The id of the search provider\n */\nexport function touchProvider(providerId) {\n\tconst timestamp = Math.floor(Date.now() / 1000)\n\tconst params = {\n\t\ttimestamp,\n\t}\n\tconst url = generateOcsUrl('references/provider/{providerId}', { providerId })\n\taxios.put(url, params)\n\t\t.then((response) => {\n\t\t\twindow._vue_richtext_reference_provider_timestamps[providerId] = timestamp\n\t\t})\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nlet mytimer = 0\n/**\n *\n * @param {Function} callback The callback to call after the delay\n * @param {number} ms The delay in milli-seconds\n */\nexport function delay(callback, ms) {\n\treturn function() {\n\t\tconst context = this\n\t\tconst args = arguments\n\t\tclearTimeout(mytimer)\n\t\tmytimer = setTimeout(function() {\n\t\t\tcallback.apply(context, args)\n\t\t}, ms || 0)\n\t}\n}\n/**\n *\n * @param {string} str The url\n */\nexport function isUrl(str) {\n\ttry {\n\t\treturn Boolean(new URL(str))\n\t} catch (error) {\n\t\treturn false\n\t}\n}\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\n<template>\n\t<div class=\"provider-list\">\n\t\t<NcSelect ref=\"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 class=\"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 class=\"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 { searchProvider } from './../../../functions/reference/providerHelper.js'\nimport { isUrl } from './utils.js'\nimport NcEmptyContent from '../../NcEmptyContent/index.js'\nimport NcHighlight from '../../NcHighlight/index.js'\nimport NcSelect from '../../NcSelect/index.js'\nimport { t } from '../../../l10n.js'\n\nimport LinkVariantIcon from 'vue-material-design-icons/LinkVariant.vue'\n\nexport default {\n\tname: 'NcProviderList',\n\tcomponents: {\n\t\tNcSelect,\n\t\tNcHighlight,\n\t\tNcEmptyContent,\n\t\tLinkVariantIcon,\n\t},\n\temits: [\n\t\t'select-provider',\n\t\t'submit',\n\t],\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\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\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\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('select-provider', p)\n\t\t\t\t}\n\t\t\t\tthis.selectedProvider = null\n\t\t\t}\n\t\t},\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<template>\n\t<div ref=\"widgetRoot\" :class=\"{'toggle-interactive': hasInteractiveView && !isInteractive }\">\n\t\t<div v-if=\"reference && hasCustomWidget\"\n\t\t\tref=\"customWidget\"\n\t\t\tclass=\"widget-custom\"\n\t\t\t:class=\"{ 'full-width': hasFullWidth }\" />\n\n\t\t<component :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 && hasInteractiveView && !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<script>\nimport { useElementSize, useIntersectionObserver } from '@vueuse/core'\nimport { nextTick, ref } from 'vue'\nimport { RouterLink } from 'vue-router'\n\nimport { t } from '../../l10n.js'\nimport { getRoute } from './autolink.ts'\nimport { renderWidget, isWidgetRegistered, destroyWidget, hasInteractiveView, hasFullWidth } from './../../functions/reference/widgets.ts'\n\nimport NcButton from '../../components/NcButton/NcButton.vue'\n\nconst IDLE_TIMEOUT = 3 * 60 * 1000 // 3 minutes outside of viewport before widget is removed from the DOM\n\nexport default {\n\tname: 'NcReferenceWidget',\n\tcomponents: {\n\t\tNcButton,\n\t},\n\tprops: {\n\t\treference: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tinteractive: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tinteractiveOptIn: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tsetup() {\n\t\tconst isVisible = ref(false)\n\t\t// This is the widget root node\n\t\tconst widgetRoot = ref()\n\t\tconst { width } = useElementSize(widgetRoot)\n\n\t\tuseIntersectionObserver(widgetRoot, ([entry]) => {\n\t\t\tnextTick(() => {\n\t\t\t\tisVisible.value = entry.isIntersecting\n\t\t\t})\n\t\t})\n\n\t\treturn {\n\t\t\twidth,\n\t\t\tisVisible,\n\t\t\twidgetRoot,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tshowInteractive: false,\n\t\t\trendered: false,\n\t\t\tidleTimeout: null,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tisInteractive() {\n\t\t\treturn (!this.interactiveOptIn && this.interactive) || this.showInteractive\n\t\t},\n\t\thasFullWidth() {\n\t\t\treturn hasFullWidth(this.reference.richObjectType)\n\t\t},\n\t\thasCustomWidget() {\n\t\t\treturn isWidgetRegistered(this.reference.richObjectType)\n\t\t},\n\t\thasInteractiveView() {\n\t\t\treturn isWidgetRegistered(this.reference.richObjectType) && hasInteractiveView(this.reference.richObjectType)\n\t\t},\n\t\tnoAccess() {\n\t\t\treturn this.reference && !this.reference.accessible\n\t\t},\n\t\tdescriptionStyle() {\n\t\t\tif (this.numberOfLines === 0) {\n\t\t\t\treturn {\n\t\t\t\t\tdisplay: 'none',\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst lineClamp = this.numberOfLines\n\t\t\treturn {\n\t\t\t\tlineClamp,\n\t\t\t\twebkitLineClamp: lineClamp,\n\t\t\t}\n\t\t},\n\t\tnumberOfLines() {\n\t\t\t// no description for width < 450, one line until 550 and so on\n\t\t\tconst lineCountOffsets = [450, 550, 650, Infinity]\n\t\t\treturn lineCountOffsets.findIndex(max => this.width < max)\n\t\t},\n\t\tcompactLink() {\n\t\t\tconst link = this.reference.openGraphObject.link\n\t\t\tif (!link) {\n\t\t\t\treturn ''\n\t\t\t}\n\n\t\t\tif (link.startsWith('https://')) {\n\t\t\t\treturn link.substring(8)\n\t\t\t}\n\t\t\tif (link.startsWith('http://')) {\n\t\t\t\treturn link.substring(7)\n\t\t\t}\n\t\t\treturn link\n\t\t},\n\t\troute() {\n\t\t\treturn getRoute(this.$router, this.reference.openGraphObject.link)\n\t\t},\n\t\treferenceWidgetLinkComponent() {\n\t\t\treturn this.route ? RouterLink : 'a'\n\t\t},\n\t\treferenceWidgetLinkProps() {\n\t\t\treturn this.route\n\t\t\t\t? { to: this.route }\n\t\t\t\t: { href: this.reference.openGraphObject.link, target: '_blank' }\n\t\t},\n\t},\n\twatch: {\n\t\tisVisible: {\n\t\t\thandler(val) {\n\t\t\t\tif (!val) {\n\t\t\t\t\tthis.idleTimeout = setTimeout(() => {\n\t\t\t\t\t\t// If the widget is still outside of viewport after timeout, destroy it\n\t\t\t\t\t\tif (!this.isVisible) {\n\t\t\t\t\t\t\tthis.destroyWidget()\n\t\t\t\t\t\t}\n\t\t\t\t\t}, IDLE_TIMEOUT)\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tif (this.idleTimeout) {\n\t\t\t\t\tclearTimeout(this.idleTimeout)\n\t\t\t\t\tthis.idleTimeout = null\n\t\t\t\t}\n\n\t\t\t\tif (!this.rendered) {\n\t\t\t\t\tthis.renderWidget()\n\t\t\t\t}\n\t\t\t},\n\t\t\timmediate: true,\n\t\t},\n\t},\n\tbeforeUnmount() {\n\t\tthis.destroyWidget()\n\t},\n\tmethods: {\n\t\tt,\n\n\t\tenableInteractive() {\n\t\t\tthis.showInteractive = true\n\t\t\tthis.renderWidget()\n\t\t},\n\t\trenderWidget() {\n\t\t\tif (!this.$refs.customWidget) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this?.reference?.richObjectType === 'open-graph') {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.$refs.customWidget.innerHTML = ''\n\n\t\t\t// create a separate element so we can rerender on the ref again\n\t\t\tconst widget = document.createElement('div')\n\t\t\twidget.style = 'width: 100%;'\n\t\t\tthis.$refs.customWidget.appendChild(widget)\n\t\t\tthis.$nextTick(() => {\n\t\t\t\t// Waiting for the ref to become available\n\t\t\t\trenderWidget(widget, {\n\t\t\t\t\t...this.reference,\n\t\t\t\t\tinteractive: this.isInteractive,\n\t\t\t\t})\n\t\t\t\tthis.rendered = true\n\t\t\t})\n\t\t},\n\t\tdestroyWidget() {\n\t\t\tif (this.rendered) {\n\t\t\t\tdestroyWidget(this.reference.richObjectType, this.$el)\n\t\t\t\tthis.rendered = false\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\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 ref=\"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 v-if=\"reference !== null\"\n\t\t\tclass=\"reference-widget\"\n\t\t\t:reference=\"reference\" />\n\t\t<NcEmptyContent v-else\n\t\t\tclass=\"raw-link--empty-content\">\n\t\t\t<template #icon>\n\t\t\t\t<img v-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 NcReferenceWidget from '../NcReferenceWidget.vue'\nimport { isUrl, delay } from './utils.js'\nimport NcEmptyContent from '../../NcEmptyContent/index.js'\nimport NcLoadingIcon from '../../NcLoadingIcon/index.js'\nimport NcTextField from '../../NcTextField/index.js'\nimport { t } from '../../../l10n.js'\n\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nimport LinkVariantIcon from 'vue-material-design-icons/LinkVariant.vue'\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\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\temits: [\n\t\t'submit',\n\t],\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\tcomputed: {\n\t\tisLinkValid() {\n\t\t\treturn isUrl(this.inputValue)\n\t\t},\n\t},\n\tmethods: {\n\t\tfocus() {\n\t\t\tthis.$refs['url-input'].$el.getElementsByTagName('input')[0]?.focus()\n\t\t},\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\t\tonClear() {\n\t\t\tthis.inputValue = ''\n\t\t\tthis.reference = null\n\t\t},\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\tdelay(() => {\n\t\t\t\t\tthis.updateReference()\n\t\t\t\t}, 500)()\n\t\t\t}\n\t\t},\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\tconsole.error(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 v-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 v-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.js'\n\nexport default {\n\tname: 'NcSearchResult',\n\tcomponents: {\n\t\tNcHighlight,\n\t},\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\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 ref=\"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 v-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 v-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': true }\">\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 v-if=\"showEmptyContent\"\n\t\t\tclass=\"smart-picker-search--empty-content\">\n\t\t\t<template #icon>\n\t\t\t\t<img v-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 NcSearchResult from './NcSearchResult.vue'\nimport { isUrl, delay } from './utils.js'\nimport NcEmptyContent from '../../NcEmptyContent/index.js'\nimport NcSelect from '../../NcSelect/index.js'\n\nimport { t } from '../../../l10n.js'\n\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nimport DotsHorizontalIcon from 'vue-material-design-icons/DotsHorizontal.vue'\nimport LinkVariantIcon from 'vue-material-design-icons/LinkVariant.vue'\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\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\t\tshowEmptyContent: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\tsearchPlaceholder: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\temits: [\n\t\t'submit',\n\t],\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\tcomputed: {\n\t\tmySearchPlaceholder() {\n\t\t\treturn this.searchPlaceholder || t('Search')\n\t\t},\n\t\tsearchProviderIds() {\n\t\t\treturn this.provider.search_providers_ids\n\t\t},\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\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\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\t},\n\tmounted() {\n\t\tthis.resetResults()\n\t},\n\tbeforeUnmount() {\n\t\tthis.cancelSearchRequests()\n\t},\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\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\t\tcancelSearchRequests() {\n\t\t\tif (this.abortController) {\n\t\t\t\tthis.abortController.abort()\n\t\t\t}\n\t\t},\n\t\tonSearchInput(query) {\n\t\t\tthis.searchQuery = query\n\t\t\tdelay(() => {\n\t\t\t\tthis.updateSearch()\n\t\t\t}, 500)()\n\t\t},\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\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\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\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\treturn this.searchOneProvider(pid)\n\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\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 class=\"reference-picker\"\n\t\t:style=\"pickerWrapperStyle\"\n\t\ttabindex=\"-1\"\n\t\t@keydown.stop.prevent.esc=\"onEscapePressed\">\n\t\t<NcProviderList v-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 v-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 v-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 v-else-if=\"mode === MODES.customElement\"\n\t\t\tclass=\"custom-element-wrapper\">\n\t\t\t<NcCustomPickerElement :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.js'\nimport { touchProvider } from './../../../functions/reference/providerHelper.js'\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\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\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\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\temits: [\n\t\t'cancel',\n\t\t'cancel-raw-link',\n\t\t'cancel-search',\n\t\t'provider-selected',\n\t\t'submit',\n\t],\n\tdata() {\n\t\treturn {\n\t\t\tMODES,\n\t\t\tselectedProvider: this.initialProvider,\n\t\t}\n\t},\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\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\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\n\t},\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\t\tonProviderSelected(provider) {\n\t\t\tthis.selectedProvider = provider\n\t\t\tthis.$emit('provider-selected', provider)\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.$refs['url-input']?.focus()\n\t\t\t})\n\t\t},\n\t\tcancelCustomElement() {\n\t\t\tthis.deselectProvider()\n\t\t},\n\t\tcancelSearch() {\n\t\t\tthis.$emit('cancel-search', this.selectedProvider?.title)\n\t\t\tthis.deselectProvider()\n\t\t},\n\t\tcancelRawLinkInput() {\n\t\t\tthis.$emit('cancel-raw-link', this.selectedProvider?.title)\n\t\t\tthis.deselectProvider()\n\t\t},\n\t\tcancelProviderSelection() {\n\t\t\tthis.$emit('cancel')\n\t\t},\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\t\tdeselectProvider() {\n\t\t\tthis.selectedProvider = null\n\t\t\tthis.$emit('provider-selected', 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 v-if=\"show\"\n\t\t:size=\"modalSize\"\n\t\t:can-close=\"true\"\n\t\tclass=\"reference-picker-modal\"\n\t\t@close=\"onCancel\">\n\t\t<div ref=\"modal_content\"\n\t\t\tclass=\"reference-picker-modal--content\">\n\t\t\t<NcButton v-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 :aria-label=\"closeButtonLabel\"\n\t\t\t\t:title=\"closeButtonTitle\"\n\t\t\t\ttype=\"tertiary\"\n\t\t\t\tclass=\"close-button\"\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 ref=\"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 NcReferencePicker from './NcReferencePicker.vue'\nimport { getCustomPickerElementSize, isCustomPickerElementRegistered } from './../../../functions/reference/customPickerElements.js'\nimport NcButton from '../../NcButton/index.ts'\nimport NcModal from '../../NcModal/index.js'\nimport { t } from '../../../l10n.js'\n\nimport { emit } from '@nextcloud/event-bus'\n\nimport ArrowLeftIcon from 'vue-material-design-icons/ArrowLeft.vue'\nimport CloseIcon from 'vue-material-design-icons/Close.vue'\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\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\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\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\temits: [\n\t\t'cancel',\n\t\t'submit',\n\t],\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\tcomputed: {\n\t\tisProviderSelected() {\n\t\t\treturn this.selectedProvider !== null\n\t\t},\n\t\tshowBackButton() {\n\t\t\treturn this.initialProvider === null && this.isProviderSelected\n\t\t},\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\t\tshowModalName() {\n\t\t\treturn !this.isProviderSelected || !isCustomPickerElementRegistered(this.selectedProvider.id)\n\t\t},\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\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\tmethods: {\n\t\tonCancel() {\n\t\t\tthis.show = false\n\t\t\tthis.$emit('cancel')\n\t\t},\n\t\tonSubmit(value) {\n\t\t\tthis.show = false\n\t\t\tthis.$emit('submit', value)\n\t\t},\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\t\tonBackClicked() {\n\t\t\tthis.$refs.referencePicker.deselectProvider()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\">\n// this is to avoid scroll on the container and leave it to the result block\n.reference-picker-modal .modal-container {\n\tdisplay: flex !important;\n}\n</style>\n\n<style lang=\"scss\" scoped>\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 NcReferencePickerModal from './../../components/NcRichText/NcReferencePicker/NcReferencePickerModal.vue'\nimport { getProvider } from './providerHelper.js'\n\nimport { createApp } from 'vue'\n\n/**\n * Creates a reference picker modal and return a promise which provides the result\n *\n * @param {string} providerId Optional ID of initial selected provider\n * @param {boolean} isInsideViewer Should be true if this function is called while the Viewer is displayed\n * @return {Promise<unknown>}\n */\nexport async function getLinkWithPicker(providerId = null, isInsideViewer = undefined) {\n\treturn await new Promise((resolve, reject) => {\n\t\tconst modalId = 'referencePickerModal'\n\t\tconst modalElement = document.createElement('div')\n\t\tmodalElement.id = modalId\n\t\tdocument.body.append(modalElement)\n\n\t\tconst initialProvider = providerId === null\n\t\t\t? null\n\t\t\t: (getProvider(providerId) ?? null)\n\n\t\tconst view = createApp(NcReferencePickerModal, {\n\t\t\tinitialProvider,\n\t\t\tisInsideViewer,\n\t\t\tonCancel() {\n\t\t\t\tview.unmount()\n\t\t\t\treject(new Error('User cancellation'))\n\t\t\t},\n\t\t\tonSubmit(link) {\n\t\t\t\tview.unmount()\n\t\t\t\tresolve(link)\n\t\t\t},\n\t\t})\n\t\tview.mount(modalElement)\n\t})\n}\n"],"names":["_sfc_main","_hoisted_1","_openBlock","_createElementBlock","_hoisted_2","_hoisted_3","_mergeProps","_createElementVNode","_hoisted_4","_createCommentVNode","NcHighlight","_createVNode","_withCtx","_toDisplayString","_normalizeClass","_createBlock","_resolveDynamicComponent","_normalizeStyle","_createTextVNode","_withKeys","_hoisted_5","DotsHorizontalIcon","_withModifiers","ArrowLeftIcon","CloseIcon"],"mappings":"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","x_google_ignoreList":[3]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rtl-v0UOPAM7.mjs","sources":["../../src/utils/rtl.ts"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { isRTL } from '@nextcloud/l10n'\n\nexport const isRtl = isRTL()\n"],"names":[],"mappings":";AAOO,MAAM,QAAQ,MAAM;"}
|