@nextcloud/vue 9.0.0-alpha.4 → 9.0.0-alpha.6
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 +302 -8
- package/README.md +2 -13
- package/dist/assets/NcActionButton-BLoWchS5.css +105 -0
- package/dist/assets/NcActionCaption-B7FZTc3Y.css +32 -0
- package/dist/assets/NcActionCheckbox-CoQEhC0c.css +79 -0
- package/dist/assets/NcActionInput-BEvIPQv2.css +220 -0
- package/dist/assets/NcActionLink-Dxv-rmRR.css +91 -0
- package/dist/assets/NcActionRadio-CsMcYeMT.css +78 -0
- package/dist/assets/NcActionRouter-CflTO8Z-.css +102 -0
- package/dist/assets/NcActionText-CV2sRLti.css +106 -0
- package/dist/assets/NcActionTextEditable-Nufxk13g.css +238 -0
- package/dist/assets/NcActions-P5DOkDHr.css +83 -0
- package/dist/assets/NcAppContent-CyHAUPNL.css +124 -0
- package/dist/assets/NcAppNavigation-B21SNH2o.css +108 -0
- package/dist/assets/NcAppNavigationCaption-Ddf7LHGR.css +48 -0
- package/dist/assets/NcAppNavigationIconBullet-By_0o2dG.css +30 -0
- package/dist/assets/NcAppNavigationItem-OPiz-90P.css +208 -0
- package/dist/assets/NcAppNavigationList-BHK_PY3c.css +28 -0
- package/dist/assets/NcAppNavigationNewItem-BoSjpr5m.css +191 -0
- package/dist/assets/NcAppNavigationSearch-C5RevjgZ.css +41 -0
- package/dist/assets/NcAppNavigationSettings-CZNoJ2IO.css +77 -0
- package/dist/assets/NcAppNavigationToggle-D2c7IdEL.css +27 -0
- package/dist/assets/NcAppSettingsDialog-B6Pliptg.css +72 -0
- package/dist/assets/NcAppSettingsSection-Y3DmEyQ2.css +30 -0
- package/dist/assets/NcAppSidebar-DJR5EHRN.css +364 -0
- package/dist/assets/NcAvatar-0pU8ivmq.css +132 -0
- package/dist/assets/NcBreadcrumb-10d4k_Pc.css +68 -0
- package/dist/assets/NcBreadcrumbs-aYVMDayQ.css +37 -0
- package/dist/assets/NcButton-DoYn-HfJ.css +210 -0
- package/dist/assets/NcCheckboxRadioSwitch-CG-8Isv_.css +199 -0
- package/dist/assets/NcChip-JjMdjcjN.css +65 -0
- package/dist/assets/NcCollectionList-B4azFVAf.css +221 -0
- package/dist/assets/NcColorPicker-B4Vqq3HN.css +173 -0
- package/dist/assets/NcContent-CQc_dM2n.css +79 -0
- package/dist/assets/NcCounterBubble-BfI32Juo.css +53 -0
- package/dist/assets/NcDashboardWidget-Hc2DAw3Y.css +73 -0
- package/dist/assets/NcDashboardWidgetItem-CCjoWolF.css +85 -0
- package/dist/assets/NcDateTimePicker-D67l0SAR.css +865 -0
- package/dist/assets/NcDialog-DG8bAh01.css +131 -0
- package/dist/assets/NcEllipsisedOption-CTvngv1F.css +34 -0
- package/dist/assets/NcEmojiPicker-BDp_Jc8K.css +554 -0
- package/dist/assets/NcHeaderButton-8c2zDKtV.css +49 -0
- package/dist/assets/NcHeaderMenu-CDlSXB2d.css +83 -0
- package/dist/assets/NcInputField-CthOpVGS.css +169 -0
- package/dist/assets/NcListItem-oz15CnUw.css +186 -0
- package/dist/assets/NcListItemIcon-d5-l-ZB1.css +72 -0
- package/dist/assets/NcMentionBubble-C6t8od-_.css +73 -0
- package/dist/assets/NcNoteCard-CImn6F9p.css +55 -0
- package/dist/assets/NcPasswordField-By-kPRJC.css +21 -0
- package/dist/assets/NcPopover-BGWT8K0v.css +99 -0
- package/dist/assets/NcRelatedResourcesPanel-CrarpPeQ.css +158 -0
- package/dist/assets/NcRichContenteditable-heb9EQV3.css +269 -0
- package/dist/assets/NcRichText-C_CIawDX.css +412 -0
- package/dist/assets/NcSelect-EIXtZSVn.css +199 -0
- package/dist/assets/NcSettingsSection-DXQyhMdq.css +53 -0
- package/dist/assets/NcTextArea-CUPKm8vZ.css +112 -0
- package/dist/assets/NcUserBubble-DE3IWeZN.css +48 -0
- package/dist/assets/NcUserStatusIcon-FLA1tQpD.css +30 -0
- package/dist/assets/index-BHBrLd2w.css +284 -0
- package/dist/assets/referencePickerModal-CZYRGXDd.css +413 -0
- package/dist/chunks/AlertCircleOutline-DoHidQlr.mjs +48 -0
- package/dist/chunks/AlertCircleOutline-DoHidQlr.mjs.map +1 -0
- package/dist/chunks/ArrowLeft-DCZ3CkUw.mjs +48 -0
- package/dist/chunks/ArrowLeft-DCZ3CkUw.mjs.map +1 -0
- package/dist/chunks/ArrowRight-CCodNfTT.mjs +48 -0
- package/dist/chunks/ArrowRight-CCodNfTT.mjs.map +1 -0
- package/dist/chunks/Check-DDuGOKMw.mjs +48 -0
- package/dist/chunks/Check-DDuGOKMw.mjs.map +1 -0
- package/dist/chunks/ChevronDown-C6gc637b.mjs +48 -0
- package/dist/chunks/ChevronDown-C6gc637b.mjs.map +1 -0
- package/dist/chunks/ChevronLeft-uQipmOWv.mjs +48 -0
- package/dist/chunks/ChevronLeft-uQipmOWv.mjs.map +1 -0
- package/dist/chunks/ChevronRight-D4KvRLyO.mjs +48 -0
- package/dist/chunks/ChevronRight-D4KvRLyO.mjs.map +1 -0
- package/dist/chunks/ChevronUp-ChH8oB7p.mjs +48 -0
- package/dist/chunks/ChevronUp-ChH8oB7p.mjs.map +1 -0
- package/dist/chunks/Close-9bmgDVZE.mjs +48 -0
- package/dist/chunks/Close-9bmgDVZE.mjs.map +1 -0
- package/dist/chunks/DotsHorizontal-bCAjz9wZ.mjs +48 -0
- package/dist/chunks/DotsHorizontal-bCAjz9wZ.mjs.map +1 -0
- package/dist/chunks/GenColors-Cw7N7vRg.mjs +133 -0
- package/dist/chunks/GenColors-Cw7N7vRg.mjs.map +1 -0
- package/dist/chunks/NcActionButton-B3JQywgv.mjs +234 -0
- package/dist/chunks/NcActionButton-B3JQywgv.mjs.map +1 -0
- package/dist/chunks/NcActionButtonGroup-DtHcJpaH.mjs +58 -0
- package/dist/chunks/NcActionButtonGroup-DtHcJpaH.mjs.map +1 -0
- package/dist/chunks/NcActionCaption-BeVuTBKE.mjs +32 -0
- package/dist/chunks/NcActionCaption-BeVuTBKE.mjs.map +1 -0
- package/dist/chunks/NcActionCheckbox-DdLcVat_.mjs +125 -0
- package/dist/chunks/NcActionCheckbox-DdLcVat_.mjs.map +1 -0
- package/dist/chunks/NcActionInput-CxPmTwTo.mjs +358 -0
- package/dist/chunks/NcActionInput-CxPmTwTo.mjs.map +1 -0
- package/dist/chunks/NcActionLink-9TfevQgn.mjs +120 -0
- package/dist/chunks/NcActionLink-9TfevQgn.mjs.map +1 -0
- package/dist/chunks/NcActionRadio-CV0AtyQD.mjs +128 -0
- package/dist/chunks/NcActionRadio-CV0AtyQD.mjs.map +1 -0
- package/dist/chunks/NcActionRouter-RKft3XO3.mjs +81 -0
- package/dist/chunks/NcActionRouter-RKft3XO3.mjs.map +1 -0
- package/dist/chunks/NcActionText-ChktUmp9.mjs +63 -0
- package/dist/chunks/NcActionText-ChktUmp9.mjs.map +1 -0
- package/dist/chunks/NcActionTextEditable-D3Iix8Je.mjs +130 -0
- package/dist/chunks/NcActionTextEditable-D3Iix8Je.mjs.map +1 -0
- package/dist/chunks/NcActions-BJ703bdY.mjs +772 -0
- package/dist/chunks/NcActions-BJ703bdY.mjs.map +1 -0
- package/dist/chunks/NcAppContent-DcqJmTNj.mjs +363 -0
- package/dist/chunks/NcAppContent-DcqJmTNj.mjs.map +1 -0
- package/dist/chunks/NcAppNavigation-DKl5GKDr.mjs +166 -0
- package/dist/chunks/NcAppNavigation-DKl5GKDr.mjs.map +1 -0
- package/dist/chunks/NcAppNavigationCaption-yvL3fHpB.mjs +97 -0
- package/dist/chunks/NcAppNavigationCaption-yvL3fHpB.mjs.map +1 -0
- package/dist/chunks/NcAppNavigationIconBullet-DXwKXzN2.mjs +43 -0
- package/dist/chunks/NcAppNavigationIconBullet-DXwKXzN2.mjs.map +1 -0
- package/dist/chunks/NcAppNavigationItem-Ba6kwsU9.mjs +623 -0
- package/dist/chunks/NcAppNavigationItem-Ba6kwsU9.mjs.map +1 -0
- package/dist/chunks/NcAppNavigationList-HRNlIV27.mjs +16 -0
- package/dist/chunks/NcAppNavigationList-HRNlIV27.mjs.map +1 -0
- package/dist/chunks/NcAppNavigationNew-D2aD0z-u.mjs +57 -0
- package/dist/chunks/NcAppNavigationNew-D2aD0z-u.mjs.map +1 -0
- package/dist/chunks/NcAppNavigationNewItem-BPYFl_Xy.mjs +120 -0
- package/dist/chunks/NcAppNavigationNewItem-BPYFl_Xy.mjs.map +1 -0
- package/dist/chunks/NcAppNavigationSearch-pTeRzg7y.mjs +104 -0
- package/dist/chunks/NcAppNavigationSearch-pTeRzg7y.mjs.map +1 -0
- package/dist/chunks/NcAppNavigationSettings-Bc4ZZ9rU.mjs +142 -0
- package/dist/chunks/NcAppNavigationSettings-Bc4ZZ9rU.mjs.map +1 -0
- package/dist/chunks/NcAppNavigationToggle-CEun9mHr.mjs +158 -0
- package/dist/chunks/NcAppNavigationToggle-CEun9mHr.mjs.map +1 -0
- package/dist/chunks/NcAppSettingsDialog-CQ1KFqAh.mjs +254 -0
- package/dist/chunks/NcAppSettingsDialog-CQ1KFqAh.mjs.map +1 -0
- package/dist/chunks/NcAppSettingsSection-BzqBBgS2.mjs +63 -0
- package/dist/chunks/NcAppSettingsSection-BzqBBgS2.mjs.map +1 -0
- package/dist/chunks/NcAppSidebar-C0VSug_j.mjs +978 -0
- package/dist/chunks/NcAppSidebar-C0VSug_j.mjs.map +1 -0
- package/dist/chunks/NcAvatar-CB2n3G0J.mjs +657 -0
- package/dist/chunks/NcAvatar-CB2n3G0J.mjs.map +1 -0
- package/dist/chunks/NcBreadcrumb-ChOkGtT6.mjs +243 -0
- package/dist/chunks/NcBreadcrumb-ChOkGtT6.mjs.map +1 -0
- package/dist/chunks/NcBreadcrumbs-CcWv0nYL.mjs +458 -0
- package/dist/chunks/NcBreadcrumbs-CcWv0nYL.mjs.map +1 -0
- package/dist/chunks/NcButton-C3eisBbK.mjs +300 -0
- package/dist/chunks/NcButton-C3eisBbK.mjs.map +1 -0
- package/dist/chunks/NcCheckboxRadioSwitch-Zndby-mL.mjs +809 -0
- package/dist/chunks/NcCheckboxRadioSwitch-Zndby-mL.mjs.map +1 -0
- package/dist/chunks/NcChip-DxejjHGT.mjs +134 -0
- package/dist/chunks/NcChip-DxejjHGT.mjs.map +1 -0
- package/dist/chunks/NcCollectionList-DckB8BUh.mjs +585 -0
- package/dist/chunks/NcCollectionList-DckB8BUh.mjs.map +1 -0
- package/dist/chunks/NcColorPicker-Bh4f-X_s.mjs +274 -0
- package/dist/chunks/NcColorPicker-Bh4f-X_s.mjs.map +1 -0
- package/dist/chunks/NcContent-CfyPkDba.mjs +130 -0
- package/dist/chunks/NcContent-CfyPkDba.mjs.map +1 -0
- package/dist/chunks/NcCounterBubble-DIOmLH9G.mjs +77 -0
- package/dist/chunks/NcCounterBubble-DIOmLH9G.mjs.map +1 -0
- package/dist/chunks/NcDashboardWidget-DC7EvOH5.mjs +184 -0
- package/dist/chunks/NcDashboardWidget-DC7EvOH5.mjs.map +1 -0
- package/dist/chunks/NcDashboardWidgetItem-Bmm83kUk.mjs +197 -0
- package/dist/chunks/NcDashboardWidgetItem-Bmm83kUk.mjs.map +1 -0
- package/dist/chunks/NcDateTime-BsCT_tyH.mjs +147 -0
- package/dist/chunks/NcDateTime-BsCT_tyH.mjs.map +1 -0
- package/dist/chunks/NcDateTimePicker-BMkjvfOV.mjs +377 -0
- package/dist/chunks/NcDateTimePicker-BMkjvfOV.mjs.map +1 -0
- package/dist/chunks/NcDateTimePickerNative-I2YJ1mqx.mjs +200 -0
- package/dist/chunks/NcDateTimePickerNative-I2YJ1mqx.mjs.map +1 -0
- package/dist/chunks/NcDialog-bRHxABY1.mjs +309 -0
- package/dist/chunks/NcDialog-bRHxABY1.mjs.map +1 -0
- package/dist/chunks/NcDialogButton.vue_vue_type_script_setup_true_lang-CBKNl2vE.mjs +117 -0
- package/dist/chunks/NcDialogButton.vue_vue_type_script_setup_true_lang-CBKNl2vE.mjs.map +1 -0
- package/dist/chunks/NcEllipsisedOption-BaL7DZ1K.mjs +105 -0
- package/dist/chunks/NcEllipsisedOption-BaL7DZ1K.mjs.map +1 -0
- package/dist/chunks/NcEmojiPicker-DIv_bq9B.mjs +380 -0
- package/dist/chunks/NcEmojiPicker-DIv_bq9B.mjs.map +1 -0
- package/dist/chunks/NcHeaderButton-DagheXHN.mjs +48 -0
- package/dist/chunks/NcHeaderButton-DagheXHN.mjs.map +1 -0
- package/dist/chunks/NcHeaderMenu-DWrnJYhw.mjs +260 -0
- package/dist/chunks/NcHeaderMenu-DWrnJYhw.mjs.map +1 -0
- package/dist/chunks/NcInputConfirmCancel-CHdSVEcQ.mjs +116 -0
- package/dist/chunks/NcInputConfirmCancel-CHdSVEcQ.mjs.map +1 -0
- package/dist/chunks/NcInputField-BMtTTtl5.mjs +305 -0
- package/dist/chunks/NcInputField-BMtTTtl5.mjs.map +1 -0
- package/dist/chunks/NcListItem-D04-5zRU.mjs +381 -0
- package/dist/chunks/NcListItem-D04-5zRU.mjs.map +1 -0
- package/dist/chunks/NcListItemIcon-DcBo1GLm.mjs +208 -0
- package/dist/chunks/NcListItemIcon-DcBo1GLm.mjs.map +1 -0
- package/dist/chunks/NcNoteCard-BwQvZ3pf.mjs +275 -0
- package/dist/chunks/NcNoteCard-BwQvZ3pf.mjs.map +1 -0
- package/dist/chunks/NcPasswordField-OK30bZq8.mjs +298 -0
- package/dist/chunks/NcPasswordField-OK30bZq8.mjs.map +1 -0
- package/dist/chunks/NcPopover-Cmspgso4.mjs +259 -0
- package/dist/chunks/NcPopover-Cmspgso4.mjs.map +1 -0
- package/dist/chunks/NcRelatedResourcesPanel-DvA5dHwS.mjs +546 -0
- package/dist/chunks/NcRelatedResourcesPanel-DvA5dHwS.mjs.map +1 -0
- package/dist/chunks/NcRichContenteditable-s2Cz698X.mjs +740 -0
- package/dist/chunks/NcRichContenteditable-s2Cz698X.mjs.map +1 -0
- package/dist/chunks/NcRichText-DeQGaF-c.mjs +445 -0
- package/dist/chunks/NcRichText-DeQGaF-c.mjs.map +1 -0
- package/dist/chunks/NcSelect-J_CQazCj.mjs +577 -0
- package/dist/chunks/NcSelect-J_CQazCj.mjs.map +1 -0
- package/dist/chunks/NcSelectTags-BZ22veGg.mjs +302 -0
- package/dist/chunks/NcSelectTags-BZ22veGg.mjs.map +1 -0
- package/dist/chunks/NcSettingsInputText-Bjw2RqKu.mjs +122 -0
- package/dist/chunks/NcSettingsInputText-Bjw2RqKu.mjs.map +1 -0
- package/dist/chunks/NcSettingsSection-MATJGEoF.mjs +115 -0
- package/dist/chunks/NcSettingsSection-MATJGEoF.mjs.map +1 -0
- package/dist/chunks/NcSettingsSelectGroup-iglfU6Rr.mjs +226 -0
- package/dist/chunks/NcSettingsSelectGroup-iglfU6Rr.mjs.map +1 -0
- package/dist/chunks/NcTextArea-D_kk5GuX.mjs +216 -0
- package/dist/chunks/NcTextArea-D_kk5GuX.mjs.map +1 -0
- package/dist/chunks/NcTextField-XbpY0pop.mjs +173 -0
- package/dist/chunks/NcTextField-XbpY0pop.mjs.map +1 -0
- package/dist/chunks/NcTimezonePicker-CMpvPeCI.mjs +187 -0
- package/dist/chunks/NcTimezonePicker-CMpvPeCI.mjs.map +1 -0
- package/dist/chunks/NcUserBubble-DJFSxKtO.mjs +227 -0
- package/dist/chunks/NcUserBubble-DJFSxKtO.mjs.map +1 -0
- package/dist/chunks/NcUserStatusIcon-DjoGxkTB.mjs +135 -0
- package/dist/chunks/NcUserStatusIcon-DjoGxkTB.mjs.map +1 -0
- package/dist/chunks/ScopeComponent-77f9B57X.mjs +14 -0
- package/dist/chunks/ScopeComponent-77f9B57X.mjs.map +1 -0
- package/dist/chunks/_l10n-D7WwrqS-.mjs +126 -0
- package/dist/chunks/_l10n-D7WwrqS-.mjs.map +1 -0
- package/dist/chunks/emoji-BY_D0V5K.mjs +64 -0
- package/dist/chunks/emoji-BY_D0V5K.mjs.map +1 -0
- package/dist/chunks/index-CrKUsc__.mjs +116 -0
- package/dist/chunks/index-CrKUsc__.mjs.map +1 -0
- package/dist/chunks/index-CtB0UiwH.mjs +186 -0
- package/dist/chunks/index-CtB0UiwH.mjs.map +1 -0
- package/dist/chunks/referencePickerModal-DPmXigHR.mjs +1362 -0
- package/dist/chunks/referencePickerModal-DPmXigHR.mjs.map +1 -0
- package/dist/chunks/usernameToColor-CgZYBI2J.mjs +26 -0
- package/dist/chunks/usernameToColor-CgZYBI2J.mjs.map +1 -0
- package/dist/components/NcActionButton/NcActionButton.vue.d.ts +16 -10
- package/dist/components/NcActionButton/index.mjs +4 -0
- package/dist/components/NcActionButton/index.mjs.map +1 -0
- package/dist/components/NcActionButtonGroup/NcActionButtonGroup.vue.d.ts +5 -5
- package/dist/components/NcActionButtonGroup/index.mjs +4 -0
- package/dist/components/NcActionButtonGroup/index.mjs.map +1 -0
- package/dist/components/NcActionCaption/NcActionCaption.vue.d.ts +3 -3
- package/dist/components/NcActionCaption/index.mjs +4 -0
- package/dist/components/NcActionCaption/index.mjs.map +1 -0
- package/dist/components/NcActionCheckbox/NcActionCheckbox.vue.d.ts +7 -7
- package/dist/components/NcActionCheckbox/index.mjs +4 -0
- package/dist/components/NcActionCheckbox/index.mjs.map +1 -0
- package/dist/components/NcActionInput/index.mjs +4 -0
- package/dist/components/NcActionInput/index.mjs.map +1 -0
- package/dist/components/NcActionLink/index.mjs +4 -0
- package/dist/components/NcActionLink/index.mjs.map +1 -0
- package/dist/components/NcActionRadio/NcActionRadio.vue.d.ts +7 -7
- package/dist/components/NcActionRadio/index.mjs +4 -0
- package/dist/components/NcActionRadio/index.mjs.map +1 -0
- package/dist/components/NcActionRouter/NcActionRouter.vue.d.ts +4 -4
- package/dist/components/NcActionRouter/index.mjs +4 -0
- package/dist/components/NcActionRouter/index.mjs.map +1 -0
- package/dist/components/NcActionSeparator/NcActionSeparator.vue.d.ts +1 -1
- package/dist/components/NcActionSeparator/index.mjs +4 -0
- package/dist/components/NcActionSeparator/index.mjs.map +1 -0
- package/dist/components/NcActionText/NcActionText.vue.d.ts +1 -1
- package/dist/components/NcActionText/index.mjs +4 -0
- package/dist/components/NcActionText/index.mjs.map +1 -0
- package/dist/components/NcActionTextEditable/NcActionTextEditable.vue.d.ts +8 -6
- package/dist/components/NcActionTextEditable/index.mjs +4 -0
- package/dist/components/NcActionTextEditable/index.mjs.map +1 -0
- package/dist/components/NcActions/NcActions.vue.d.ts +167 -12
- package/dist/components/NcActions/index.mjs +4 -0
- package/dist/components/NcActions/index.mjs.map +1 -0
- package/dist/components/NcAppContent/index.mjs +4 -0
- package/dist/components/NcAppContent/index.mjs.map +1 -0
- package/dist/components/NcAppContentDetails/NcAppContentDetails.vue.d.ts +1 -1
- package/dist/components/NcAppContentDetails/index.mjs +4 -0
- package/dist/components/NcAppContentDetails/index.mjs.map +1 -0
- package/dist/components/NcAppContentList/NcAppContentList.vue.d.ts +4 -4
- package/dist/components/NcAppContentList/index.mjs +4 -0
- package/dist/components/NcAppContentList/index.mjs.map +1 -0
- package/dist/components/NcAppNavigation/NcAppNavigation.vue.d.ts +165 -6
- package/dist/components/NcAppNavigation/index.mjs +4 -0
- package/dist/components/NcAppNavigation/index.mjs.map +1 -0
- package/dist/components/NcAppNavigationCaption/NcAppNavigationCaption.vue.d.ts +376 -71
- package/dist/components/NcAppNavigationCaption/index.mjs +4 -0
- package/dist/components/NcAppNavigationCaption/index.mjs.map +1 -0
- package/dist/components/NcAppNavigationIconBullet/NcAppNavigationIconBullet.vue.d.ts +5 -5
- package/dist/components/NcAppNavigationIconBullet/index.mjs +4 -0
- package/dist/components/NcAppNavigationIconBullet/index.mjs.map +1 -0
- package/dist/components/NcAppNavigationItem/NcAppNavigationIconCollapsible.vue.d.ts +145 -5
- package/dist/components/NcAppNavigationItem/NcAppNavigationItem.vue.d.ts +908 -19
- package/dist/components/NcAppNavigationItem/NcInputConfirmCancel.vue.d.ts +147 -7
- package/dist/components/NcAppNavigationItem/index.mjs +4 -0
- package/dist/components/NcAppNavigationItem/index.mjs.map +1 -0
- package/dist/components/NcAppNavigationList/NcAppNavigationList.vue.d.ts +1 -1
- package/dist/components/NcAppNavigationList/index.mjs +4 -0
- package/dist/components/NcAppNavigationList/index.mjs.map +1 -0
- package/dist/components/NcAppNavigationNew/NcAppNavigationNew.vue.d.ts +144 -6
- package/dist/components/NcAppNavigationNew/index.mjs +4 -0
- package/dist/components/NcAppNavigationNew/index.mjs.map +1 -0
- package/dist/components/NcAppNavigationNewItem/NcAppNavigationNewItem.vue.d.ts +228 -5
- package/dist/components/NcAppNavigationNewItem/index.mjs +4 -0
- package/dist/components/NcAppNavigationNewItem/index.mjs.map +1 -0
- package/dist/components/NcAppNavigationSearch/NcAppNavigationSearch.vue.d.ts +388 -0
- package/dist/components/NcAppNavigationSearch/index.d.ts +5 -0
- package/dist/components/NcAppNavigationSearch/index.mjs +4 -0
- package/dist/components/NcAppNavigationSearch/index.mjs.map +1 -0
- package/dist/components/NcAppNavigationSettings/index.mjs +4 -0
- package/dist/components/NcAppNavigationSettings/index.mjs.map +1 -0
- package/dist/components/NcAppNavigationSpacer/NcAppNavigationSpacer.vue.d.ts +1 -1
- package/dist/components/NcAppNavigationSpacer/index.mjs +4 -0
- package/dist/components/NcAppNavigationSpacer/index.mjs.map +1 -0
- package/dist/components/NcAppNavigationToggle/NcAppNavigationToggle.vue.d.ts +144 -4
- package/dist/components/NcAppNavigationToggle/index.mjs +5 -0
- package/dist/components/NcAppNavigationToggle/index.mjs.map +1 -0
- package/dist/components/NcAppSettingsDialog/index.mjs +4 -0
- package/dist/components/NcAppSettingsDialog/index.mjs.map +1 -0
- package/dist/components/NcAppSettingsSection/NcAppSettingsSection.vue.d.ts +3 -3
- package/dist/components/NcAppSettingsSection/index.mjs +4 -0
- package/dist/components/NcAppSettingsSection/index.mjs.map +1 -0
- package/dist/components/NcAppSidebar/NcAppSidebarTabs.vue.d.ts +41 -5
- package/dist/components/NcAppSidebar/index.mjs +4 -0
- package/dist/components/NcAppSidebar/index.mjs.map +1 -0
- package/dist/components/NcAppSidebarTab/NcAppSidebarTab.vue.d.ts +5 -5
- package/dist/components/NcAppSidebarTab/index.mjs +4 -0
- package/dist/components/NcAppSidebarTab/index.mjs.map +1 -0
- package/dist/components/NcAvatar/index.mjs +4 -0
- package/dist/components/NcAvatar/index.mjs.map +1 -0
- package/dist/components/NcBreadcrumb/NcBreadcrumb.vue.d.ts +516 -14
- package/dist/components/NcBreadcrumb/index.mjs +4 -0
- package/dist/components/NcBreadcrumb/index.mjs.map +1 -0
- package/dist/components/NcBreadcrumbs/NcBreadcrumbs.vue.d.ts +1177 -5
- package/dist/components/NcBreadcrumbs/index.mjs +4 -0
- package/dist/components/NcBreadcrumbs/index.mjs.map +1 -0
- package/dist/components/NcButton/NcButton.vue.d.ts +66 -31
- package/dist/components/NcButton/index.d.ts +1 -0
- package/dist/components/NcButton/index.mjs +7 -0
- package/dist/components/NcButton/index.mjs.map +1 -0
- package/dist/components/NcButton/types.d.ts +30 -0
- package/dist/components/NcCheckboxRadioSwitch/index.mjs +4 -0
- package/dist/components/NcCheckboxRadioSwitch/index.mjs.map +1 -0
- package/dist/components/NcChip/NcChip.vue.d.ts +31 -19
- package/dist/components/NcChip/index.mjs +4 -0
- package/dist/components/NcChip/index.mjs.map +1 -0
- package/dist/components/NcCollectionList/index.d.ts +1 -0
- package/dist/components/NcCollectionList/index.mjs +4 -0
- package/dist/components/NcCollectionList/index.mjs.map +1 -0
- package/dist/components/NcCollectionList/service.d.ts +47 -0
- package/dist/components/NcCollectionList/useCollections.d.ts +31 -0
- package/dist/components/NcColorPicker/index.mjs +4 -0
- package/dist/components/NcColorPicker/index.mjs.map +1 -0
- package/dist/components/NcContent/NcContent.vue.d.ts +207 -4
- package/dist/components/NcContent/index.mjs +4 -0
- package/dist/components/NcContent/index.mjs.map +1 -0
- package/dist/components/NcCounterBubble/NcCounterBubble.vue.d.ts +38 -5
- package/dist/components/NcCounterBubble/index.mjs +4 -0
- package/dist/components/NcCounterBubble/index.mjs.map +1 -0
- package/dist/components/NcDashboardWidget/index.mjs +4 -0
- package/dist/components/NcDashboardWidget/index.mjs.map +1 -0
- package/dist/components/NcDashboardWidgetItem/index.mjs +4 -0
- package/dist/components/NcDashboardWidgetItem/index.mjs.map +1 -0
- package/dist/components/NcDateTime/index.mjs +4 -0
- package/dist/components/NcDateTime/index.mjs.map +1 -0
- package/dist/components/NcDateTimePicker/index.mjs +4 -0
- package/dist/components/NcDateTimePicker/index.mjs.map +1 -0
- package/dist/components/NcDateTimePickerNative/index.mjs +4 -0
- package/dist/components/NcDateTimePickerNative/index.mjs.map +1 -0
- package/dist/components/NcDialog/NcDialog.vue.d.ts +508 -1
- package/dist/components/NcDialog/index.mjs +4 -0
- package/dist/components/NcDialog/index.mjs.map +1 -0
- package/dist/components/NcDialogButton/NcDialogButton.vue.d.ts +134 -1
- package/dist/components/NcDialogButton/index.d.ts +4 -0
- package/dist/components/NcDialogButton/index.mjs +4 -0
- package/dist/components/NcDialogButton/index.mjs.map +1 -0
- package/dist/components/NcEllipsisedOption/NcEllipsisedOption.vue.d.ts +43 -8
- package/dist/components/NcEllipsisedOption/index.mjs +4 -0
- package/dist/components/NcEllipsisedOption/index.mjs.map +1 -0
- package/dist/components/NcEmojiPicker/NcEmojiPicker.vue.d.ts +451 -6
- package/dist/components/NcEmojiPicker/index.mjs +4 -0
- package/dist/components/NcEmojiPicker/index.mjs.map +1 -0
- package/dist/components/NcEmptyContent/NcEmptyContent.vue.d.ts +4 -4
- package/dist/components/NcEmptyContent/index.mjs +4 -0
- package/dist/components/NcEmptyContent/index.mjs.map +1 -0
- package/dist/components/NcGuestContent/NcGuestContent.vue.d.ts +1 -1
- package/dist/components/NcGuestContent/index.mjs +4 -0
- package/dist/components/NcGuestContent/index.mjs.map +1 -0
- package/dist/components/NcHeaderButton/NcHeaderButton.vue.d.ts +38 -0
- package/dist/components/NcHeaderButton/index.d.ts +5 -0
- package/dist/components/NcHeaderButton/index.mjs +4 -0
- package/dist/components/NcHeaderButton/index.mjs.map +1 -0
- package/dist/components/NcHeaderMenu/index.mjs +4 -0
- package/dist/components/NcHeaderMenu/index.mjs.map +1 -0
- package/dist/components/NcHighlight/NcHighlight.vue.d.ts +4 -4
- package/dist/components/NcHighlight/index.mjs +4 -0
- package/dist/components/NcHighlight/index.mjs.map +1 -0
- package/dist/components/NcIconSvgWrapper/NcIconSvgWrapper.vue.d.ts +8 -8
- package/dist/components/NcIconSvgWrapper/index.mjs +4 -0
- package/dist/components/NcIconSvgWrapper/index.mjs.map +1 -0
- package/dist/components/NcInputField/NcInputField.vue.d.ts +155 -15
- package/dist/components/NcInputField/index.mjs +4 -0
- package/dist/components/NcInputField/index.mjs.map +1 -0
- package/dist/components/NcListItem/NcListItem.vue.d.ts +464 -15
- package/dist/components/NcListItem/index.mjs +4 -0
- package/dist/components/NcListItem/index.mjs.map +1 -0
- package/dist/components/NcListItemIcon/index.mjs +4 -0
- package/dist/components/NcListItemIcon/index.mjs.map +1 -0
- package/dist/components/NcLoadingIcon/NcLoadingIcon.vue.d.ts +4 -4
- package/dist/components/NcLoadingIcon/index.mjs +4 -0
- package/dist/components/NcLoadingIcon/index.mjs.map +1 -0
- package/dist/components/NcModal/index.mjs +775 -0
- package/dist/components/NcModal/index.mjs.map +1 -0
- package/dist/components/NcNoteCard/NcNoteCard.vue.d.ts +40 -7
- package/dist/components/NcNoteCard/index.mjs +4 -0
- package/dist/components/NcNoteCard/index.mjs.map +1 -0
- package/dist/components/NcPasswordField/index.mjs +4 -0
- package/dist/components/NcPasswordField/index.mjs.map +1 -0
- package/dist/components/NcPopover/NcPopoverTriggerProvider.vue.d.ts +12 -6
- package/dist/components/NcPopover/index.mjs +4 -0
- package/dist/components/NcPopover/index.mjs.map +1 -0
- package/dist/components/NcProgressBar/index.mjs +4 -0
- package/dist/components/NcProgressBar/index.mjs.map +1 -0
- package/dist/components/NcRelatedResourcesPanel/NcRelatedResourcesPanel.vue.d.ts +420 -9
- package/dist/components/NcRelatedResourcesPanel/NcResource.vue.d.ts +141 -3
- package/dist/components/NcRelatedResourcesPanel/NcTeamResources.vue.d.ts +208 -4
- package/dist/components/NcRelatedResourcesPanel/index.mjs +4 -0
- package/dist/components/NcRelatedResourcesPanel/index.mjs.map +1 -0
- package/dist/components/NcRichContenteditable/NcAutoCompleteResult.vue.d.ts +14 -12
- package/dist/components/NcRichContenteditable/NcMentionBubble.vue.d.ts +80 -1
- package/dist/components/NcRichContenteditable/index.mjs +7 -0
- package/dist/components/NcRichContenteditable/index.mjs.map +1 -0
- package/dist/components/NcRichText/NcReferenceList.vue.d.ts +220 -10
- package/dist/components/NcRichText/NcReferencePicker/NcCustomPickerElement.vue.d.ts +6 -6
- package/dist/components/NcRichText/NcReferencePicker/NcRawLinkInput.vue.d.ts +574 -4
- package/dist/components/NcRichText/NcReferencePicker/NcSearchResult.vue.d.ts +38 -3
- package/dist/components/NcRichText/NcReferenceWidget.vue.d.ts +145 -7
- package/dist/components/NcRichText/NcRichText.vue.d.ts +308 -8
- package/dist/components/NcRichText/autolink.d.ts +0 -1
- package/dist/components/NcRichText/index.mjs +26 -0
- package/dist/components/NcRichText/index.mjs.map +1 -0
- package/dist/components/NcSavingIndicatorIcon/NcSavingIndicatorIcon.vue.d.ts +6 -6
- package/dist/components/NcSavingIndicatorIcon/index.mjs +4 -0
- package/dist/components/NcSavingIndicatorIcon/index.mjs.map +1 -0
- package/dist/components/NcSelect/index.mjs +4 -0
- package/dist/components/NcSelect/index.mjs.map +1 -0
- package/dist/components/NcSelectTags/index.mjs +4 -0
- package/dist/components/NcSelectTags/index.mjs.map +1 -0
- package/dist/components/NcSettingsInputText/NcSettingsInputText.vue.d.ts +6 -6
- package/dist/components/NcSettingsInputText/index.mjs +4 -0
- package/dist/components/NcSettingsInputText/index.mjs.map +1 -0
- package/dist/components/NcSettingsSection/NcSettingsSection.vue.d.ts +6 -4
- package/dist/components/NcSettingsSection/index.mjs +4 -0
- package/dist/components/NcSettingsSection/index.mjs.map +1 -0
- package/dist/components/NcSettingsSelectGroup/index.mjs +5 -0
- package/dist/components/NcSettingsSelectGroup/index.mjs.map +1 -0
- package/dist/components/NcTextArea/NcTextArea.vue.d.ts +12 -9
- package/dist/components/NcTextArea/index.mjs +4 -0
- package/dist/components/NcTextArea/index.mjs.map +1 -0
- package/dist/components/NcTextField/NcTextField.vue.d.ts +295 -2
- package/dist/components/NcTextField/index.mjs +4 -0
- package/dist/components/NcTextField/index.mjs.map +1 -0
- package/dist/components/NcTimezonePicker/index.mjs +4 -0
- package/dist/components/NcTimezonePicker/index.mjs.map +1 -0
- package/dist/components/NcUserBubble/NcUserBubbleDiv.vue.d.ts +1 -1
- package/dist/components/NcUserBubble/index.mjs +4 -0
- package/dist/components/NcUserBubble/index.mjs.map +1 -0
- package/dist/components/NcUserStatusIcon/index.mjs +4 -0
- package/dist/components/NcUserStatusIcon/index.mjs.map +1 -0
- package/dist/components/NcVNodes/NcVNodes.vue.d.ts +7 -7
- package/dist/components/NcVNodes/index.mjs.map +1 -0
- package/dist/components/index.d.ts +3 -0
- package/dist/composables/index.d.ts +2 -0
- package/dist/composables/useFormatDateTime.d.ts +49 -21
- package/dist/composables/useHotKey/index.d.ts +7 -0
- package/dist/composables/useHotKey/index.mjs +69 -0
- package/dist/composables/useHotKey/index.mjs.map +1 -0
- package/dist/composables/useIsDarkTheme/index.d.ts +15 -0
- package/dist/composables/useIsDarkTheme/index.mjs +18 -0
- package/dist/composables/useIsDarkTheme/index.mjs.map +1 -0
- package/dist/composables/useIsFullscreen/index.mjs.map +1 -0
- package/dist/composables/useIsMobile/index.d.ts +1 -1
- package/dist/composables/useIsMobile/index.mjs.map +1 -0
- package/dist/directives/Focus/index.mjs.map +1 -0
- package/dist/directives/Linkify/index.mjs +10 -0
- package/dist/directives/Linkify/index.mjs.map +1 -0
- package/dist/directives/Tooltip/index.mjs +11 -0
- package/dist/directives/Tooltip/index.mjs.map +1 -0
- package/dist/functions/a11y/index.mjs.map +1 -0
- package/dist/functions/dialog/index.d.ts +17 -0
- package/dist/functions/dialog/index.mjs +23 -0
- package/dist/functions/dialog/index.mjs.map +1 -0
- package/dist/functions/emoji/emoji.d.ts +21 -8
- package/dist/functions/emoji/index.mjs +8 -0
- package/dist/functions/emoji/index.mjs.map +1 -0
- package/dist/functions/index.d.ts +6 -0
- package/dist/functions/isDarkTheme/index.d.ts +17 -0
- package/dist/functions/isDarkTheme/index.mjs +12 -0
- package/dist/functions/isDarkTheme/index.mjs.map +1 -0
- package/dist/functions/reference/index.d.ts +0 -1
- package/dist/functions/reference/index.mjs +18 -0
- package/dist/functions/reference/index.mjs.map +1 -0
- package/dist/functions/registerReference/index.mjs +13 -0
- package/dist/functions/registerReference/index.mjs.map +1 -0
- package/dist/functions/usernameToColor/index.mjs +4 -0
- package/dist/functions/usernameToColor/index.mjs.map +1 -0
- package/dist/functions/usernameToColor/usernameToColor.d.ts +7 -2
- package/dist/index.d.ts +1 -2
- package/dist/index.mjs +189 -274
- package/dist/index.mjs.map +1 -1
- package/dist/mixins/clickOutsideOptions/index.d.ts +1 -1
- package/dist/mixins/clickOutsideOptions/index.mjs.map +1 -0
- package/dist/mixins/richEditor/index.mjs +10 -0
- package/dist/mixins/richEditor/index.mjs.map +1 -0
- package/dist/utils/GenColors.d.ts +2 -2
- package/dist/utils/VueTypes.d.ts +2 -0
- package/dist/utils/isSlotPopulated.d.ts +0 -1
- package/dist/vendor.LICENSE.txt +1 -1
- package/package.json +55 -53
- package/dist/Components/NcActionButton.mjs +0 -4
- package/dist/Components/NcActionButton.mjs.map +0 -1
- package/dist/Components/NcActionButtonGroup.mjs +0 -4
- package/dist/Components/NcActionButtonGroup.mjs.map +0 -1
- package/dist/Components/NcActionCaption.mjs +0 -4
- package/dist/Components/NcActionCaption.mjs.map +0 -1
- package/dist/Components/NcActionCheckbox.mjs +0 -4
- package/dist/Components/NcActionCheckbox.mjs.map +0 -1
- package/dist/Components/NcActionInput.mjs +0 -4
- package/dist/Components/NcActionInput.mjs.map +0 -1
- package/dist/Components/NcActionLink.mjs +0 -4
- package/dist/Components/NcActionLink.mjs.map +0 -1
- package/dist/Components/NcActionRadio.mjs +0 -4
- package/dist/Components/NcActionRadio.mjs.map +0 -1
- package/dist/Components/NcActionRouter.mjs +0 -4
- package/dist/Components/NcActionRouter.mjs.map +0 -1
- package/dist/Components/NcActionSeparator.mjs +0 -4
- package/dist/Components/NcActionSeparator.mjs.map +0 -1
- package/dist/Components/NcActionText.mjs +0 -4
- package/dist/Components/NcActionText.mjs.map +0 -1
- package/dist/Components/NcActionTextEditable.mjs +0 -4
- package/dist/Components/NcActionTextEditable.mjs.map +0 -1
- package/dist/Components/NcActions.mjs +0 -4
- package/dist/Components/NcActions.mjs.map +0 -1
- package/dist/Components/NcAppContent.mjs +0 -4
- package/dist/Components/NcAppContent.mjs.map +0 -1
- package/dist/Components/NcAppContentDetails.mjs +0 -4
- package/dist/Components/NcAppContentDetails.mjs.map +0 -1
- package/dist/Components/NcAppContentList.mjs +0 -4
- package/dist/Components/NcAppContentList.mjs.map +0 -1
- package/dist/Components/NcAppNavigation.mjs +0 -4
- package/dist/Components/NcAppNavigation.mjs.map +0 -1
- package/dist/Components/NcAppNavigationCaption.mjs +0 -4
- package/dist/Components/NcAppNavigationCaption.mjs.map +0 -1
- package/dist/Components/NcAppNavigationIconBullet.mjs +0 -4
- package/dist/Components/NcAppNavigationIconBullet.mjs.map +0 -1
- package/dist/Components/NcAppNavigationItem.mjs +0 -4
- package/dist/Components/NcAppNavigationItem.mjs.map +0 -1
- package/dist/Components/NcAppNavigationList.mjs +0 -4
- package/dist/Components/NcAppNavigationList.mjs.map +0 -1
- package/dist/Components/NcAppNavigationNew.mjs +0 -4
- package/dist/Components/NcAppNavigationNew.mjs.map +0 -1
- package/dist/Components/NcAppNavigationNewItem.mjs +0 -4
- package/dist/Components/NcAppNavigationNewItem.mjs.map +0 -1
- package/dist/Components/NcAppNavigationSettings.mjs +0 -4
- package/dist/Components/NcAppNavigationSettings.mjs.map +0 -1
- package/dist/Components/NcAppNavigationSpacer.mjs +0 -4
- package/dist/Components/NcAppNavigationSpacer.mjs.map +0 -1
- package/dist/Components/NcAppNavigationToggle.mjs +0 -5
- package/dist/Components/NcAppNavigationToggle.mjs.map +0 -1
- package/dist/Components/NcAppSettingsDialog.mjs +0 -4
- package/dist/Components/NcAppSettingsDialog.mjs.map +0 -1
- package/dist/Components/NcAppSettingsSection.mjs +0 -4
- package/dist/Components/NcAppSettingsSection.mjs.map +0 -1
- package/dist/Components/NcAppSidebar.mjs +0 -4
- package/dist/Components/NcAppSidebar.mjs.map +0 -1
- package/dist/Components/NcAppSidebarTab.mjs +0 -4
- package/dist/Components/NcAppSidebarTab.mjs.map +0 -1
- package/dist/Components/NcAvatar.mjs +0 -4
- package/dist/Components/NcAvatar.mjs.map +0 -1
- package/dist/Components/NcBreadcrumb.mjs +0 -4
- package/dist/Components/NcBreadcrumb.mjs.map +0 -1
- package/dist/Components/NcBreadcrumbs.mjs +0 -4
- package/dist/Components/NcBreadcrumbs.mjs.map +0 -1
- package/dist/Components/NcButton.mjs +0 -4
- package/dist/Components/NcButton.mjs.map +0 -1
- package/dist/Components/NcCheckboxRadioSwitch.mjs +0 -4
- package/dist/Components/NcCheckboxRadioSwitch.mjs.map +0 -1
- package/dist/Components/NcChip.mjs +0 -4
- package/dist/Components/NcChip.mjs.map +0 -1
- package/dist/Components/NcColorPicker.mjs +0 -4
- package/dist/Components/NcColorPicker.mjs.map +0 -1
- package/dist/Components/NcContent.mjs +0 -4
- package/dist/Components/NcContent.mjs.map +0 -1
- package/dist/Components/NcCounterBubble.mjs +0 -4
- package/dist/Components/NcCounterBubble.mjs.map +0 -1
- package/dist/Components/NcDashboardWidget.mjs +0 -4
- package/dist/Components/NcDashboardWidget.mjs.map +0 -1
- package/dist/Components/NcDashboardWidgetItem.mjs +0 -4
- package/dist/Components/NcDashboardWidgetItem.mjs.map +0 -1
- package/dist/Components/NcDateTime.mjs +0 -4
- package/dist/Components/NcDateTime.mjs.map +0 -1
- package/dist/Components/NcDateTimePicker.mjs +0 -4
- package/dist/Components/NcDateTimePicker.mjs.map +0 -1
- package/dist/Components/NcDateTimePickerNative.mjs +0 -4
- package/dist/Components/NcDateTimePickerNative.mjs.map +0 -1
- package/dist/Components/NcDialog.mjs +0 -4
- package/dist/Components/NcDialog.mjs.map +0 -1
- package/dist/Components/NcDialogButton.mjs +0 -4
- package/dist/Components/NcDialogButton.mjs.map +0 -1
- package/dist/Components/NcEllipsisedOption.mjs +0 -4
- package/dist/Components/NcEllipsisedOption.mjs.map +0 -1
- package/dist/Components/NcEmojiPicker.mjs +0 -4
- package/dist/Components/NcEmojiPicker.mjs.map +0 -1
- package/dist/Components/NcEmptyContent.mjs +0 -4
- package/dist/Components/NcEmptyContent.mjs.map +0 -1
- package/dist/Components/NcGuestContent.mjs +0 -4
- package/dist/Components/NcGuestContent.mjs.map +0 -1
- package/dist/Components/NcHeaderMenu.mjs +0 -4
- package/dist/Components/NcHeaderMenu.mjs.map +0 -1
- package/dist/Components/NcHighlight.mjs +0 -4
- package/dist/Components/NcHighlight.mjs.map +0 -1
- package/dist/Components/NcIconSvgWrapper.mjs +0 -4
- package/dist/Components/NcIconSvgWrapper.mjs.map +0 -1
- package/dist/Components/NcInputField.mjs +0 -4
- package/dist/Components/NcInputField.mjs.map +0 -1
- package/dist/Components/NcListItem.mjs +0 -4
- package/dist/Components/NcListItem.mjs.map +0 -1
- package/dist/Components/NcListItemIcon.mjs +0 -4
- package/dist/Components/NcListItemIcon.mjs.map +0 -1
- package/dist/Components/NcLoadingIcon.mjs +0 -4
- package/dist/Components/NcLoadingIcon.mjs.map +0 -1
- package/dist/Components/NcModal.mjs +0 -783
- package/dist/Components/NcModal.mjs.map +0 -1
- package/dist/Components/NcNoteCard.mjs +0 -4
- package/dist/Components/NcNoteCard.mjs.map +0 -1
- package/dist/Components/NcPasswordField.mjs +0 -4
- package/dist/Components/NcPasswordField.mjs.map +0 -1
- package/dist/Components/NcPopover.mjs +0 -4
- package/dist/Components/NcPopover.mjs.map +0 -1
- package/dist/Components/NcProgressBar.mjs +0 -4
- package/dist/Components/NcProgressBar.mjs.map +0 -1
- package/dist/Components/NcRelatedResourcesPanel.mjs +0 -4
- package/dist/Components/NcRelatedResourcesPanel.mjs.map +0 -1
- package/dist/Components/NcRichContenteditable.mjs +0 -7
- package/dist/Components/NcRichContenteditable.mjs.map +0 -1
- package/dist/Components/NcRichText.mjs +0 -26
- package/dist/Components/NcRichText.mjs.map +0 -1
- package/dist/Components/NcSavingIndicatorIcon.mjs +0 -4
- package/dist/Components/NcSavingIndicatorIcon.mjs.map +0 -1
- package/dist/Components/NcSelect.mjs +0 -4
- package/dist/Components/NcSelect.mjs.map +0 -1
- package/dist/Components/NcSelectTags.mjs +0 -4
- package/dist/Components/NcSelectTags.mjs.map +0 -1
- package/dist/Components/NcSettingsInputText.mjs +0 -4
- package/dist/Components/NcSettingsInputText.mjs.map +0 -1
- package/dist/Components/NcSettingsSection.mjs +0 -4
- package/dist/Components/NcSettingsSection.mjs.map +0 -1
- package/dist/Components/NcSettingsSelectGroup.mjs +0 -5
- package/dist/Components/NcSettingsSelectGroup.mjs.map +0 -1
- package/dist/Components/NcTextArea.mjs +0 -4
- package/dist/Components/NcTextArea.mjs.map +0 -1
- package/dist/Components/NcTextField.mjs +0 -4
- package/dist/Components/NcTextField.mjs.map +0 -1
- package/dist/Components/NcTimezonePicker.mjs +0 -4
- package/dist/Components/NcTimezonePicker.mjs.map +0 -1
- package/dist/Components/NcUserBubble.mjs +0 -4
- package/dist/Components/NcUserBubble.mjs.map +0 -1
- package/dist/Components/NcUserStatusIcon.mjs +0 -4
- package/dist/Components/NcUserStatusIcon.mjs.map +0 -1
- package/dist/Components/NcVNodes.mjs.map +0 -1
- package/dist/Composables/useIsFullscreen.mjs.map +0 -1
- package/dist/Composables/useIsMobile.mjs.map +0 -1
- package/dist/Directives/Focus.mjs.map +0 -1
- package/dist/Directives/Linkify.mjs +0 -10
- package/dist/Directives/Linkify.mjs.map +0 -1
- package/dist/Directives/Tooltip.mjs +0 -11
- package/dist/Directives/Tooltip.mjs.map +0 -1
- package/dist/Functions/a11y.mjs.map +0 -1
- package/dist/Functions/emoji.mjs +0 -8
- package/dist/Functions/emoji.mjs.map +0 -1
- package/dist/Functions/reference.mjs +0 -18
- package/dist/Functions/reference.mjs.map +0 -1
- package/dist/Functions/registerReference.mjs +0 -13
- package/dist/Functions/registerReference.mjs.map +0 -1
- package/dist/Functions/usernameToColor.mjs +0 -4
- package/dist/Functions/usernameToColor.mjs.map +0 -1
- package/dist/Mixins/clickOutsideOptions.mjs.map +0 -1
- package/dist/Mixins/richEditor.mjs +0 -10
- package/dist/Mixins/richEditor.mjs.map +0 -1
- package/dist/assets/NcActionButton-tvMk0Dz-.css +0 -107
- package/dist/assets/NcActionCaption-D-VXTPLI.css +0 -32
- package/dist/assets/NcActionCheckbox-DzmNTqwC.css +0 -78
- package/dist/assets/NcActionInput-4qR5N5lV.css +0 -222
- package/dist/assets/NcActionLink-Djp7wPGg.css +0 -92
- package/dist/assets/NcActionRadio-ZRQheAZT.css +0 -78
- package/dist/assets/NcActionRouter-B0l-dISs.css +0 -103
- package/dist/assets/NcActionText-Ip9hRt85.css +0 -107
- package/dist/assets/NcActionTextEditable-1JPkW_4o.css +0 -238
- package/dist/assets/NcActions-pRTZ3RyK.css +0 -83
- package/dist/assets/NcAppContent-CK9aL637.css +0 -125
- package/dist/assets/NcAppNavigation-BjnW8PQn.css +0 -103
- package/dist/assets/NcAppNavigationCaption-NPhURS5E.css +0 -48
- package/dist/assets/NcAppNavigationIconBullet-EfIZU7x-.css +0 -30
- package/dist/assets/NcAppNavigationItem-wQ3n8jc-.css +0 -211
- package/dist/assets/NcAppNavigationList-BIbyyT7b.css +0 -29
- package/dist/assets/NcAppNavigationNewItem-CO3GnR26.css +0 -194
- package/dist/assets/NcAppNavigationSettings-Cyn2gy0W.css +0 -79
- package/dist/assets/NcAppNavigationToggle-CNPQvWtG.css +0 -27
- package/dist/assets/NcAppSettingsDialog-ksK-DMgk.css +0 -74
- package/dist/assets/NcAppSettingsSection-CcRbdcD-.css +0 -30
- package/dist/assets/NcAppSidebar-CxMCtTtn.css +0 -361
- package/dist/assets/NcAvatar-BnHiRwVr.css +0 -129
- package/dist/assets/NcBreadcrumb-CJ7KeSKQ.css +0 -68
- package/dist/assets/NcBreadcrumbs-C05lySw_.css +0 -37
- package/dist/assets/NcButton-D3_Qd5cl.css +0 -191
- package/dist/assets/NcCheckboxRadioSwitch-By6afmQ3.css +0 -196
- package/dist/assets/NcChip-Cho4h_Kr.css +0 -61
- package/dist/assets/NcColorPicker-vEZb9dRS.css +0 -122
- package/dist/assets/NcContent-DljiVMLl.css +0 -80
- package/dist/assets/NcCounterBubble-DT16e2bg.css +0 -53
- package/dist/assets/NcDashboardWidget-CvGZT_xf.css +0 -73
- package/dist/assets/NcDashboardWidgetItem-JCtQhwhS.css +0 -85
- package/dist/assets/NcDateTimePicker-BLEg7GJo.css +0 -851
- package/dist/assets/NcDialog-BmN7gR6_.css +0 -132
- package/dist/assets/NcEllipsisedOption-DZK2vWD1.css +0 -34
- package/dist/assets/NcEmojiPicker-C18M6LHu.css +0 -553
- package/dist/assets/NcHeaderMenu-C-0GR7Si.css +0 -77
- package/dist/assets/NcInputField-DXzhRkiY.css +0 -164
- package/dist/assets/NcListItem-Cs-R5Xpu.css +0 -156
- package/dist/assets/NcListItemIcon-C2zhDUEr.css +0 -64
- package/dist/assets/NcMentionBubble-B-xYaJDc.css +0 -70
- package/dist/assets/NcModal-B5iEU9Qr.css +0 -285
- package/dist/assets/NcNoteCard-BLPU1den.css +0 -50
- package/dist/assets/NcPopover-BDlL00qZ.css +0 -96
- package/dist/assets/NcRelatedResourcesPanel-C56aj2M3.css +0 -158
- package/dist/assets/NcRichContenteditable-B_YH-89_.css +0 -258
- package/dist/assets/NcRichText-yqgOn353.css +0 -217
- package/dist/assets/NcSelect-9AZOhTlS.css +0 -184
- package/dist/assets/NcSettingsSection-CFKAEs4p.css +0 -52
- package/dist/assets/NcTextArea-BjB_qSH0.css +0 -112
- package/dist/assets/NcUserBubble-CIfQjmmP.css +0 -48
- package/dist/assets/NcUserStatusIcon-D9N1ER72.css +0 -30
- package/dist/assets/referencePickerModal-DeIfdfau.css +0 -413
- package/dist/chunks/AlertCircleOutline-DWBCJkLM.mjs +0 -48
- package/dist/chunks/AlertCircleOutline-DWBCJkLM.mjs.map +0 -1
- package/dist/chunks/ArrowLeft-CxK9DnMo.mjs +0 -48
- package/dist/chunks/ArrowLeft-CxK9DnMo.mjs.map +0 -1
- package/dist/chunks/ArrowRight-Cg6xGDcS.mjs +0 -48
- package/dist/chunks/ArrowRight-Cg6xGDcS.mjs.map +0 -1
- package/dist/chunks/Check-_j2mQvkT.mjs +0 -48
- package/dist/chunks/Check-_j2mQvkT.mjs.map +0 -1
- package/dist/chunks/ChevronDown-De_Zvlgu.mjs +0 -48
- package/dist/chunks/ChevronDown-De_Zvlgu.mjs.map +0 -1
- package/dist/chunks/ChevronRight-C33SNIxR.mjs +0 -48
- package/dist/chunks/ChevronRight-C33SNIxR.mjs.map +0 -1
- package/dist/chunks/ChevronUp-b4LkDSk-.mjs +0 -48
- package/dist/chunks/ChevronUp-b4LkDSk-.mjs.map +0 -1
- package/dist/chunks/Close-pmiXntgw.mjs +0 -48
- package/dist/chunks/Close-pmiXntgw.mjs.map +0 -1
- package/dist/chunks/DotsHorizontal-CCNSfNOk.mjs +0 -48
- package/dist/chunks/DotsHorizontal-CCNSfNOk.mjs.map +0 -1
- package/dist/chunks/GenColors-BidEIqUL.mjs +0 -133
- package/dist/chunks/GenColors-BidEIqUL.mjs.map +0 -1
- package/dist/chunks/NcActionButton-Bqkgltcz.mjs +0 -223
- package/dist/chunks/NcActionButton-Bqkgltcz.mjs.map +0 -1
- package/dist/chunks/NcActionButtonGroup-BeQ4mLmQ.mjs +0 -58
- package/dist/chunks/NcActionButtonGroup-BeQ4mLmQ.mjs.map +0 -1
- package/dist/chunks/NcActionCaption-Cb_uvgZc.mjs +0 -32
- package/dist/chunks/NcActionCaption-Cb_uvgZc.mjs.map +0 -1
- package/dist/chunks/NcActionCheckbox-A6JNjini.mjs +0 -125
- package/dist/chunks/NcActionCheckbox-A6JNjini.mjs.map +0 -1
- package/dist/chunks/NcActionInput-DCe8K_gs.mjs +0 -358
- package/dist/chunks/NcActionInput-DCe8K_gs.mjs.map +0 -1
- package/dist/chunks/NcActionLink-C0mINC5i.mjs +0 -122
- package/dist/chunks/NcActionLink-C0mINC5i.mjs.map +0 -1
- package/dist/chunks/NcActionRadio-BqAyH2zq.mjs +0 -128
- package/dist/chunks/NcActionRadio-BqAyH2zq.mjs.map +0 -1
- package/dist/chunks/NcActionRouter-Dr-j-IUI.mjs +0 -83
- package/dist/chunks/NcActionRouter-Dr-j-IUI.mjs.map +0 -1
- package/dist/chunks/NcActionText-C5ZPI56c.mjs +0 -65
- package/dist/chunks/NcActionText-C5ZPI56c.mjs.map +0 -1
- package/dist/chunks/NcActionTextEditable-CLXTDGjr.mjs +0 -130
- package/dist/chunks/NcActionTextEditable-CLXTDGjr.mjs.map +0 -1
- package/dist/chunks/NcActions-COaRMDe5.mjs +0 -733
- package/dist/chunks/NcActions-COaRMDe5.mjs.map +0 -1
- package/dist/chunks/NcAppContent-D2in9bd7.mjs +0 -350
- package/dist/chunks/NcAppContent-D2in9bd7.mjs.map +0 -1
- package/dist/chunks/NcAppNavigation-Dz1n-CeR.mjs +0 -162
- package/dist/chunks/NcAppNavigation-Dz1n-CeR.mjs.map +0 -1
- package/dist/chunks/NcAppNavigationCaption-6odGo1iM.mjs +0 -93
- package/dist/chunks/NcAppNavigationCaption-6odGo1iM.mjs.map +0 -1
- package/dist/chunks/NcAppNavigationIconBullet-DuqQFciH.mjs +0 -43
- package/dist/chunks/NcAppNavigationIconBullet-DuqQFciH.mjs.map +0 -1
- package/dist/chunks/NcAppNavigationItem-BHtzDfb2.mjs +0 -624
- package/dist/chunks/NcAppNavigationItem-BHtzDfb2.mjs.map +0 -1
- package/dist/chunks/NcAppNavigationList-DCmrqe9N.mjs +0 -16
- package/dist/chunks/NcAppNavigationList-DCmrqe9N.mjs.map +0 -1
- package/dist/chunks/NcAppNavigationNew-CRonFKWJ.mjs +0 -57
- package/dist/chunks/NcAppNavigationNew-CRonFKWJ.mjs.map +0 -1
- package/dist/chunks/NcAppNavigationNewItem-Ctbp1kb-.mjs +0 -120
- package/dist/chunks/NcAppNavigationNewItem-Ctbp1kb-.mjs.map +0 -1
- package/dist/chunks/NcAppNavigationSettings-ynYeFb6Z.mjs +0 -142
- package/dist/chunks/NcAppNavigationSettings-ynYeFb6Z.mjs.map +0 -1
- package/dist/chunks/NcAppNavigationToggle-DYG8u5dW.mjs +0 -158
- package/dist/chunks/NcAppNavigationToggle-DYG8u5dW.mjs.map +0 -1
- package/dist/chunks/NcAppSettingsDialog-CjpGb_I4.mjs +0 -254
- package/dist/chunks/NcAppSettingsDialog-CjpGb_I4.mjs.map +0 -1
- package/dist/chunks/NcAppSettingsSection-a7OfJ9GT.mjs +0 -59
- package/dist/chunks/NcAppSettingsSection-a7OfJ9GT.mjs.map +0 -1
- package/dist/chunks/NcAppSidebar-BGCuCKk_.mjs +0 -962
- package/dist/chunks/NcAppSidebar-BGCuCKk_.mjs.map +0 -1
- package/dist/chunks/NcAvatar-OjWzLdGK.mjs +0 -658
- package/dist/chunks/NcAvatar-OjWzLdGK.mjs.map +0 -1
- package/dist/chunks/NcBreadcrumb-Df7Nn5jU.mjs +0 -243
- package/dist/chunks/NcBreadcrumb-Df7Nn5jU.mjs.map +0 -1
- package/dist/chunks/NcBreadcrumbs-CighY87i.mjs +0 -458
- package/dist/chunks/NcBreadcrumbs-CighY87i.mjs.map +0 -1
- package/dist/chunks/NcButton-DvO0XwJf.mjs +0 -253
- package/dist/chunks/NcButton-DvO0XwJf.mjs.map +0 -1
- package/dist/chunks/NcCheckboxRadioSwitch-BW7W0ToW.mjs +0 -790
- package/dist/chunks/NcCheckboxRadioSwitch-BW7W0ToW.mjs.map +0 -1
- package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_959f6f1b_lang-C0H-ioQZ.mjs +0 -3
- package/dist/chunks/NcCheckboxRadioSwitch.vue_vue_type_style_index_0_scoped_959f6f1b_lang-C0H-ioQZ.mjs.map +0 -1
- package/dist/chunks/NcChip-Crkkyllt.mjs +0 -143
- package/dist/chunks/NcChip-Crkkyllt.mjs.map +0 -1
- package/dist/chunks/NcColorPicker-Bq2-21Np.mjs +0 -273
- package/dist/chunks/NcColorPicker-Bq2-21Np.mjs.map +0 -1
- package/dist/chunks/NcContent-WcbDFG2f.mjs +0 -130
- package/dist/chunks/NcContent-WcbDFG2f.mjs.map +0 -1
- package/dist/chunks/NcCounterBubble-B0Sk58x_.mjs +0 -44
- package/dist/chunks/NcCounterBubble-B0Sk58x_.mjs.map +0 -1
- package/dist/chunks/NcDashboardWidget-xBpqAct1.mjs +0 -186
- package/dist/chunks/NcDashboardWidget-xBpqAct1.mjs.map +0 -1
- package/dist/chunks/NcDashboardWidgetItem-BwemNzvL.mjs +0 -197
- package/dist/chunks/NcDashboardWidgetItem-BwemNzvL.mjs.map +0 -1
- package/dist/chunks/NcDateTime-BVQqC6rO.mjs +0 -147
- package/dist/chunks/NcDateTime-BVQqC6rO.mjs.map +0 -1
- package/dist/chunks/NcDateTimePicker-CjuFbS-2.mjs +0 -377
- package/dist/chunks/NcDateTimePicker-CjuFbS-2.mjs.map +0 -1
- package/dist/chunks/NcDateTimePickerNative-DwJ_yIEg.mjs +0 -200
- package/dist/chunks/NcDateTimePickerNative-DwJ_yIEg.mjs.map +0 -1
- package/dist/chunks/NcDialog-CE2gyz2g.mjs +0 -273
- package/dist/chunks/NcDialog-CE2gyz2g.mjs.map +0 -1
- package/dist/chunks/NcDialogButton-DAb0CNtg.mjs +0 -88
- package/dist/chunks/NcDialogButton-DAb0CNtg.mjs.map +0 -1
- package/dist/chunks/NcEllipsisedOption-CufdpPBu.mjs +0 -104
- package/dist/chunks/NcEllipsisedOption-CufdpPBu.mjs.map +0 -1
- package/dist/chunks/NcEmojiPicker-DNbUUyLY.mjs +0 -380
- package/dist/chunks/NcEmojiPicker-DNbUUyLY.mjs.map +0 -1
- package/dist/chunks/NcHeaderMenu-CIWkk8T1.mjs +0 -259
- package/dist/chunks/NcHeaderMenu-CIWkk8T1.mjs.map +0 -1
- package/dist/chunks/NcInputConfirmCancel-Cwh6_J6A.mjs +0 -116
- package/dist/chunks/NcInputConfirmCancel-Cwh6_J6A.mjs.map +0 -1
- package/dist/chunks/NcInputField-BrAvsgA4.mjs +0 -308
- package/dist/chunks/NcInputField-BrAvsgA4.mjs.map +0 -1
- package/dist/chunks/NcListItem-D3yyUn7h.mjs +0 -359
- package/dist/chunks/NcListItem-D3yyUn7h.mjs.map +0 -1
- package/dist/chunks/NcListItemIcon-B06oTqsI.mjs +0 -207
- package/dist/chunks/NcListItemIcon-B06oTqsI.mjs.map +0 -1
- package/dist/chunks/NcNoteCard-CQgzjr2r.mjs +0 -252
- package/dist/chunks/NcNoteCard-CQgzjr2r.mjs.map +0 -1
- package/dist/chunks/NcPasswordField-CaRDsoPg.mjs +0 -286
- package/dist/chunks/NcPasswordField-CaRDsoPg.mjs.map +0 -1
- package/dist/chunks/NcPopover-BXfbq-Vs.mjs +0 -259
- package/dist/chunks/NcPopover-BXfbq-Vs.mjs.map +0 -1
- package/dist/chunks/NcRelatedResourcesPanel-Bg_z2tZT.mjs +0 -546
- package/dist/chunks/NcRelatedResourcesPanel-Bg_z2tZT.mjs.map +0 -1
- package/dist/chunks/NcRichContenteditable-Cx8Fv6sx.mjs +0 -806
- package/dist/chunks/NcRichContenteditable-Cx8Fv6sx.mjs.map +0 -1
- package/dist/chunks/NcRichText-2N_x-ark.mjs +0 -405
- package/dist/chunks/NcRichText-2N_x-ark.mjs.map +0 -1
- package/dist/chunks/NcSelect-CPlvJjcY.mjs +0 -565
- package/dist/chunks/NcSelect-CPlvJjcY.mjs.map +0 -1
- package/dist/chunks/NcSelectTags-Hpq3uQ0b.mjs +0 -302
- package/dist/chunks/NcSelectTags-Hpq3uQ0b.mjs.map +0 -1
- package/dist/chunks/NcSettingsInputText-oIYmufF3.mjs +0 -122
- package/dist/chunks/NcSettingsInputText-oIYmufF3.mjs.map +0 -1
- package/dist/chunks/NcSettingsSection-CMw4W_UL.mjs +0 -115
- package/dist/chunks/NcSettingsSection-CMw4W_UL.mjs.map +0 -1
- package/dist/chunks/NcSettingsSelectGroup-BTVYUUsQ.mjs +0 -226
- package/dist/chunks/NcSettingsSelectGroup-BTVYUUsQ.mjs.map +0 -1
- package/dist/chunks/NcTextArea-qvR02aYz.mjs +0 -217
- package/dist/chunks/NcTextArea-qvR02aYz.mjs.map +0 -1
- package/dist/chunks/NcTextField-W5cVvjob.mjs +0 -173
- package/dist/chunks/NcTextField-W5cVvjob.mjs.map +0 -1
- package/dist/chunks/NcTimezonePicker-DQ7LMeQo.mjs +0 -187
- package/dist/chunks/NcTimezonePicker-DQ7LMeQo.mjs.map +0 -1
- package/dist/chunks/NcUserBubble-DrQahQl0.mjs +0 -212
- package/dist/chunks/NcUserBubble-DrQahQl0.mjs.map +0 -1
- package/dist/chunks/NcUserStatusIcon-CA3yJfmu.mjs +0 -140
- package/dist/chunks/NcUserStatusIcon-CA3yJfmu.mjs.map +0 -1
- package/dist/chunks/ScopeComponent-C5tGtO7l.mjs +0 -14
- package/dist/chunks/ScopeComponent-C5tGtO7l.mjs.map +0 -1
- package/dist/chunks/_l10n-C3nxU4O-.mjs +0 -122
- package/dist/chunks/_l10n-C3nxU4O-.mjs.map +0 -1
- package/dist/chunks/emoji-Ba55f8iV.mjs +0 -64
- package/dist/chunks/emoji-Ba55f8iV.mjs.map +0 -1
- package/dist/chunks/index-BKkaCvJ0.mjs +0 -187
- package/dist/chunks/index-BKkaCvJ0.mjs.map +0 -1
- package/dist/chunks/index-CtoB4eIp.mjs +0 -116
- package/dist/chunks/index-CtoB4eIp.mjs.map +0 -1
- package/dist/chunks/referencePickerModal-Cho5o36L.mjs +0 -1360
- package/dist/chunks/referencePickerModal-Cho5o36L.mjs.map +0 -1
- package/dist/chunks/usernameToColor-4ci35wWd.mjs +0 -26
- package/dist/chunks/usernameToColor-4ci35wWd.mjs.map +0 -1
- package/dist/components/NcActionInput/NcActionInput.vue.d.ts +0 -271
- package/dist/components/NcAppContent/NcAppContent.vue.d.ts +0 -194
- package/dist/components/NcAppContent/NcAppDetailsToggle.vue.d.ts +0 -8
- package/dist/components/NcAppNavigationSettings/NcAppNavigationSettings.vue.d.ts +0 -37
- package/dist/components/NcAppSidebar/NcAppSidebar.vue.d.ts +0 -378
- package/dist/components/NcAvatar/NcAvatar.vue.d.ts +0 -467
- package/dist/components/NcDashboardWidget/NcDashboardWidget.vue.d.ts +0 -142
- package/dist/components/NcDashboardWidgetItem/NcDashboardWidgetItem.vue.d.ts +0 -170
- package/dist/components/NcHeaderMenu/NcHeaderMenu.vue.d.ts +0 -147
- package/dist/components/NcListItemIcon/NcListItemIcon.vue.d.ts +0 -207
- package/dist/components/NcRichContenteditable/NcRichContenteditable.vue.d.ts +0 -361
- package/dist/components/NcRichText/NcReferencePicker/NcProviderList.vue.d.ts +0 -16
- package/dist/components/NcRichText/NcReferencePicker/NcReferencePicker.vue.d.ts +0 -84
- package/dist/components/NcRichText/NcReferencePicker/NcReferencePickerModal.vue.d.ts +0 -72
- package/dist/components/NcRichText/NcReferencePicker/NcSearch.vue.d.ts +0 -69
- package/dist/components/NcSelect/NcSelect.vue.d.ts +0 -15
- package/dist/components/NcSelectTags/NcSelectTags.vue.d.ts +0 -23
- package/dist/components/NcSettingsSelectGroup/NcSettingsSelectGroup.vue.d.ts +0 -144
- package/dist/components/NcTimezonePicker/NcTimezonePicker.vue.d.ts +0 -78
- package/dist/components/NcUserBubble/NcUserBubble.vue.d.ts +0 -180
- package/dist/plugin.d.ts +0 -17
- /package/dist/assets/{Tooltip-4CSl8xev.css → index-4CSl8xev.css} +0 -0
- /package/dist/{Components/NcVNodes.mjs → components/NcVNodes/index.mjs} +0 -0
- /package/dist/{Composables/useIsFullscreen.mjs → composables/useIsFullscreen/index.mjs} +0 -0
- /package/dist/{Composables/useIsMobile.mjs → composables/useIsMobile/index.mjs} +0 -0
- /package/dist/{Directives/Focus.mjs → directives/Focus/index.mjs} +0 -0
- /package/dist/{Functions/a11y.mjs → functions/a11y/index.mjs} +0 -0
- /package/dist/{Mixins/clickOutsideOptions.mjs → mixins/clickOutsideOptions/index.mjs} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NcRichContenteditable-s2Cz698X.mjs","sources":["../../src/components/NcRichContenteditable/NcAutoCompleteResult.vue","../../src/components/NcRichContenteditable/NcRichContenteditable.vue"],"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<div class=\"autocomplete-result\">\n\t\t<!-- Avatar or icon -->\n\t\t<div :class=\"[icon, `autocomplete-result__icon--${avatarUrl ? 'with-avatar' : ''}`]\"\n\t\t\t:style=\"avatarUrl ? { backgroundImage: `url(${avatarUrl})` } : null \"\n\t\t\tclass=\"autocomplete-result__icon\">\n\t\t\t<span v-if=\"status.icon\"\n\t\t\t\tclass=\"autocomplete-result__status autocomplete-result__status--icon\">\n\t\t\t\t{{ status && status.icon || '' }}\n\t\t\t</span>\n\t\t\t<NcUserStatusIcon v-else-if=\"status.status && status.status !== 'offline'\"\n\t\t\t\tclass=\"autocomplete-result__status\"\n\t\t\t\t:status=\"status.status\" />\n\t\t</div>\n\n\t\t<!-- Label and subline -->\n\t\t<span class=\"autocomplete-result__content\">\n\t\t\t<span class=\"autocomplete-result__title\" :title=\"labelWithFallback\">\n\t\t\t\t{{ labelWithFallback }}\n\t\t\t</span>\n\t\t\t<span v-if=\"subline\" class=\"autocomplete-result__subline\">\n\t\t\t\t{{ subline }}\n\t\t\t</span>\n\t\t</span>\n\t</div>\n</template>\n\n<script>\nimport { getAvatarUrl } from '../../utils/getAvatarUrl.ts'\n\nimport NcUserStatusIcon from '../NcUserStatusIcon/index.js'\n\nexport default {\n\tname: 'NcAutoCompleteResult',\n\n\tcomponents: {\n\t\tNcUserStatusIcon,\n\t},\n\n\tprops: {\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\tsubline: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\tid: {\n\t\t\ttype: String,\n\t\t\tdefault: null,\n\t\t},\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ticonUrl: {\n\t\t\ttype: String,\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\tstatus: {\n\t\t\ttype: [Object, Array],\n\t\t\tdefault: () => ({}),\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\t// For backwards 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.autocomplete-result {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--default-grid-baseline);\n\tline-height: 1.2;\n\t--auto-complete-result-avatar-size: var(--default-clickable-area);\n\n\t&__icon {\n\t\tposition: relative;\n\t\tflex: 0 0 var(--default-clickable-area);\n\t\twidth: var(--default-clickable-area);\n\t\tmin-width: var(--default-clickable-area);\n\t\theight: var(--default-clickable-area);\n\t\tborder-radius: var(--default-clickable-area);\n\t\tbackground-color: var(--color-background-darker);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: center;\n\t\tbackground-size: contain;\n\t\t&--with-avatar {\n\t\t\tcolor: inherit;\n\t\t\tbackground-size: cover;\n\t\t}\n\t}\n\n\t&__status {\n\t\t--auto-complete-result-status-icon-size: clamp(14px, var(--auto-complete-result-avatar-size) * 0.4, 18px);\n\t\t// Avatar Radius * (1 - 1 / sqrt(2)) - Status Icon Radius / 2\n\t\t--auto-complete-result-status-icon-position: calc(var(--auto-complete-result-avatar-size) / 2 * (1 - 1 / sqrt(2)) - var(--auto-complete-result-status-icon-size) / 2);\n\t\tbox-sizing: border-box;\n\t\tposition: absolute;\n\t\tright: var(--auto-complete-result-status-icon-position);\n\t\tbottom: var(--auto-complete-result-status-icon-position);\n\t\theight: var(--auto-complete-result-status-icon-size);\n\t\twidth: var(--auto-complete-result-status-icon-size);\n\t\tborder: 2px solid var(--color-main-background);\n\t\tborder-radius: 50%;\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-size: calc(var(--auto-complete-result-status-icon-size) / 1.2);\n\t\tline-height: 1.2;\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-size: var(--auto-complete-result-status-icon-size);\n\t\tbackground-position: center;\n\n\t\t&--icon {\n\t\t\tborder: none;\n\t\t\tbackground-color: transparent;\n\t\t}\n\t}\n\n\t&__content {\n\t\tdisplay: flex;\n\t\tflex: 1 1 100%;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\tmin-width: 0;\n\t}\n\n\t&__title,\n\t&__subline {\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n\n\t&__subline {\n\t\tcolor: var(--color-text-maxcontrast);\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\n<docs>\n\n### General description\n\nThis component displays contenteditable div with automated `@` [at] autocompletion and `:` [colon] emoji autocompletion.\n\n### Examples\n\nTry mentioning user @Test01 or inserting emoji :smile\n\n```vue\n<template>\n\t<div>\n\t\t<NcRichContenteditable\n\t\t\tlabel=\"Write a comment\"\n\t\t\tv-model=\"message\"\n\t\t\t:auto-complete=\"autoComplete\"\n\t\t\t:maxlength=\"100\"\n\t\t\t:user-data=\"userData\"\n\t\t\t@submit=\"onSubmit\" />\n\t\t<br>\n\n\t\t<NcRichContenteditable\n\t\t\tv-model=\"message\"\n\t\t\t:auto-complete=\"autoComplete\"\n\t\t\t:maxlength=\"400\"\n\t\t\t:multiline=\"true\"\n\t\t\t:user-data=\"userData\"\n\t\t\t@submit=\"onSubmit\" />\n\n\t\t<h5>Output - raw</h5>\n\t\t{{ JSON.stringify(message) }}\n\n\t\t<h5>Output - preformatted</h5>\n\t\t<p class=\"pre-line\">{{ message }}</p>\n\n\t\t<h5>Output - in NcRichText with markdown support</h5>\n\t\t<NcRichText :text=\"text\" :arguments=\"userMentions\" autolink use-markdown />\n\t</div>\n</template>\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tmessage: '**Lorem ipsum** dolor sit amet.',\n\t\t\t// You need to provide this for the inline mention to understand what to display or not.\n\t\t\t// Key should be a string with leading '@', like @Test02 or @\"Test Offline\"\n\t\t\tuserData: {\n\t\t\t\tTest01: {\n\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\tid: 'Test01',\n\t\t\t\t\tlabel: 'Test01',\n\t\t\t\t\tsource: 'users',\n\t\t\t\t\tprimary: true,\n\t\t\t\t},\n\t\t\t\tTest02: {\n\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\tid: 'Test02',\n\t\t\t\t\tlabel: 'Test02',\n\t\t\t\t\tsource: 'users',\n\t\t\t\t\tstatus: {\n\t\t\t\t\t\tclearAt: null,\n\t\t\t\t\t\ticon: '🎡',\n\t\t\t\t\t\tmessage: 'Visiting London',\n\t\t\t\t\t\tstatus: 'away',\n\t\t\t\t\t},\n\t\t\t\t\tsubline: 'Visiting London',\n\t\t\t\t},\n\t\t\t\t'Test@User': {\n\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\tid: 'Test@User',\n\t\t\t\t\tlabel: 'Test 03',\n\t\t\t\t\tsource: 'users',\n\t\t\t\t\tstatus: {\n\t\t\t\t\t\tclearAt: null,\n\t\t\t\t\t\ticon: '🎡',\n\t\t\t\t\t\tmessage: 'Having space in my name',\n\t\t\t\t\t\tstatus: 'online',\n\t\t\t\t\t},\n\t\t\t\t\tsubline: 'Visiting London',\n\t\t\t\t},\n\t\t\t\t'Test Offline': {\n\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\tid: 'Test Offline',\n\t\t\t\t\tlabel: 'Test Offline',\n\t\t\t\t\tsource: 'users',\n\t\t\t\t\tstatus: {\n\t\t\t\t\t\tclearAt: null,\n\t\t\t\t\t\ticon: null,\n\t\t\t\t\t\tmessage: null,\n\t\t\t\t\t\tstatus: 'offline',\n\t\t\t\t\t},\n\t\t\t\t\tsubline: null,\n\t\t\t\t},\n\t\t\t\t'Test DND': {\n\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\tid: 'Test DND',\n\t\t\t\t\tlabel: 'Test DND',\n\t\t\t\t\tsource: 'users',\n\t\t\t\t\tstatus: {\n\t\t\t\t\t\tclearAt: null,\n\t\t\t\t\t\ticon: null,\n\t\t\t\t\t\tmessage: 'Out sick',\n\t\t\t\t\t\tstatus: 'dnd',\n\t\t\t\t\t},\n\t\t\t\t\tsubline: 'Out sick',\n\t\t\t\t},\n\t\t\t},\n\t\t\t// To display user bubbles in NcRichText, special format of data should be provided:\n\t\t\t// Key should be in curly brackets without '@' and ' ' symbols, like {user-2}\n\t\t\tuserMentions: {\n\t\t\t\t'user-1': {\n\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\tprops: {\n\t\t\t\t\t\tdisplayName: 'Test01',\n\t\t\t\t\t\tuser: 'Test01',\n\t\t\t\t\t\tprimary: true,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t'user-2': {\n\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\tprops: {\n\t\t\t\t\t\tdisplayName: 'Test02',\n\t\t\t\t\t\tuser: 'Test02',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t'user-3': {\n\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\tprops: {\n\t\t\t\t\t\tdisplayName: 'Test 03',\n\t\t\t\t\t\tuser: 'Test@User',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t'user-4': {\n\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\tprops: {\n\t\t\t\t\t\tdisplayName: 'Test Offline',\n\t\t\t\t\t\tuser: 'Test Offline',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t'user-5': {\n\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\tprops: {\n\t\t\t\t\t\tdisplayName: 'Test DND',\n\t\t\t\t\t\tuser: 'Test DND',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\t},\n\tcomputed: {\n\t\ttext() {\n\t\t\treturn this.message\n\t\t\t\t\t.replace('@Test01', '{user-1}')\n\t\t\t\t\t.replace('@Test02', '{user-2}')\n\t\t\t\t\t.replace('@Test@User', '{user-3}')\n\t\t\t\t\t.replace('@\"Test Offline\"', '{user-4}')\n\t\t\t\t\t.replace('@\"Test DND\"', '{user-5}')\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t* Do your own query to the autocompletion api.\n\t\t* The returned data bellow is a fake data example.\n\t\t* The callback expects the same format returned by the core/autocomplete/get ocs api endpoint!\n\t\t* @see userData example above\n\t\t*\n\t\t* @param {string} search the query\n\t\t* @param {Function} callback the callback to process the results with\n\t\t*/\n\t\tautoComplete(search, callback) {\n\t\t\tcallback(Object.values(this.userData))\n\t\t},\n\t\tonSubmit() {\n\t\t\talert(this.message)\n\t\t}\n\t}\n}\n</script>\n<style lang=\"scss\" scoped>\n\th5 {\n\t\tfont-weight: bold;\n\t\tmargin: 40px 0 20px 0;\n\t}\n\n\t.pre-line {\n\t\twhite-space: pre-line;\n\t}\n</style>\n```\n\n### Using public methods\n\n```vue\n<template>\n\t<div>\n\t\t<div class=\"buttons-wrapper\">\n\t\t\t<NcButton class=\"show-slash-button\" @click=\"showSlashCommands\">Slash commands</NcButton>\n\t\t\t<NcButton class=\"focus-button\" @click=\"focus\">Focus on input</NcButton>\n\t\t</div>\n\t\t<NcRichContenteditable\n\t\t\tref=\"contenteditable\"\n\t\t\tv-model=\"message\"\n\t\t\tlabel=\"Write a comment\"\n\t\t\t:maxlength=\"100\"/>\n\t</div>\n</template>\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\tmessage: '**Lorem ipsum** dolor sit amet. ',\n\t\t}\n\t},\n\tmethods: {\n\t\tshowSlashCommands() {\n\t\t\tthis.$refs.contenteditable.showTribute('/')\n\t\t},\n\t\tfocus() {\n\t\t\tthis.$refs.contenteditable.focus()\n\t\t},\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n\t.buttons-wrapper {\n\t\tdisplay: flex;\n\t\tgap: 10px;\n\t\tmargin-bottom: 20px;\n\t}\n</style>\n```\n\n</docs>\n\n<template>\n\t<div class=\"rich-contenteditable\" :class=\"$props.class\">\n\t\t<div :id=\"id\"\n\t\t\tref=\"contenteditable\"\n\t\t\tv-tooltip=\"tooltipString\"\n\t\t\t:class=\"{\n\t\t\t\t'rich-contenteditable__input--empty': isEmptyValue,\n\t\t\t\t'rich-contenteditable__input--multiline': multiline,\n\t\t\t\t'rich-contenteditable__input--has-label': label,\n\t\t\t\t'rich-contenteditable__input--overflow': isOverMaxlength,\n\t\t\t\t'rich-contenteditable__input--disabled': disabled,\n\t\t\t}\"\n\t\t\t:contenteditable=\"canEdit\"\n\t\t\t:aria-labelledby=\"label ? labelId : undefined\"\n\t\t\t:aria-placeholder=\"placeholder\"\n\t\t\taria-multiline=\"true\"\n\t\t\tclass=\"rich-contenteditable__input\"\n\t\t\trole=\"textbox\"\n\t\t\taria-haspopup=\"listbox\"\n\t\t\taria-autocomplete=\"inline\"\n\t\t\t:aria-controls=\"tributeId\"\n\t\t\t:aria-expanded=\"isAutocompleteOpen ? 'true' : 'false'\"\n\t\t\t:aria-activedescendant=\"autocompleteActiveId\"\n\t\t\tv-bind=\"$attrs\"\n\t\t\t@focus=\"moveCursorToEnd\"\n\t\t\t@input=\"onInput\"\n\t\t\t@compositionstart=\"isComposing = true\"\n\t\t\t@compositionend=\"isComposing = false\"\n\t\t\t@keydown.esc.capture=\"onKeyEsc\"\n\t\t\t@keydown.enter.exact=\"onEnter\"\n\t\t\t@keydown.ctrl.enter.exact.stop.prevent=\"onCtrlEnter\"\n\t\t\t@paste=\"onPaste\"\n\t\t\t@keyup.stop.prevent.capture=\"onKeyUp\"\n\t\t\t@keydown.up.exact.stop=\"onTributeArrowKeyDown\"\n\t\t\t@keydown.down.exact.stop=\"onTributeArrowKeyDown\"\n\t\t\t@tribute-active-true=\"onTributeActive(true)\"\n\t\t\t@tribute-active-false=\"onTributeActive(false)\" />\n\t\t<div v-if=\"label\"\n\t\t\t:id=\"labelId\"\n\t\t\tclass=\"rich-contenteditable__label\">\n\t\t\t{{ label }}\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { t } from '../../l10n.js'\nimport NcAutoCompleteResult from './NcAutoCompleteResult.vue'\nimport richEditor from '../../mixins/richEditor/index.js'\nimport Tooltip from '../../directives/Tooltip/index.js'\nimport { emojiSearch, emojiAddRecent } from '../../functions/emoji/index.ts'\nimport { searchProvider, getLinkWithPicker } from '../NcRichText/index.js'\n\nimport Tribute from 'tributejs/dist/tribute.esm.js'\nimport debounce from 'debounce'\nimport stringLength from 'string-length'\nimport GenRandomId from '../../utils/GenRandomId.js'\n\n/**\n * Populate the list of text smiles we want to offer via Tribute.\n * We add the colon `:)` and colon-dash `:-)` version for each of them.\n */\nconst smilesCharacters = ['d', 'D', 'p', 'P', 's', 'S', 'x', 'X', ')', '(', '|', '/']\nconst textSmiles = []\nsmilesCharacters.forEach((char) => {\n\ttextSmiles.push(':' + char)\n\ttextSmiles.push(':-' + char)\n})\n\nexport default {\n\tname: 'NcRichContenteditable',\n\n\tdirectives: {\n\t\ttooltip: Tooltip,\n\t},\n\n\tmixins: [richEditor],\n\n\tinheritAttrs: false,\n\n\tprops: {\n\t\t/**\n\t\t * The ID attribute of the content editable\n\t\t */\n\t\tid: {\n\t\t\ttype: String,\n\t\t\tdefault: () => GenRandomId(7),\n\t\t},\n\n\t\t/**\n\t\t * Visual label of the contenteditable\n\t\t */\n\t\tlabel: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\n\t\tmodelValue: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: true,\n\t\t},\n\n\t\tplaceholder: {\n\t\t\ttype: String,\n\t\t\tdefault: t('Write a message …'),\n\t\t},\n\n\t\tautoComplete: {\n\t\t\ttype: Function,\n\t\t\tdefault: () => [],\n\t\t},\n\n\t\tmenuContainer: {\n\t\t\ttype: Element,\n\t\t\tdefault: () => document.body,\n\t\t},\n\n\t\t/**\n\t\t * Make the contenteditable looks like a textarea or not.\n\t\t * Default looks like a single-line input.\n\t\t * This also handle the default enter/shift+enter behaviour.\n\t\t * if multiline, enter = newline; otherwise enter = submit\n\t\t * shift+enter always add a new line. ctrl+enter always submits\n\t\t */\n\t\tmultiline: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Is the content editable ?\n\t\t */\n\t\tcontenteditable: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * Disable the editing and show specific disabled design\n\t\t */\n\t\tdisabled: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\n\t\t/**\n\t\t * Max allowed length\n\t\t */\n\t\tmaxlength: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\n\t\t/**\n\t\t * Enable or disable emoji autocompletion\n\t\t */\n\t\temojiAutocomplete: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * Enable or disable link autocompletion\n\t\t */\n\t\tlinkAutocomplete: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\n\t\t/**\n\t\t * CSS class to apply to the root element.\n\t\t */\n\t\tclass: {\n\t\t\ttype: [String, Array, Object],\n\t\t\tdefault: '',\n\t\t},\n\t},\n\n\temits: [\n\t\t'submit',\n\t\t'paste',\n\t\t'update:modelValue',\n\t\t'smart-picker-submit',\n\t],\n\n\tsetup() {\n\t\tconst uid = GenRandomId(5)\n\t\treturn {\n\t\t\t// Constants\n\t\t\tlabelId: `nc-rich-contenteditable-${uid}-label`,\n\t\t\ttributeId: `nc-rich-contenteditable-${uid}-tribute`,\n\t\t\t/**\n\t\t\t * Non-reactive property to store Tribute instance\n\t\t\t *\n\t\t\t * @type {import('tributejs').default | null}\n\t\t\t */\n\t\t\ttribute: null,\n\t\t\ttributeStyleMutationObserver: null,\n\t\t}\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\t// Represent the raw untrimmed text of the contenteditable\n\t\t\t// serves no other purpose than to check whether the\n\t\t\t// content is empty or not\n\t\t\tlocalValue: this.modelValue,\n\n\t\t\t// Is in text composition session in IME\n\t\t\tisComposing: false,\n\n\t\t\t// Tribute autocomplete\n\t\t\tisAutocompleteOpen: false,\n\t\t\tautocompleteActiveId: undefined,\n\t\t\tisTributeIntegrationDone: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t/**\n\t\t * Is the current trimmed value empty?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisEmptyValue() {\n\t\t\treturn !this.localValue || this.localValue.trim() === ''\n\t\t},\n\n\t\t/**\n\t\t * Is the current value over maxlength?\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tisOverMaxlength() {\n\t\t\tif (this.isEmptyValue || !this.maxlength) {\n\t\t\t\treturn false\n\t\t\t}\n\t\t\treturn stringLength(this.localValue) > this.maxlength\n\t\t},\n\n\t\t/**\n\t\t * Tooltip to show if characters count is over limit\n\t\t *\n\t\t * @return {string}\n\t\t */\n\t\ttooltipString() {\n\t\t\tif (!this.isOverMaxlength) {\n\t\t\t\treturn null\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tcontent: t('Message limit of {count} characters reached', { count: this.maxlength }),\n\t\t\t\tshown: true,\n\t\t\t\ttrigger: 'manual',\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Edit is only allowed when contenteditableis true and disabled is false\n\t\t *\n\t\t * @return {boolean}\n\t\t */\n\t\tcanEdit() {\n\t\t\treturn this.contenteditable && !this.disabled\n\t\t},\n\n\t\t/**\n\t\t * Compute debounce function for the autocomplete function\n\t\t */\n\t\tdebouncedAutoComplete() {\n\t\t\treturn debounce(async (search, callback) => {\n\t\t\t\tthis.autoComplete(search, callback)\n\t\t\t}, 100)\n\t\t},\n\t},\n\n\twatch: {\n\t\t/**\n\t\t * If the parent value change, we compare the plain text rendering\n\t\t * If it's different, we render everything and update the main content\n\t\t */\n\t\tmodelValue() {\n\t\t\tconst html = this.$refs.contenteditable.innerHTML\n\t\t\t// Compare trimmed versions to be safe\n\t\t\tif (this.modelValue.trim() !== this.parseContent(html).trim()) {\n\t\t\t\tthis.updateContent(this.modelValue)\n\t\t\t}\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.initializeTribute()\n\n\t\t// Update default value\n\t\tthis.updateContent(this.modelValue)\n\n\t\t// Removes the contenteditable attribute at first load if the prop is\n\t\t// set to false.\n\t\tthis.$refs.contenteditable.contentEditable = this.canEdit\n\t},\n\tbeforeUnmount() {\n\t\tif (this.tribute) {\n\t\t\tthis.tribute.detach(this.$refs.contenteditable)\n\t\t}\n\n\t\tif (this.tributeStyleMutationObserver) {\n\t\t\tthis.tributeStyleMutationObserver.disconnect()\n\t\t}\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Focus the richContenteditable\n\t\t *\n\t\t * @public\n\t\t */\n\t\tfocus() {\n\t\t\tthis.$refs.contenteditable.focus()\n\t\t},\n\n\t\tinitializeTribute() {\n\t\t\tconst renderMenuItem = (content) => `<div id=\"nc-rich-contenteditable-tribute-item-${GenRandomId(5)}\" class=\"${this.$style['tribute-item']}\" role=\"option\">${content}</div>`\n\n\t\t\tconst tributesCollection = []\n\t\t\ttributesCollection.push({\n\t\t\t\tfillAttr: 'id',\n\t\t\t\t// Search against id and label (display name) (fallback to title for v8.0.0..8.6.1 compatibility)\n\t\t\t\tlookup: result => `${result.id} ${result.label ?? result.title}`,\n\t\t\t\trequireLeadingSpace: true,\n\t\t\t\t// Popup mention autocompletion templates\n\t\t\t\tmenuItemTemplate: item => renderMenuItem(this.renderComponentHtml(item.original, NcAutoCompleteResult)),\n\t\t\t\t// Hide if no results\n\t\t\t\tnoMatchTemplate: () => '<span class=\"hidden\"></span>',\n\t\t\t\t// Inner display of mentions\n\t\t\t\tselectTemplate: item => this.genSelectTemplate(item?.original?.id),\n\t\t\t\t// Autocompletion results\n\t\t\t\tvalues: this.debouncedAutoComplete,\n\t\t\t\t// Class added to the menu container\n\t\t\t\tcontainerClass: `${this.$style['tribute-container']} ${this.$style['tribute-container-autocomplete']}`,\n\t\t\t\t// Class added to each list item\n\t\t\t\titemClass: this.$style['tribute-container__item'],\n\n\t\t\t})\n\n\t\t\tif (this.emojiAutocomplete) {\n\t\t\t\ttributesCollection.push({\n\t\t\t\t\ttrigger: ':',\n\t\t\t\t\t// Don't use the tribute search function at all\n\t\t\t\t\t// We pass search results as values (see below)\n\t\t\t\t\tlookup: (result, query) => query,\n\t\t\t\t\trequireLeadingSpace: true,\n\t\t\t\t\t// Popup mention autocompletion templates\n\t\t\t\t\tmenuItemTemplate: item => {\n\t\t\t\t\t\tif (textSmiles.includes(item.original)) {\n\t\t\t\t\t\t\t// Display the raw text string for :), :-D, … for non emoji results,\n\t\t\t\t\t\t\t// instead of trying to show an image and their name.\n\t\t\t\t\t\t\treturn item.original\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn renderMenuItem(`<span class=\"${this.$style['tribute-item__emoji']}\">${item.original.native}</span> :${item.original.short_name}`)\n\t\t\t\t\t},\n\t\t\t\t\t// Hide if no results\n\t\t\t\t\tnoMatchTemplate: () => t('No emoji found'),\n\t\t\t\t\t// Display raw emoji along with its name\n\t\t\t\t\tselectTemplate: (item) => {\n\t\t\t\t\t\tif (textSmiles.includes(item.original)) {\n\t\t\t\t\t\t\t// Replace the selection with the raw text string for :), :-D, … for non emoji results\n\t\t\t\t\t\t\treturn item.original\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\temojiAddRecent(item.original)\n\t\t\t\t\t\treturn item.original.native\n\t\t\t\t\t},\n\t\t\t\t\t// Pass the search results as values\n\t\t\t\t\tvalues: (text, cb) => {\n\t\t\t\t\t\tconst emojiResults = emojiSearch(text)\n\t\t\t\t\t\tif (textSmiles.includes(':' + text)) {\n\t\t\t\t\t\t\t/**\n\t\t\t\t\t\t\t * Prepend text smiles to the search results so that Tribute\n\t\t\t\t\t\t\t * is not interfering with normal writing, aka. \"Cocos Island Meme\".\n\t\t\t\t\t\t\t * E.g. `:)` and `:-)` got replaced by the flag of Cocos Island,\n\t\t\t\t\t\t\t * when submitting the input with Enter after writing them\n\t\t\t\t\t\t\t */\n\t\t\t\t\t\t\temojiResults.unshift(':' + text)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcb(emojiResults)\n\t\t\t\t\t},\n\t\t\t\t\t// Class added to the menu container\n\t\t\t\t\tcontainerClass: `${this.$style['tribute-container']} ${this.$style['tribute-container-emoji']}`,\n\t\t\t\t\t// Class added to each list item\n\t\t\t\t\titemClass: this.$style['tribute-container__item'],\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif (this.linkAutocomplete) {\n\t\t\t\ttributesCollection.push({\n\t\t\t\t\ttrigger: '/',\n\t\t\t\t\t// Don't use the tribute search function at all\n\t\t\t\t\t// We pass search results as values (see below)\n\t\t\t\t\tlookup: (result, query) => query,\n\t\t\t\t\trequireLeadingSpace: true,\n\t\t\t\t\t// Popup mention autocompletion templates\n\t\t\t\t\tmenuItemTemplate: item => renderMenuItem(`<img class=\"${this.$style['tribute-item__icon']}\" src=\"${item.original.icon_url}\"> <span class=\"${this.$style['tribute-item__title']}\">${item.original.title}</span>`),\n\t\t\t\t\t// Hide if no results\n\t\t\t\t\tnoMatchTemplate: () => t('No link provider found'),\n\t\t\t\t\tselectTemplate: this.getLink,\n\t\t\t\t\t// Pass the search results as values\n\t\t\t\t\tvalues: (text, cb) => cb(searchProvider(text)),\n\t\t\t\t\t// Class added to the menu container\n\t\t\t\t\tcontainerClass: `${this.$style['tribute-container']} ${this.$style['tribute-container-link']}`,\n\t\t\t\t\t// Class added to each list item\n\t\t\t\t\titemClass: this.$style['tribute-container__item'],\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tthis.tribute = new Tribute({\n\t\t\t\tcollection: tributesCollection,\n\t\t\t\t// FIXME: tributejs doesn't support allowSpaces as a collection option, only as a global one\n\t\t\t\t// Requires to fork a library to allow spaces only in the middle of mentions ('@' trigger)\n\t\t\t\tallowSpaces: false,\n\t\t\t\t// Where to inject the menu popup\n\t\t\t\tmenuContainer: this.menuContainer,\n\t\t\t})\n\t\t\tthis.tribute.attach(this.$refs.contenteditable)\n\t\t},\n\n\t\tgetLink(item) {\n\t\t\t// there is no way to get a tribute result asynchronously\n\t\t\t// so we immediately insert a node and replace it when the result comes\n\t\t\tgetLinkWithPicker(item.original.id)\n\t\t\t\t.then(result => {\n\t\t\t\t\t// replace dummy temp element by a text node which contains the picker result\n\t\t\t\t\tconst tmpElem = document.getElementById('tmp-smart-picker-result-node')\n\t\t\t\t\tconst eventData = {\n\t\t\t\t\t\tresult,\n\t\t\t\t\t\tinsertText: true,\n\t\t\t\t\t}\n\t\t\t\t\tthis.$emit('smart-picker-submit', eventData)\n\t\t\t\t\tif (eventData.insertText) {\n\t\t\t\t\t\tconst newElem = document.createTextNode(result)\n\t\t\t\t\t\ttmpElem.replaceWith(newElem)\n\t\t\t\t\t\tthis.setCursorAfter(newElem)\n\t\t\t\t\t\tthis.updateValue(this.$refs.contenteditable.innerHTML)\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttmpElem.remove()\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch((error) => {\n\t\t\t\t\tconsole.debug('Smart picker promise rejected:', error)\n\t\t\t\t\tconst tmpElem = document.getElementById('tmp-smart-picker-result-node')\n\t\t\t\t\tthis.setCursorAfter(tmpElem)\n\t\t\t\t\ttmpElem.remove()\n\t\t\t\t})\n\t\t\treturn '<span id=\"tmp-smart-picker-result-node\"></span>'\n\t\t},\n\t\tsetCursorAfter(element) {\n\t\t\tconst range = document.createRange()\n\t\t\trange.setEndAfter(element)\n\t\t\trange.collapse()\n\t\t\tconst selection = window.getSelection()\n\t\t\tselection.removeAllRanges()\n\t\t\tselection.addRange(range)\n\t\t},\n\t\tmoveCursorToEnd() {\n\t\t\tif (!document.createRange) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst range = document.createRange()\n\t\t\trange.selectNodeContents(this.$refs.contenteditable)\n\t\t\trange.collapse(false)\n\t\t\tconst selection = window.getSelection()\n\t\t\tselection.removeAllRanges()\n\t\t\tselection.addRange(range)\n\t\t},\n\t\t/**\n\t\t * Re-emit the input event to the parent\n\t\t *\n\t\t * @param {Event} event the input event\n\t\t */\n\t\tonInput(event) {\n\t\t\tthis.updateValue(event.target.innerHTML)\n\t\t},\n\n\t\t/**\n\t\t * When pasting, sanitize the content, extract text\n\t\t * and render it again\n\t\t *\n\t\t * @param {Event} event the paste event\n\t\t * @fires Event paste the original paste event\n\t\t */\n\t\tonPaste(event) {\n\t\t\t// Either disabled or edit deactivated\n\t\t\tif (!this.canEdit) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tevent.preventDefault()\n\t\t\tconst clipboardData = event.clipboardData\n\n\t\t\t/** The original paste event */\n\t\t\tthis.$emit('paste', event)\n\n\t\t\t// If we have a file or if we don't have any text, ignore\n\t\t\tif (clipboardData.files.length !== 0\n\t\t\t\t|| !Object.values(clipboardData.items).find(item => item?.type.startsWith('text'))) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst text = clipboardData.getData('text')\n\t\t\tconst selection = window.getSelection()\n\n\t\t\t// Generate text and insert\n\t\t\tconst range = selection.getRangeAt(0)\n\t\t\trange.deleteContents()\n\t\t\trange.insertNode(document.createTextNode(text))\n\n\t\t\t// Collapse the range to the end position\n\t\t\trange.collapse(false)\n\n\t\t\t// Propagate data\n\t\t\tthis.updateValue(this.$refs.contenteditable.innerHTML)\n\t\t},\n\n\t\t/**\n\t\t * Update the value text from the provided html\n\t\t *\n\t\t * @param {string} htmlOrText the html content (or raw text with @mentions)\n\t\t */\n\t\tupdateValue(htmlOrText) {\n\t\t\t// Browsers keep <br> after erasing contenteditable\n\t\t\tconst text = this.parseContent(htmlOrText).replace(/^\\n$/, '')\n\t\t\tthis.localValue = text\n\t\t\tthis.$emit('update:modelValue', text)\n\t\t},\n\n\t\t/**\n\t\t * Update content and local value\n\t\t *\n\t\t * @param {string} value the message value\n\t\t */\n\t\tupdateContent(value) {\n\t\t\tconst renderedContent = this.renderContent(value)\n\t\t\tthis.$refs.contenteditable.innerHTML = renderedContent\n\t\t\tthis.localValue = value\n\t\t},\n\n\t\t/**\n\t\t * Enter key pressed. Submits if not multiline\n\t\t *\n\t\t * @param {Event} event the keydown event\n\t\t */\n\t\tonEnter(event) {\n\t\t\t// Prevent submitting if multiline\n\t\t\t// or length is over maxlength\n\t\t\t// or autocompletion menu is opened\n\t\t\t// or in a text composition session with IME\n\t\t\tif (this.multiline\n\t\t\t\t|| this.isOverMaxlength\n\t\t\t\t|| this.tribute.isActive\n\t\t\t\t|| this.isComposing) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tevent.preventDefault()\n\t\t\tevent.stopPropagation()\n\t\t\tthis.$emit('submit', event)\n\t\t},\n\n\t\t/**\n\t\t * Ctrl + Enter key pressed is used to submit\n\t\t *\n\t\t * @param {Event} event the keydown event\n\t\t */\n\t\tonCtrlEnter(event) {\n\t\t\tif (this.isOverMaxlength) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.$emit('submit', event)\n\t\t},\n\n\t\tonKeyUp(event) {\n\t\t\t// prevent tribute from opening on keyup\n\t\t\tevent.stopImmediatePropagation()\n\t\t},\n\n\t\tonKeyEsc(event) {\n\t\t\t// prevent event from bubbling when tribute is open\n\t\t\tif (this.tribute && this.isAutocompleteOpen) {\n\t\t\t\tevent.stopImmediatePropagation()\n\t\t\t\tthis.tribute.hideMenu()\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Get HTML element with Tribute.js container\n\t\t * @return {HTMLElement}\n\t\t */\n\t\tgetTributeContainer() {\n\t\t\treturn this.tribute.menu\n\t\t},\n\n\t\t/**\n\t\t * Get the currently selected item element id in Tribute.js container\n\t\t * @return {HTMLElement}\n\t\t */\n\t\tgetTributeSelectedItem() {\n\t\t\t// Tribute does not provide a way to get the active item, only the data index\n\t\t\t// So we have to find it manually by select class\n\t\t\treturn this.getTributeContainer().querySelector('.highlight [id^=\"nc-rich-contenteditable-tribute-item-\"]')\n\t\t},\n\n\t\t/**\n\t\t * Handle Tribute activation\n\t\t * @param {boolean} isActive - is active\n\t\t */\n\t\tonTributeActive(isActive) {\n\t\t\tthis.isAutocompleteOpen = isActive\n\n\t\t\tif (isActive) {\n\t\t\t\t// Tribute.js doesn't support containerClass update when new collection is open\n\t\t\t\t// The first opened collection's containerClass stays forever\n\t\t\t\t// https://github.com/zurb/tribute/issues/595\n\t\t\t\t// https://github.com/zurb/tribute/issues/627\n\t\t\t\t// So we have to manually update the class\n\t\t\t\t// The default class is \"tribute-container\"\n\t\t\t\tthis.getTributeContainer().setAttribute('class', this.tribute.current.collection.containerClass || this.$style['tribute-container'])\n\n\t\t\t\tthis.setupTributeIntegration()\n\t\t\t\t// Remove the event handler if any\n\t\t\t\tdocument.removeEventListener('click', this.hideTribute, true)\n\t\t\t} else {\n\t\t\t\t// Cancel loading data for autocomplete\n\t\t\t\t// Otherwise it could be received when another autocomplete is already opened\n\t\t\t\tthis.debouncedAutoComplete.clear()\n\n\t\t\t\t// Reset active item\n\t\t\t\tthis.autocompleteActiveId = undefined\n\n\t\t\t\tthis.setTributeFocusVisible(false)\n\t\t\t}\n\t\t},\n\n\t\tonTributeArrowKeyDown() {\n\t\t\tif (!this.isAutocompleteOpen) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.setTributeFocusVisible(true)\n\t\t\tthis.onTributeSelectedItemWillChange()\n\t\t},\n\n\t\tonTributeSelectedItemWillChange() {\n\t\t\t// Wait until tribute has updated the selected item\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tthis.autocompleteActiveId = this.getTributeSelectedItem()?.id\n\t\t\t})\n\t\t},\n\n\t\tsetupTributeIntegration() {\n\t\t\t// Setup integration only once on the first open\n\t\t\tif (this.isTributeIntegrationDone) {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.isTributeIntegrationDone = true\n\n\t\t\tconst tributeContainer = this.getTributeContainer()\n\n\t\t\t// For aria-controls\n\t\t\ttributeContainer.id = this.tributeId\n\n\t\t\t// Container with options must be a listbox\n\t\t\ttributeContainer.setAttribute('role', 'listbox')\n\t\t\t// Reset list+listitem role from ul+li\n\t\t\tconst ul = tributeContainer.children[0]\n\t\t\tul.setAttribute('role', 'presentation')\n\n\t\t\t// Tribute.js does not provide a way to react on show/hide\n\t\t\t// tribute-active-true/false events are fired on initial activation, which is too early with async autoComplete function\n\t\t\tthis.tributeStyleMutationObserver = new MutationObserver(([{ target }]) => {\n\t\t\t\tif (target.style.display !== 'none') {\n\t\t\t\t\t// Tribute is visible - there will be selected item\n\t\t\t\t\tthis.onTributeSelectedItemWillChange()\n\t\t\t\t}\n\t\t\t}).observe(tributeContainer, {\n\t\t\t\tattributes: true,\n\t\t\t\tattributeFilter: ['style'],\n\t\t\t})\n\n\t\t\t// Handle selecting new item on mouse selection\n\t\t\ttributeContainer.addEventListener('mousemove', () => {\n\t\t\t\tthis.setTributeFocusVisible(false)\n\t\t\t\tthis.onTributeSelectedItemWillChange()\n\t\t\t}, { passive: true })\n\t\t},\n\n\t\t/**\n\t\t * Set tribute-container--focus-visible class on the Tribute container when the user navigates the listbox via keyboard.\n\t\t *\n\t\t * Because the real focus is kept on the textbox, we cannot use the :focus-visible pseudo-class\n\t\t * to style selected options in the autocomplete listbox.\n\t\t *\n\t\t * @param {boolean} withFocusVisible - should the focus-visible class be added\n\t\t */\n\t\tsetTributeFocusVisible(withFocusVisible) {\n\t\t\tif (withFocusVisible) {\n\t\t\t\tthis.getTributeContainer().classList.add(this.$style['tribute-container--focus-visible'])\n\t\t\t} else {\n\t\t\t\tthis.getTributeContainer().classList.remove(this.$style['tribute-container--focus-visible'])\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Show tribute menu programmatically.\n\t\t * @param {string} trigger - trigger character, can be '/', '@', or ':'\n\t\t *\n\t\t * @public\n\t\t */\n\t\tshowTribute(trigger) {\n\t\t\tthis.focus()\n\t\t\tconst index = this.tribute.collection.findIndex(collection => collection.trigger === trigger)\n\t\t\tthis.tribute.showMenuForCollection(this.$refs.contenteditable, index)\n\t\t\tthis.updateValue(this.$refs.contenteditable.innerHTML)\n\t\t\tdocument.addEventListener('click', this.hideTribute, true)\n\t\t},\n\n\t\t/**\n\t\t * Hide tribute menu programmatically\n\t\t *\n\t\t */\n\t\thideTribute() {\n\t\t\tthis.tribute.hideMenu()\n\t\t\tdocument.removeEventListener('click', this.hideTribute, true)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n// Standalone styling, independent from server\n.rich-contenteditable {\n\t--contenteditable-block-offset: calc(2 * var(--default-grid-baseline));\n\t--contenteditable-inline-start-offset: calc(2 * var(--default-grid-baseline));\n\t--contenteditable-inline-end-offset: calc(2 * var(--default-grid-baseline));\n\tposition: relative;\n\twidth: auto;\n\n\t&__label {\n\t\tposition: absolute;\n\t\tmargin-inline: 14px;\n\t\tmax-width: fit-content;\n\t\tinset-block-start: 11px;\n\t\tinset-inline: 0;\n\t\t// Fix color so that users do not think the input already has content\n\t\tcolor: var(--color-text-maxcontrast);\n\t\t// only one line labels are allowed\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\t// forward events to input\n\t\tpointer-events: none;\n\t\t// Position transition\n\t\ttransition: height var(--animation-quick), inset-block-start var(--animation-quick), font-size var(--animation-quick), color var(--animation-quick), background-color var(--animation-quick) var(--animation-slow);\n\t}\n\n\t&__input:focus + &__label,\n\t&__input:not(&__input--empty) + &__label {\n\t\tinset-block-start: -10px;\n\t\tline-height: 1.5; // minimum allowed line height for accessibility\n\t\tfont-size: 13px; // minimum allowed font size for accessibility\n\t\tfont-weight: 500;\n\t\tborder-radius: var(--default-grid-baseline) var(--default-grid-baseline) 0 0;\n\t\tbackground-color: var(--color-main-background);\n\t\tpadding-inline: 5px;\n\t\tmargin-inline: 9px;\n\n\t\ttransition: height var(--animation-quick), inset-block-start var(--animation-quick), font-size var(--animation-quick), color var(--animation-quick);\n\t}\n\n\t&__input {\n\t\toverflow-y: auto;\n\t\twidth: auto;\n\t\tmargin: 0;\n\t\tpadding-block: var(--contenteditable-block-offset);\n\t\tpadding-inline: var(--contenteditable-inline-start-offset) var(--contenteditable-inline-end-offset);\n\t\tcursor: text;\n\t\twhite-space: pre-wrap;\n\t\tword-break: break-word;\n\t\tcolor: var(--color-main-text);\n\t\tborder: 2px solid var(--color-border-maxcontrast);\n\t\tborder-radius: var(--border-radius-large);\n\t\toutline: none;\n\t\tbackground-color: var(--color-main-background);\n\t\tfont-family: var(--font-face);\n\t\tfont-size: inherit;\n\t\tmin-height: var(--default-clickable-area);\n\t\tmax-height: calc(var(--default-clickable-area) * 5.5);\n\n\t\t&--has-label {\n\t\t\tmargin-top: 10px;\n\t\t}\n\n\t\t// Cannot use :empty because of firefox bug https://bugzilla.mozilla.org/show_bug.cgi?id=1513303\n\t\t&--empty:focus:before,\n\t\t&--empty:not(&--has-label):before {\n\t\t\tcontent: attr(aria-placeholder);\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\tposition: absolute;\n\t\t\twidth: calc(100% - var(--contenteditable-inline-start-offset) - var(--contenteditable-inline-end-offset));\n\t\t\theight: calc(100% - 2 * var(--contenteditable-block-offset));\n\t\t\toverflow: hidden;\n\t\t\twhite-space: nowrap;\n\t\t\ttext-overflow: ellipsis;\n\t\t}\n\n\t\t&[contenteditable='false']:not(&--disabled) {\n\t\t\tcursor: default;\n\t\t\tbackground-color: transparent;\n\t\t\tcolor: var(--color-main-text);\n\t\t\tborder-color: transparent;\n\t\t\topacity: 1;\n\t\t\tborder-radius: 0;\n\t\t}\n\n\t\t&--multiline {\n\t\t\tmin-height: calc(var(--default-clickable-area) * 3);\n\t\t\t// No max for mutiline\n\t\t\tmax-height: none;\n\t\t}\n\n\t\t&--disabled {\n\t\t\topacity: $opacity_disabled;\n\t\t\tcolor: var(--color-text-maxcontrast);\n\t\t\tborder: 2px solid var(--color-background-darker);\n\t\t\tborder-radius: var(--border-radius);\n\t\t\tbackground-color: var(--color-background-dark);\n\t\t}\n\t}\n}\n\n</style>\n\n<style lang=\"scss\" module>\n.tribute-container {\n\tz-index: 9000;\n\toverflow: auto;\n\t// Hide container root element while initializing\n\tposition: absolute;\n\tleft: -10000px;\n\t// Space it out a bit from the text\n\tmargin: var(--default-grid-baseline) 0;\n\tpadding: var(--default-grid-baseline);\n\tcolor: var(--color-text-maxcontrast);\n\tborder-radius: var(--border-radius-element, var(--border-radius));\n\tbackground: var(--color-main-background);\n\tbox-shadow: 0 1px 5px var(--color-box-shadow);\n\n\t&,\n\t& * {\n\t\tbox-sizing: border-box;\n\t}\n\n\tul {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: var(--default-grid-baseline);\n\t}\n\n\t.tribute-container__item {\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tborder-radius: var(--border-radius-small, var(--border-radius));\n\t\tpadding: var(--default-grid-baseline);\n\t\tcursor: pointer;\n\t\tmin-height: var(--clickable-area-small, auto);\n\n\t\t&:global(.highlight) {\n\t\t\tcolor: var(--color-main-text);\n\t\t\tbackground: var(--color-background-hover);\n\n\t\t\t&, * {\n\t\t\t\tcursor: pointer;\n\t\t\t}\n\t\t}\n\t}\n\n\t&.tribute-container--focus-visible {\n\t\t:global(.highlight).tribute-container__item {\n\t\t\toutline: 2px solid var(--color-main-text) !important;\n\t\t}\n\t}\n}\n\n.tribute-container-autocomplete {\n\tmin-width: 250px;\n\tmax-width: 300px;\n\t// Show maximum 4 entries and a half to show scroll\n\t// Autocomplete height\n\t// + 2 paddings inside autocomplete\n\t// + 1 padding gap\n\t// And 1.5 paddings - container's padding without the last gap\n\tmax-height: calc((var(--default-clickable-area) + 3 * var(--default-grid-baseline)) * 4.5 - 1.5 * var(--default-grid-baseline));\n}\n\n.tribute-container-emoji,\n.tribute-container-link {\n\tmin-width: 200px;\n\tmax-width: 200px;\n\t// Show maximum 5 entries and a half to show scroll\n\t// Item height\n\t// + 2 paddings around tribute item\n\t// + 1 padding gap\n\t// And 1.5 paddings - container's padding without the last gap\n\tmax-height: calc((24px + 3 * var(--default-grid-baseline)) * 5.5 - 1.5 * var(--default-grid-baseline));\n\n\t.tribute-item {\n\t\t// Take care of long names\n\t\twhite-space: nowrap;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t}\n}\n\n.tribute-container-link {\n\tmin-width: 200px;\n\tmax-width: 300px;\n\t.tribute-item {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\t&__title {\n\t\t\twhite-space: nowrap;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t}\n\t\t&__icon {\n\t\t\tmargin: auto 0;\n\t\t\twidth: 20px;\n\t\t\theight: 20px;\n\t\t\tobject-fit: contain;\n\t\t\tpadding-right: var(--default-grid-baseline);\n\t\t\tfilter: var(--background-invert-if-dark);\n\t\t}\n\t}\n}\n\n</style>\n"],"names":["_sfc_main","_hoisted_1","_openBlock","_createElementBlock","_createElementVNode","_normalizeClass","_normalizeStyle","_hoisted_2","_toDisplayString","_createBlock","_createCommentVNode","Tooltip","_withDirectives","_mergeProps","_withKeys","_withModifiers"],"mappings":"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"}
|
|
@@ -0,0 +1,445 @@
|
|
|
1
|
+
import '../assets/NcRichText-C_CIawDX.css';
|
|
2
|
+
import { N as NcReferenceWidget } from "./referencePickerModal-DPmXigHR.mjs";
|
|
3
|
+
import { U as URL_PATTERN, p as parseUrl, r as remarkAutolink, g as getRoute } from "./autolink-CKPk5rzg.mjs";
|
|
4
|
+
import axios from "@nextcloud/axios";
|
|
5
|
+
import { getSharingToken } from "@nextcloud/sharing/public";
|
|
6
|
+
import { getCurrentUser } from "@nextcloud/auth";
|
|
7
|
+
import { generateOcsUrl } from "@nextcloud/router";
|
|
8
|
+
import { resolveComponent, openBlock, createElementBlock, normalizeClass, Fragment, renderList, createBlock, createCommentVNode, ref, h } from "vue";
|
|
9
|
+
import { _ as _export_sfc } from "./_plugin-vue_export-helper-1tPrXgE0.mjs";
|
|
10
|
+
import { N as NcCheckboxRadioSwitch } from "./NcCheckboxRadioSwitch-Zndby-mL.mjs";
|
|
11
|
+
import { N as NcLoadingIcon } from "./NcLoadingIcon-DREmHXr2.mjs";
|
|
12
|
+
import { u } from "unist-builder";
|
|
13
|
+
import { visit } from "unist-util-visit";
|
|
14
|
+
import { G as GenRandomId } from "./GenRandomId-CMooMQt0.mjs";
|
|
15
|
+
import { unified } from "unified";
|
|
16
|
+
import remarkParse from "remark-parse";
|
|
17
|
+
import breaks from "remark-breaks";
|
|
18
|
+
import remark2rehype from "remark-rehype";
|
|
19
|
+
import rehype2react from "rehype-react";
|
|
20
|
+
import rehypeExternalLinks from "rehype-external-links";
|
|
21
|
+
import { RouterLink } from "vue-router";
|
|
22
|
+
const _sfc_main$1 = {
|
|
23
|
+
name: "NcReferenceList",
|
|
24
|
+
components: {
|
|
25
|
+
NcReferenceWidget
|
|
26
|
+
},
|
|
27
|
+
props: {
|
|
28
|
+
text: {
|
|
29
|
+
type: String,
|
|
30
|
+
default: ""
|
|
31
|
+
},
|
|
32
|
+
referenceData: {
|
|
33
|
+
type: Object,
|
|
34
|
+
default: null
|
|
35
|
+
},
|
|
36
|
+
limit: {
|
|
37
|
+
type: Number,
|
|
38
|
+
default: 1
|
|
39
|
+
},
|
|
40
|
+
displayFallback: {
|
|
41
|
+
type: Boolean,
|
|
42
|
+
default: false
|
|
43
|
+
},
|
|
44
|
+
interactive: {
|
|
45
|
+
type: Boolean,
|
|
46
|
+
default: true
|
|
47
|
+
},
|
|
48
|
+
interactiveOptIn: {
|
|
49
|
+
type: Boolean,
|
|
50
|
+
default: false
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
emits: ["loaded"],
|
|
54
|
+
data() {
|
|
55
|
+
return {
|
|
56
|
+
references: null,
|
|
57
|
+
loading: true
|
|
58
|
+
};
|
|
59
|
+
},
|
|
60
|
+
computed: {
|
|
61
|
+
isVisible() {
|
|
62
|
+
return this.loading || this.displayedReferences.length !== 0;
|
|
63
|
+
},
|
|
64
|
+
values() {
|
|
65
|
+
if (this.referenceData) {
|
|
66
|
+
return this.referenceData;
|
|
67
|
+
}
|
|
68
|
+
if (this.displayFallback && !this.loading && !this.references) {
|
|
69
|
+
return [this.fallbackReference];
|
|
70
|
+
}
|
|
71
|
+
return this.references ? Object.values(this.references) : [];
|
|
72
|
+
},
|
|
73
|
+
firstReference() {
|
|
74
|
+
return this.values[0] ?? null;
|
|
75
|
+
},
|
|
76
|
+
displayedReferences() {
|
|
77
|
+
return this.values.slice(0, this.limit);
|
|
78
|
+
},
|
|
79
|
+
fallbackReference() {
|
|
80
|
+
return {
|
|
81
|
+
accessible: true,
|
|
82
|
+
openGraphObject: {
|
|
83
|
+
id: this.text,
|
|
84
|
+
link: this.text,
|
|
85
|
+
name: this.text
|
|
86
|
+
},
|
|
87
|
+
richObjectType: "open-graph"
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
watch: {
|
|
92
|
+
text: "fetch"
|
|
93
|
+
},
|
|
94
|
+
mounted() {
|
|
95
|
+
this.fetch();
|
|
96
|
+
},
|
|
97
|
+
methods: {
|
|
98
|
+
fetch() {
|
|
99
|
+
this.loading = true;
|
|
100
|
+
if (this.referenceData) {
|
|
101
|
+
this.references = null;
|
|
102
|
+
this.loading = false;
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
if (!new RegExp(URL_PATTERN).exec(this.text)) {
|
|
106
|
+
this.references = null;
|
|
107
|
+
this.loading = false;
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
this.resolve().then((response) => {
|
|
111
|
+
this.references = response.data.ocs.data.references;
|
|
112
|
+
this.loading = false;
|
|
113
|
+
this.$emit("loaded");
|
|
114
|
+
}).catch((error) => {
|
|
115
|
+
console.error("Failed to extract references", error);
|
|
116
|
+
this.loading = false;
|
|
117
|
+
this.$emit("loaded");
|
|
118
|
+
});
|
|
119
|
+
},
|
|
120
|
+
resolve() {
|
|
121
|
+
const match = new RegExp(URL_PATTERN).exec(this.text.trim());
|
|
122
|
+
const isPublic = getCurrentUser() === null;
|
|
123
|
+
if (this.limit === 1 && match) {
|
|
124
|
+
return isPublic ? axios.get(generateOcsUrl("references/resolvePublic") + `?reference=${encodeURIComponent(match[0])}&sharingToken=${getSharingToken()}`) : axios.get(generateOcsUrl("references/resolve") + `?reference=${encodeURIComponent(match[0])}`);
|
|
125
|
+
}
|
|
126
|
+
return isPublic ? axios.post(generateOcsUrl("references/extractPublic"), {
|
|
127
|
+
text: this.text,
|
|
128
|
+
resolve: true,
|
|
129
|
+
limit: this.limit,
|
|
130
|
+
sharingToken: getSharingToken()
|
|
131
|
+
}) : axios.post(generateOcsUrl("references/extract"), {
|
|
132
|
+
text: this.text,
|
|
133
|
+
resolve: true,
|
|
134
|
+
limit: this.limit
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
140
|
+
const _component_NcReferenceWidget = resolveComponent("NcReferenceWidget");
|
|
141
|
+
return $options.isVisible ? (openBlock(), createElementBlock("div", {
|
|
142
|
+
key: 0,
|
|
143
|
+
class: normalizeClass(["widgets--list", { "icon-loading": $data.loading }])
|
|
144
|
+
}, [
|
|
145
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList($options.displayedReferences, (reference) => {
|
|
146
|
+
return openBlock(), createBlock(_component_NcReferenceWidget, {
|
|
147
|
+
key: reference?.openGraphObject?.id,
|
|
148
|
+
reference,
|
|
149
|
+
interactive: $props.interactive,
|
|
150
|
+
"interactive-opt-in": $props.interactiveOptIn
|
|
151
|
+
}, null, 8, ["reference", "interactive", "interactive-opt-in"]);
|
|
152
|
+
}), 128))
|
|
153
|
+
], 2)) : createCommentVNode("", true);
|
|
154
|
+
}
|
|
155
|
+
const NcReferenceList = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render], ["__scopeId", "data-v-8d575d2d"]]);
|
|
156
|
+
const remarkPlaceholder = function() {
|
|
157
|
+
return function(ast) {
|
|
158
|
+
visit(ast, (node) => node.type === "text", visitor);
|
|
159
|
+
function visitor(node, index, parent) {
|
|
160
|
+
const placeholders = node.value.split(/(\{[a-z\-_.0-9]+\})/ig).map((entry, index2, list) => {
|
|
161
|
+
const matches = entry.match(/^\{([a-z\-_.0-9]+)\}$/i);
|
|
162
|
+
if (!matches) {
|
|
163
|
+
return u("text", entry);
|
|
164
|
+
}
|
|
165
|
+
const [, component] = matches;
|
|
166
|
+
return u("element", {
|
|
167
|
+
tagName: `#${component}`,
|
|
168
|
+
children: []
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
parent.children.splice(index, 1, ...placeholders);
|
|
172
|
+
}
|
|
173
|
+
};
|
|
174
|
+
};
|
|
175
|
+
const prepareTextNode = ({ h: h2, context }, text) => {
|
|
176
|
+
if (context.autolink) {
|
|
177
|
+
text = parseUrl(text);
|
|
178
|
+
}
|
|
179
|
+
if (Array.isArray(text)) {
|
|
180
|
+
return text.map((entry) => {
|
|
181
|
+
if (typeof entry === "string") {
|
|
182
|
+
return entry;
|
|
183
|
+
}
|
|
184
|
+
const { component, props } = entry;
|
|
185
|
+
const componentClass = component.name === "NcLink" ? void 0 : "rich-text--component";
|
|
186
|
+
return h2(component, {
|
|
187
|
+
...props,
|
|
188
|
+
class: componentClass
|
|
189
|
+
});
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
return text;
|
|
193
|
+
};
|
|
194
|
+
const remarkGfm = ref(null);
|
|
195
|
+
async function importRemarkGfmLibrary() {
|
|
196
|
+
const module = await import("remark-gfm");
|
|
197
|
+
remarkGfm.value = module.default;
|
|
198
|
+
}
|
|
199
|
+
const rehypeHighlight = ref(null);
|
|
200
|
+
async function importRehypeHighlightLibrary() {
|
|
201
|
+
const module = await import("rehype-highlight");
|
|
202
|
+
rehypeHighlight.value = module.default;
|
|
203
|
+
}
|
|
204
|
+
const _sfc_main = {
|
|
205
|
+
name: "NcRichText",
|
|
206
|
+
components: {
|
|
207
|
+
NcReferenceList
|
|
208
|
+
},
|
|
209
|
+
props: {
|
|
210
|
+
text: {
|
|
211
|
+
type: String,
|
|
212
|
+
default: ""
|
|
213
|
+
},
|
|
214
|
+
arguments: {
|
|
215
|
+
type: Object,
|
|
216
|
+
default: () => {
|
|
217
|
+
return {};
|
|
218
|
+
}
|
|
219
|
+
},
|
|
220
|
+
referenceLimit: {
|
|
221
|
+
type: Number,
|
|
222
|
+
default: 0
|
|
223
|
+
},
|
|
224
|
+
referenceInteractive: {
|
|
225
|
+
type: Boolean,
|
|
226
|
+
default: true
|
|
227
|
+
},
|
|
228
|
+
referenceInteractiveOptIn: {
|
|
229
|
+
type: Boolean,
|
|
230
|
+
default: false
|
|
231
|
+
},
|
|
232
|
+
/** Provide data upfront to avoid extra http request */
|
|
233
|
+
references: {
|
|
234
|
+
type: Object,
|
|
235
|
+
default: null
|
|
236
|
+
},
|
|
237
|
+
markdownCssClasses: {
|
|
238
|
+
type: Object,
|
|
239
|
+
default: () => {
|
|
240
|
+
return {
|
|
241
|
+
a: "rich-text--external-link",
|
|
242
|
+
ol: "rich-text--ordered-list",
|
|
243
|
+
ul: "rich-text--un-ordered-list",
|
|
244
|
+
li: "rich-text--list-item",
|
|
245
|
+
strong: "rich-text--strong",
|
|
246
|
+
em: "rich-text--italic",
|
|
247
|
+
h1: "rich-text--heading rich-text--heading-1",
|
|
248
|
+
h2: "rich-text--heading rich-text--heading-2",
|
|
249
|
+
h3: "rich-text--heading rich-text--heading-3",
|
|
250
|
+
h4: "rich-text--heading rich-text--heading-4",
|
|
251
|
+
h5: "rich-text--heading rich-text--heading-5",
|
|
252
|
+
h6: "rich-text--heading rich-text--heading-6",
|
|
253
|
+
hr: "rich-text--hr",
|
|
254
|
+
table: "rich-text--table",
|
|
255
|
+
pre: "rich-text--pre",
|
|
256
|
+
code: "rich-text--code",
|
|
257
|
+
blockquote: "rich-text--blockquote"
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
},
|
|
261
|
+
useMarkdown: {
|
|
262
|
+
type: Boolean,
|
|
263
|
+
default: false
|
|
264
|
+
},
|
|
265
|
+
/** Provide GitHub Flavored Markdown syntax */
|
|
266
|
+
useExtendedMarkdown: {
|
|
267
|
+
type: Boolean,
|
|
268
|
+
default: false
|
|
269
|
+
},
|
|
270
|
+
/** Provide event from rendered markdown inputs */
|
|
271
|
+
interactive: {
|
|
272
|
+
type: Boolean,
|
|
273
|
+
default: false
|
|
274
|
+
},
|
|
275
|
+
autolink: {
|
|
276
|
+
type: Boolean,
|
|
277
|
+
default: true
|
|
278
|
+
}
|
|
279
|
+
},
|
|
280
|
+
emits: ["interact:todo"],
|
|
281
|
+
data() {
|
|
282
|
+
return {
|
|
283
|
+
parentId: GenRandomId(5)
|
|
284
|
+
};
|
|
285
|
+
},
|
|
286
|
+
watch: {
|
|
287
|
+
useExtendedMarkdown: {
|
|
288
|
+
handler(value) {
|
|
289
|
+
if (value && !remarkGfm.value) {
|
|
290
|
+
importRemarkGfmLibrary();
|
|
291
|
+
}
|
|
292
|
+
},
|
|
293
|
+
immediate: true
|
|
294
|
+
}
|
|
295
|
+
},
|
|
296
|
+
methods: {
|
|
297
|
+
renderPlaintext() {
|
|
298
|
+
const placeholders = this.text.split(/(\{[a-z\-_.0-9]+\})/ig).map((entry) => {
|
|
299
|
+
const matches = entry.match(/^\{([a-z\-_.0-9]+)\}$/i);
|
|
300
|
+
if (!matches) {
|
|
301
|
+
return prepareTextNode({ h, context: this }, entry);
|
|
302
|
+
}
|
|
303
|
+
const argumentId = matches[1];
|
|
304
|
+
const argument = this.arguments[argumentId];
|
|
305
|
+
if (typeof argument === "object") {
|
|
306
|
+
const { component, props } = argument;
|
|
307
|
+
return h(typeof component === "string" ? resolveComponent(component) : component, {
|
|
308
|
+
...props,
|
|
309
|
+
class: "rich-text--component"
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
if (argument) {
|
|
313
|
+
return h("span", { class: "rich-text--fallback" }, argument);
|
|
314
|
+
}
|
|
315
|
+
return entry;
|
|
316
|
+
});
|
|
317
|
+
return h("div", { class: "rich-text--wrapper" }, [
|
|
318
|
+
h("div", {}, placeholders.flat()),
|
|
319
|
+
this.referenceLimit > 0 ? h("div", { class: "rich-text--reference-widget" }, [
|
|
320
|
+
h(NcReferenceList, {
|
|
321
|
+
text: this.text,
|
|
322
|
+
referenceData: this.references,
|
|
323
|
+
interactive: this.referenceInteractive,
|
|
324
|
+
interactiveOptIn: this.referenceInteractiveOptIn
|
|
325
|
+
})
|
|
326
|
+
]) : null
|
|
327
|
+
]);
|
|
328
|
+
},
|
|
329
|
+
renderMarkdown() {
|
|
330
|
+
const renderedMarkdown = unified().use(remarkParse).use(remarkAutolink, {
|
|
331
|
+
autolink: this.autolink,
|
|
332
|
+
useMarkdown: this.useMarkdown,
|
|
333
|
+
useExtendedMarkdown: this.useExtendedMarkdown
|
|
334
|
+
}).use(this.useExtendedMarkdown ? remarkGfm.value : void 0).use(breaks).use(remark2rehype, {
|
|
335
|
+
handlers: {
|
|
336
|
+
component(toHast, node) {
|
|
337
|
+
return toHast(node, node.component, { value: node.value });
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
}).use(this.useExtendedMarkdown ? rehypeHighlight.value : void 0).use(remarkPlaceholder).use(rehypeExternalLinks, {
|
|
341
|
+
target: "_blank",
|
|
342
|
+
rel: ["noopener noreferrer"]
|
|
343
|
+
}).use(rehype2react, {
|
|
344
|
+
Fragment,
|
|
345
|
+
jsx: this.createElement,
|
|
346
|
+
jsxs: this.createElement,
|
|
347
|
+
elementAttributeNameCase: "html",
|
|
348
|
+
prefix: false
|
|
349
|
+
}).processSync(
|
|
350
|
+
this.text.replace(/</gmi, "<").replace(/>/gmi, ">")
|
|
351
|
+
).result;
|
|
352
|
+
return h("div", { class: "rich-text--wrapper rich-text--wrapper-markdown" }, [
|
|
353
|
+
renderedMarkdown,
|
|
354
|
+
this.referenceLimit > 0 ? h("div", { class: "rich-text--reference-widget" }, [
|
|
355
|
+
h(NcReferenceList, {
|
|
356
|
+
text: this.text,
|
|
357
|
+
referenceData: this.references,
|
|
358
|
+
interactive: this.referenceInteractive,
|
|
359
|
+
interactiveOptIn: this.referenceInteractiveOptIn
|
|
360
|
+
})
|
|
361
|
+
]) : null
|
|
362
|
+
]);
|
|
363
|
+
},
|
|
364
|
+
createElement(type, props, key) {
|
|
365
|
+
if (key) {
|
|
366
|
+
props.key = key;
|
|
367
|
+
}
|
|
368
|
+
let children = props.children ?? [];
|
|
369
|
+
delete props.children;
|
|
370
|
+
if (typeof children === "string") {
|
|
371
|
+
children = children.replace(/</gmi, "<");
|
|
372
|
+
}
|
|
373
|
+
if (!String(type).startsWith("#")) {
|
|
374
|
+
let nestedNode = null;
|
|
375
|
+
if (this.useExtendedMarkdown && remarkGfm.value) {
|
|
376
|
+
if (String(type) === "code" && !rehypeHighlight.value && props?.class?.includes("language")) {
|
|
377
|
+
importRehypeHighlightLibrary();
|
|
378
|
+
}
|
|
379
|
+
if (String(type) === "li" && Array.isArray(children) && children[0].type === "input" && children[0].props.type === "checkbox") {
|
|
380
|
+
const [inputNode, , ...labelParts] = children;
|
|
381
|
+
const nestedNodeIndex = labelParts.findIndex((child) => ["ul", "ol", "li", "blockquote", "pre"].includes(child.tag));
|
|
382
|
+
if (nestedNodeIndex !== -1) {
|
|
383
|
+
nestedNode = labelParts[nestedNodeIndex];
|
|
384
|
+
labelParts.splice(nestedNodeIndex);
|
|
385
|
+
}
|
|
386
|
+
const id = this.parentId + "-markdown-input-" + GenRandomId(5);
|
|
387
|
+
const propsToForward = { ...inputNode.props };
|
|
388
|
+
delete propsToForward.checked;
|
|
389
|
+
const inputComponent = h(NcCheckboxRadioSwitch, {
|
|
390
|
+
...propsToForward,
|
|
391
|
+
modelValue: inputNode.props.checked,
|
|
392
|
+
id,
|
|
393
|
+
disabled: !this.interactive,
|
|
394
|
+
"onUpdate:modelValue": () => {
|
|
395
|
+
this.$emit("interact:todo", id);
|
|
396
|
+
}
|
|
397
|
+
}, { default: () => labelParts });
|
|
398
|
+
return h(type, props, [inputComponent, nestedNode]);
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
if (String(type) === "a") {
|
|
402
|
+
const route = getRoute(this.$router, props.href);
|
|
403
|
+
if (route) {
|
|
404
|
+
delete props.href;
|
|
405
|
+
delete props.target;
|
|
406
|
+
return h(RouterLink, {
|
|
407
|
+
...props,
|
|
408
|
+
to: route
|
|
409
|
+
}, { default: () => children });
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
return h(type, props, children);
|
|
413
|
+
}
|
|
414
|
+
const placeholder = this.arguments[type.slice(1)];
|
|
415
|
+
if (!placeholder) {
|
|
416
|
+
return h("span", { ...props, class: "rich-text--fallback" }, [`{${type.slice(1)}}`]);
|
|
417
|
+
}
|
|
418
|
+
if (!placeholder.component) {
|
|
419
|
+
return h("span", { ...props }, [placeholder]);
|
|
420
|
+
}
|
|
421
|
+
if (this.useExtendedMarkdown && !remarkGfm.value) {
|
|
422
|
+
return h("div", { class: "rich-text--wrapper" }, [
|
|
423
|
+
h(NcLoadingIcon)
|
|
424
|
+
]);
|
|
425
|
+
}
|
|
426
|
+
return h(
|
|
427
|
+
typeof placeholder.component === "string" ? resolveComponent(placeholder.component) : placeholder.component,
|
|
428
|
+
{
|
|
429
|
+
...props,
|
|
430
|
+
...placeholder.props,
|
|
431
|
+
class: "rich-text--component"
|
|
432
|
+
},
|
|
433
|
+
{ default: () => children }
|
|
434
|
+
);
|
|
435
|
+
}
|
|
436
|
+
},
|
|
437
|
+
render() {
|
|
438
|
+
return this.useMarkdown || this.useExtendedMarkdown ? this.renderMarkdown() : this.renderPlaintext();
|
|
439
|
+
}
|
|
440
|
+
};
|
|
441
|
+
const NcRichText = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-724f3ec5"]]);
|
|
442
|
+
export {
|
|
443
|
+
NcRichText as N,
|
|
444
|
+
NcReferenceList as a
|
|
445
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NcRichText-DeQGaF-c.mjs","sources":["../../src/components/NcRichText/NcReferenceList.vue","../../src/components/NcRichText/placeholder.js","../../src/components/NcRichText/NcRichText.vue"],"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<div v-if=\"isVisible\" class=\"widgets--list\" :class=\"{'icon-loading': loading }\">\n\t\t<NcReferenceWidget v-for=\"reference in displayedReferences\"\n\t\t\t:key=\"reference?.openGraphObject?.id\"\n\t\t\t:reference=\"reference\"\n\t\t\t:interactive=\"interactive\"\n\t\t\t:interactive-opt-in=\"interactiveOptIn\" />\n\t</div>\n</template>\n<script>\nimport NcReferenceWidget from './NcReferenceWidget.vue'\nimport { URL_PATTERN } from './helpers.js'\n\nimport axios from '@nextcloud/axios'\nimport { getSharingToken } from '@nextcloud/sharing/public'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { generateOcsUrl } from '@nextcloud/router'\n\nexport default {\n\tname: 'NcReferenceList',\n\tcomponents: {\n\t\tNcReferenceWidget,\n\t},\n\tprops: {\n\t\ttext: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\treferenceData: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t\tlimit: {\n\t\t\ttype: Number,\n\t\t\tdefault: 1,\n\t\t},\n\t\tdisplayFallback: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\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\temits: ['loaded'],\n\tdata() {\n\t\treturn {\n\t\t\treferences: null,\n\t\t\tloading: true,\n\t\t}\n\t},\n\tcomputed: {\n\t\tisVisible() {\n\t\t\treturn this.loading || this.displayedReferences.length !== 0\n\t\t},\n\t\tvalues() {\n\t\t\tif (this.referenceData) {\n\t\t\t\treturn this.referenceData\n\t\t\t}\n\n\t\t\tif (this.displayFallback && !this.loading && !this.references) {\n\t\t\t\treturn [this.fallbackReference]\n\t\t\t}\n\n\t\t\treturn this.references ? Object.values(this.references) : []\n\t\t},\n\t\tfirstReference() {\n\t\t\treturn this.values[0] ?? null\n\t\t},\n\t\tdisplayedReferences() {\n\t\t\treturn this.values.slice(0, this.limit)\n\t\t},\n\t\tfallbackReference() {\n\t\t\treturn {\n\t\t\t\taccessible: true,\n\t\t\t\topenGraphObject: {\n\t\t\t\t\tid: this.text,\n\t\t\t\t\tlink: this.text,\n\t\t\t\t\tname: this.text,\n\t\t\t\t},\n\t\t\t\trichObjectType: 'open-graph',\n\t\t\t}\n\t\t},\n\t},\n\twatch: {\n\t\ttext: 'fetch',\n\t},\n\tmounted() {\n\t\tthis.fetch()\n\t},\n\tmethods: {\n\t\tfetch() {\n\t\t\tthis.loading = true\n\t\t\tif (this.referenceData) {\n\t\t\t\tthis.references = null\n\t\t\t\tthis.loading = false\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (!(new RegExp(URL_PATTERN).exec(this.text))) {\n\t\t\t\tthis.references = null\n\t\t\t\tthis.loading = false\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.resolve().then((response) => {\n\t\t\t\tthis.references = response.data.ocs.data.references\n\t\t\t\tthis.loading = false\n\t\t\t\tthis.$emit('loaded')\n\t\t\t}).catch((error) => {\n\t\t\t\tconsole.error('Failed to extract references', error)\n\t\t\t\tthis.loading = false\n\t\t\t\tthis.$emit('loaded')\n\t\t\t})\n\t\t},\n\t\tresolve() {\n\t\t\tconst match = (new RegExp(URL_PATTERN).exec(this.text.trim()))\n\t\t\tconst isPublic = getCurrentUser() === null\n\t\t\tif (this.limit === 1 && match) {\n\t\t\t\treturn isPublic\n\t\t\t\t\t? axios.get(generateOcsUrl('references/resolvePublic') + `?reference=${encodeURIComponent(match[0])}&sharingToken=${getSharingToken()}`)\n\t\t\t\t\t: axios.get(generateOcsUrl('references/resolve') + `?reference=${encodeURIComponent(match[0])}`)\n\t\t\t}\n\n\t\t\treturn isPublic\n\t\t\t\t? axios.post(generateOcsUrl('references/extractPublic'), {\n\t\t\t\t\ttext: this.text,\n\t\t\t\t\tresolve: true,\n\t\t\t\t\tlimit: this.limit,\n\t\t\t\t\tsharingToken: getSharingToken(),\n\t\t\t\t})\n\t\t\t\t: axios.post(generateOcsUrl('references/extract'), {\n\t\t\t\t\ttext: this.text,\n\t\t\t\t\tresolve: true,\n\t\t\t\t\tlimit: this.limit,\n\t\t\t\t})\n\t\t},\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n.widgets--list {\n\twidth: 100%;\n\tmin-height: var(--default-clickable-area);\n}\n</style>\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { u } from 'unist-builder'\nimport { visit } from 'unist-util-visit'\nimport { parseUrl } from './autolink.ts'\n\nexport const remarkPlaceholder = function() {\n\treturn function(ast) {\n\t\tvisit(ast, (node) => node.type === 'text', visitor)\n\n\t\t/**\n\t\t *\n\t\t * @param {object} node The node\n\t\t * @param {number} index The index of the node\n\t\t * @param {object} parent The parent node\n\t\t */\n\t\tfunction visitor(node, index, parent) {\n\t\t\tconst placeholders = node.value.split(/(\\{[a-z\\-_.0-9]+\\})/ig)\n\t\t\t\t.map((entry, index, list) => {\n\t\t\t\t\tconst matches = entry.match(/^\\{([a-z\\-_.0-9]+)\\}$/i)\n\t\t\t\t\tif (!matches) {\n\t\t\t\t\t\treturn u('text', entry)\n\t\t\t\t\t}\n\t\t\t\t\tconst [, component] = matches\n\t\t\t\t\treturn u('element', {\n\t\t\t\t\t\ttagName: `#${component}`,\n\t\t\t\t\t\tchildren: [],\n\t\t\t\t\t})\n\t\t\t\t})\n\n\t\t\tparent.children.splice(index, 1, ...placeholders)\n\t\t}\n\t}\n}\n\nexport const prepareTextNode = ({ h, context }, text) => {\n\tif (context.autolink) {\n\t\ttext = parseUrl(text)\n\t}\n\tif (Array.isArray(text)) {\n\t\treturn text.map((entry) => {\n\t\t\tif (typeof entry === 'string') {\n\t\t\t\treturn entry\n\t\t\t}\n\t\t\tconst { component, props } = entry\n\t\t\t// do not override class of NcLink\n\t\t\tconst componentClass = component.name === 'NcLink' ? undefined : 'rich-text--component'\n\t\t\treturn h(component, {\n\t\t\t\t...props,\n\t\t\t\tclass: componentClass,\n\t\t\t})\n\t\t})\n\t}\n\treturn text\n}\n","<!--\n - SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<docs>\n### General description\n\nThis component displays rich text with optional autolink or [Markdown support](https://www.markdownguide.org/basic-syntax/).\n\n```vue\n<template>\n\t<div>\n\t\t<textarea v-model=\"text\" />\n\t\t<NcCheckboxRadioSwitch v-model=\"autolink\" type=\"checkbox\">Autolink</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch v-model=\"useMarkdown\" type=\"checkbox\">Use Markdown</NcCheckboxRadioSwitch>\n\n\t\t<NcRichText\n\t\t\t:class=\"{'plain-text': !useMarkdown }\"\n\t\t\t:text=\"text\" :autolink=\"autolink\" :arguments=\"args\"\n\t\t\t:use-markdown=\"useMarkdown\" />\n\t</div>\n</template>\n<script>\nexport default {\n\tdata() {\n\t\treturn {\n\t\t\ttext: `## Hello everyone 🎉\nThe file {file} was added by {username}. Visit https://nextcloud.com to check it!\n\nSome examples for markdown syntax:\n1. **bold text**\n2. _italic text_\n3. example of \\`inline code\\`\n\n> blockquote example\n`,\n\t\t\tautolink: true,\n\t\t\tuseMarkdown: true,\n\t\t\targs: {\n\t\t\t\tfile: 'MyDocument.odt',\n\t\t\t\tusername: {\n\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\tprops: {\n\t\t\t\t\t\tdisplayName: 'Jane Doe'\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t}\n\t},\n}\n</script>\n<style lang=\"scss\">\ntextarea {\n\twidth: 100%;\n\theight: 200px;\n}\n\n.plain-text {\n\twhite-space: pre-line;\n}\n</style>\n```\n\n### Flavored Markdown\n\nThis component can support [Github Flavored Markdown](https://github.github.com/gfm/).\nIt adds such elements, as tables, task lists, strikethrough, and supports code syntax highlighting and autolinks by default\n\nIt is also possible to make a rendered content interactive and listen for events\n\n```vue\n<template>\n\t<div>\n\t\t<textarea v-model=\"text\" />\n\n\t\t<NcRichText :text=\"text\"\n\t\t\t:use-extended-markdown=\"true\"\n\t\t\t:interactive=\"true\"\n\t\t\t@interact:todo=\"handleInteraction\"/>\n\t</div>\n</template>\n<script>\n\texport default {\n\t\tdata() {\n\t\t\treturn {\n\t\t\t\ttext: `## Try flavored markdown right now!\n\n~~strikethrough~~\n\n- [ ] task to be done\n- [x] task completed\n\nTable header | Column A | Column B\n-- | -- | --\nTable row | value A | value B\n\n---\n\n\\`\\`\\`js\nconst GenRandomId = (length) => {\n\\treturn Math.random()\n\\t\\t.toString(36)\n\\t\\t.replace(/[^a-z]+/g, '')\n\\t\\t.slice(0, length || 5)\n}\n\\`\\`\\`\n`,\n\t\t\t}\n\t\t},\n\t\tmethods: {\n\t\t\thandleInteraction(id) {\n\t\t\t\tconst parentId = id.split('-markdown-input-')[0]\n\t\t\t\tconst index = Array.from(document.querySelectorAll(`span[id^=\"${parentId}-markdown-input-\"]`)).findIndex((el) => el.id.includes(id))\n\t\t\t\tif (index === -1 ) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tlet checkBoxIndex = 0\n\t\t\t\tlet lines = this.text.split('\\n')\n\t\t\t\tfor (let i = 0; i < lines.length; i++) {\n\t\t\t\t\tif (lines[i].includes('[ ]') || lines[i].includes('[x]')) {\n\t\t\t\t\t\tif (checkBoxIndex === index) {\n\t\t\t\t\t\t\tconst isChecked = lines[i].includes('[x]')\n\t\t\t\t\t\t\tif (isChecked) {\n\t\t\t\t\t\t\t\tlines[i] = lines[i].replace('[x]', '[ ]')\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tlines[i] = lines[i].replace('[ ]', '[x]')\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcheckBoxIndex++\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.text = lines.join('\\n')\n\t\t\t},\n\t\t},\n\t}\n</script>\n<style lang=\"scss\">\ntextarea {\n\twidth: 100%;\n\theight: 200px;\n}\n</style>\n```\n\n### Usage with NcRichContenteditable\n\nSee [NcRichContenteditable](#/Components/NcRichContenteditable) documentation for more information\n\n```vue\n<template>\n\t<div>\n\t\t<NcRichContenteditable v-model=\"message\"\n\t\t\t:auto-complete=\"autoComplete\"\n\t\t\t:maxlength=\"100\"\n\t\t\t:user-data=\"userData\"\n\t\t\tplaceholder=\"Try mentioning user @Test01 or inserting emoji :smile\"\n\t\t\t@submit=\"onSubmit\" />\n\n\t\t<NcCheckboxRadioSwitch v-model=\"autolink\" type=\"checkbox\">Autolink</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch v-model=\"useMarkdown\" type=\"checkbox\">Use Markdown</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch v-model=\"useExtendedMarkdown\" type=\"checkbox\">Use extended Markdown</NcCheckboxRadioSwitch>\n\n\t\t<NcRichText :text=\"text\"\n\t\t\t:autolink=\"autolink\"\n\t\t\t:arguments=\"userMentions\"\n\t\t\t:use-markdown=\"useMarkdown\"\n\t\t\t:use-extended-markdown=\"useExtendedMarkdown\" />\n\t</div>\n</template>\n<script>\n\texport default {\n\t\tdata() {\n\t\t\treturn {\n\t\t\t\tmessage: '',\n\t\t\t\tautolink: true,\n\t\t\t\tuseMarkdown: true,\n\t\t\t\tuseExtendedMarkdown: true,\n\t\t\t\tuserData: {\n\t\t\t\t\tTest01: {\n\t\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\t\tid: 'Test01',\n\t\t\t\t\t\tlabel: 'Test01',\n\t\t\t\t\t\tsource: 'users',\n\t\t\t\t\t\tprimary: true,\n\t\t\t\t\t},\n\t\t\t\t\tTest02: {\n\t\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\t\tid: 'Test02',\n\t\t\t\t\t\tlabel: 'Test02',\n\t\t\t\t\t\tsource: 'users',\n\t\t\t\t\t\tstatus: {\n\t\t\t\t\t\t\tclearAt: null,\n\t\t\t\t\t\t\ticon: '🎡',\n\t\t\t\t\t\t\tmessage: 'Visiting London',\n\t\t\t\t\t\t\tstatus: 'away',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsubline: 'Visiting London',\n\t\t\t\t\t},\n\t\t\t\t\t'Test@User': {\n\t\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\t\tid: 'Test@User',\n\t\t\t\t\t\tlabel: 'Test 03',\n\t\t\t\t\t\tsource: 'users',\n\t\t\t\t\t\tstatus: {\n\t\t\t\t\t\t\tclearAt: null,\n\t\t\t\t\t\t\ticon: '🎡',\n\t\t\t\t\t\t\tmessage: 'Having space in my name',\n\t\t\t\t\t\t\tstatus: 'online',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsubline: 'Visiting London',\n\t\t\t\t\t},\n\t\t\t\t\t'Test Offline': {\n\t\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\t\tid: 'Test Offline',\n\t\t\t\t\t\tlabel: 'Test Offline',\n\t\t\t\t\t\tsource: 'users',\n\t\t\t\t\t\tstatus: {\n\t\t\t\t\t\t\tclearAt: null,\n\t\t\t\t\t\t\ticon: null,\n\t\t\t\t\t\t\tmessage: null,\n\t\t\t\t\t\t\tstatus: 'offline',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsubline: null,\n\t\t\t\t\t},\n\t\t\t\t\t'Test DND': {\n\t\t\t\t\t\ticon: 'icon-user',\n\t\t\t\t\t\tid: 'Test DND',\n\t\t\t\t\t\tlabel: 'Test DND',\n\t\t\t\t\t\tsource: 'users',\n\t\t\t\t\t\tstatus: {\n\t\t\t\t\t\t\tclearAt: null,\n\t\t\t\t\t\t\ticon: null,\n\t\t\t\t\t\t\tmessage: 'Out sick',\n\t\t\t\t\t\t\tstatus: 'dnd',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tsubline: 'Out sick',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tuserMentions: {\n\t\t\t\t\t'user-1': {\n\t\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\tdisplayName: 'Test01',\n\t\t\t\t\t\t\tuser: 'Test01',\n\t\t\t\t\t\t\tprimary: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t'user-2': {\n\t\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\tdisplayName: 'Test02',\n\t\t\t\t\t\t\tuser: 'Test02',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t'user-3': {\n\t\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\tdisplayName: 'Test 03',\n\t\t\t\t\t\t\tuser: 'Test@User',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t'user-4': {\n\t\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\tdisplayName: 'Test Offline',\n\t\t\t\t\t\t\tuser: 'Test Offline',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t'user-5': {\n\t\t\t\t\t\tcomponent: 'NcUserBubble',\n\t\t\t\t\t\tprops: {\n\t\t\t\t\t\t\tdisplayName: 'Test DND',\n\t\t\t\t\t\t\tuser: 'Test DND',\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}\n\t\t},\n\t\tcomputed: {\n\t\t\ttext() {\n\t\t\t\treturn this.message\n\t\t\t\t\t\t.replace('@Test01', '{user-1}')\n\t\t\t\t\t\t.replace('@Test02', '{user-2}')\n\t\t\t\t\t\t.replace('@Test@User', '{user-3}')\n\t\t\t\t\t\t.replace('@\"Test Offline\"', '{user-4}')\n\t\t\t\t\t\t.replace('@\"Test DND\"', '{user-5}')\n\t\t\t},\n\t\t},\n\t\tmethods: {\n\t\t\tautoComplete(search, callback) {\n\t\t\t\tcallback(Object.values(this.userData))\n\t\t\t},\n\t\t\tonSubmit() {\n\t\t\t\talert(this.message)\n\t\t\t}\n\t\t}\n\t}\n</script>\n```\n</docs>\n\n<script>\nimport NcReferenceList from './NcReferenceList.vue'\nimport NcCheckboxRadioSwitch from '../NcCheckboxRadioSwitch/NcCheckboxRadioSwitch.vue'\nimport NcLoadingIcon from '../NcLoadingIcon/NcLoadingIcon.vue'\nimport { getRoute, remarkAutolink } from './autolink.ts'\nimport { remarkPlaceholder, prepareTextNode } from './placeholder.js'\nimport GenRandomId from '../../utils/GenRandomId.js'\n\nimport { unified } from 'unified'\nimport remarkParse from 'remark-parse'\nimport breaks from 'remark-breaks'\nimport remark2rehype from 'remark-rehype'\nimport rehype2react from 'rehype-react'\nimport rehypeExternalLinks from 'rehype-external-links'\nimport { Fragment, h, ref, resolveComponent } from 'vue'\nimport { RouterLink } from 'vue-router'\n\n/**\n * Heavy libraries should be loaded on demand to reduce component size\n */\nconst remarkGfm = ref(null)\n/**\n * Load 'remark-gfm' library when prop `useExtendedMarkdown` is truthy\n */\nasync function importRemarkGfmLibrary() {\n\tconst module = await import('remark-gfm')\n\tremarkGfm.value = module.default\n}\n\nconst rehypeHighlight = ref(null)\n/**\n * Load 'rehype-highlight' library when code block is rendered with `useExtendedMarkdown`\n */\nasync function importRehypeHighlightLibrary() {\n\tconst module = await import('rehype-highlight')\n\trehypeHighlight.value = module.default\n}\n\nexport default {\n\tname: 'NcRichText',\n\tcomponents: {\n\t\tNcReferenceList,\n\t},\n\tprops: {\n\t\ttext: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\targuments: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {\n\t\t\t\treturn {}\n\t\t\t},\n\t\t},\n\t\treferenceLimit: {\n\t\t\ttype: Number,\n\t\t\tdefault: 0,\n\t\t},\n\t\treferenceInteractive: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\treferenceInteractiveOptIn: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t/** Provide data upfront to avoid extra http request */\n\t\treferences: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t\tmarkdownCssClasses: {\n\t\t\ttype: Object,\n\t\t\tdefault: () => {\n\t\t\t\treturn {\n\t\t\t\t\ta: 'rich-text--external-link',\n\t\t\t\t\tol: 'rich-text--ordered-list',\n\t\t\t\t\tul: 'rich-text--un-ordered-list',\n\t\t\t\t\tli: 'rich-text--list-item',\n\t\t\t\t\tstrong: 'rich-text--strong',\n\t\t\t\t\tem: 'rich-text--italic',\n\t\t\t\t\th1: 'rich-text--heading rich-text--heading-1',\n\t\t\t\t\th2: 'rich-text--heading rich-text--heading-2',\n\t\t\t\t\th3: 'rich-text--heading rich-text--heading-3',\n\t\t\t\t\th4: 'rich-text--heading rich-text--heading-4',\n\t\t\t\t\th5: 'rich-text--heading rich-text--heading-5',\n\t\t\t\t\th6: 'rich-text--heading rich-text--heading-6',\n\t\t\t\t\thr: 'rich-text--hr',\n\t\t\t\t\ttable: 'rich-text--table',\n\t\t\t\t\tpre: 'rich-text--pre',\n\t\t\t\t\tcode: 'rich-text--code',\n\t\t\t\t\tblockquote: 'rich-text--blockquote',\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t\tuseMarkdown: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t/** Provide GitHub Flavored Markdown syntax */\n\t\tuseExtendedMarkdown: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t/** Provide event from rendered markdown inputs */\n\t\tinteractive: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tautolink: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\temits: ['interact:todo'],\n\n\tdata() {\n\t\treturn {\n\t\t\tparentId: GenRandomId(5),\n\t\t}\n\t},\n\n\twatch: {\n\t\tuseExtendedMarkdown: {\n\t\t\thandler(value) {\n\t\t\t\tif (value && !remarkGfm.value) {\n\t\t\t\t\timportRemarkGfmLibrary()\n\t\t\t\t}\n\t\t\t},\n\t\t\timmediate: true,\n\t\t},\n\t},\n\n\tmethods: {\n\t\trenderPlaintext() {\n\t\t\tconst placeholders = this.text.split(/(\\{[a-z\\-_.0-9]+\\})/ig).map((entry) => {\n\t\t\t\tconst matches = entry.match(/^\\{([a-z\\-_.0-9]+)\\}$/i)\n\t\t\t\t// just return plain string nodes as text\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn prepareTextNode({ h, context: this }, entry)\n\t\t\t\t}\n\t\t\t\t// return component instance if argument is an object\n\t\t\t\tconst argumentId = matches[1]\n\t\t\t\tconst argument = this.arguments[argumentId]\n\t\t\t\tif (typeof argument === 'object') {\n\t\t\t\t\tconst { component, props } = argument\n\t\t\t\t\treturn h((typeof component === 'string') ? resolveComponent(component) : component, {\n\t\t\t\t\t\t...props,\n\t\t\t\t\t\tclass: 'rich-text--component',\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tif (argument) {\n\t\t\t\t\treturn h('span', { class: 'rich-text--fallback' }, argument)\n\t\t\t\t}\n\t\t\t\treturn entry\n\t\t\t})\n\t\t\treturn h('div', { class: 'rich-text--wrapper' }, [\n\t\t\t\th('div', {}, placeholders.flat()),\n\t\t\t\tthis.referenceLimit > 0\n\t\t\t\t\t? h('div', { class: 'rich-text--reference-widget' }, [\n\t\t\t\t\t\th(NcReferenceList, {\n\t\t\t\t\t\t\ttext: this.text,\n\t\t\t\t\t\t\treferenceData: this.references,\n\t\t\t\t\t\t\tinteractive: this.referenceInteractive,\n\t\t\t\t\t\t\tinteractiveOptIn: this.referenceInteractiveOptIn,\n\t\t\t\t\t\t}),\n\t\t\t\t\t])\n\t\t\t\t\t: null,\n\t\t\t])\n\t\t},\n\t\trenderMarkdown() {\n\t\t\tconst renderedMarkdown = unified()\n\t\t\t\t.use(remarkParse)\n\t\t\t\t.use(remarkAutolink, {\n\t\t\t\t\tautolink: this.autolink,\n\t\t\t\t\tuseMarkdown: this.useMarkdown,\n\t\t\t\t\tuseExtendedMarkdown: this.useExtendedMarkdown,\n\t\t\t\t})\n\t\t\t\t.use(this.useExtendedMarkdown ? remarkGfm.value : undefined)\n\t\t\t\t.use(breaks)\n\t\t\t\t.use(remark2rehype, {\n\t\t\t\t\thandlers: {\n\t\t\t\t\t\tcomponent(toHast, node) {\n\t\t\t\t\t\t\treturn toHast(node, node.component, { value: node.value })\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t})\n\t\t\t\t.use(this.useExtendedMarkdown ? rehypeHighlight.value : undefined)\n\t\t\t\t// .use(rehypeAddClasses, this.markdownCssClasses)\n\t\t\t\t.use(remarkPlaceholder)\n\t\t\t\t.use(rehypeExternalLinks, {\n\t\t\t\t\ttarget: '_blank',\n\t\t\t\t\trel: ['noopener noreferrer'],\n\t\t\t\t})\n\t\t\t\t.use(rehype2react, {\n\t\t\t\t\tFragment,\n\t\t\t\t\tjsx: this.createElement,\n\t\t\t\t\tjsxs: this.createElement,\n\t\t\t\t\telementAttributeNameCase: 'html',\n\t\t\t\t\tprefix: false,\n\t\t\t\t})\n\t\t\t\t.processSync(this.text\n\t\t\t\t\t// escape special symbol \"<\" to not treat text as HTML\n\t\t\t\t\t.replace(/</gmi, '<')\n\t\t\t\t\t// unescape special symbol \">\" to parse blockquotes\n\t\t\t\t\t.replace(/>/gmi, '>'),\n\t\t\t\t)\n\t\t\t\t.result\n\n\t\t\treturn h('div', { class: 'rich-text--wrapper rich-text--wrapper-markdown' }, [\n\t\t\t\trenderedMarkdown,\n\t\t\t\tthis.referenceLimit > 0\n\t\t\t\t\t? h('div', { class: 'rich-text--reference-widget' }, [\n\t\t\t\t\t\th(NcReferenceList, {\n\t\t\t\t\t\t\ttext: this.text,\n\t\t\t\t\t\t\treferenceData: this.references,\n\t\t\t\t\t\t\tinteractive: this.referenceInteractive,\n\t\t\t\t\t\t\tinteractiveOptIn: this.referenceInteractiveOptIn,\n\t\t\t\t\t\t}),\n\t\t\t\t\t])\n\t\t\t\t\t: null,\n\t\t\t])\n\t\t},\n\t\tcreateElement(type, props, key) {\n\t\t\t// Modified code from vue/jsx-runtime\n\t\t\tif (key) {\n\t\t\t\tprops.key = key\n\t\t\t}\n\t\t\t// Children should be always an array\n\t\t\tlet children = props.children ?? []\n\t\t\tdelete props.children\n\n\t\t\t// unescape special symbol \"<\" for simple text nodes\n\t\t\tif (typeof children === 'string') {\n\t\t\t\tchildren = children.replace(/</gmi, '<')\n\t\t\t}\n\n\t\t\tif (!String(type).startsWith('#')) {\n\t\t\t\tlet nestedNode = null\n\t\t\t\tif (this.useExtendedMarkdown && remarkGfm.value) {\n\t\t\t\t\tif (String(type) === 'code' && !rehypeHighlight.value\n\t\t\t\t\t\t&& props?.class?.includes('language')) {\n\t\t\t\t\t\timportRehypeHighlightLibrary()\n\t\t\t\t\t}\n\t\t\t\t\tif (String(type) === 'li' && Array.isArray(children)\n\t\t\t\t\t\t&& children[0].type === 'input'\n\t\t\t\t\t\t&& children[0].props.type === 'checkbox') {\n\t\t\t\t\t\tconst [inputNode, , ...labelParts] = children\n\n\t\t\t\t\t\tconst nestedNodeIndex = labelParts.findIndex((child) => ['ul', 'ol', 'li', 'blockquote', 'pre'].includes(child.tag))\n\t\t\t\t\t\tif (nestedNodeIndex !== -1) {\n\t\t\t\t\t\t\tnestedNode = labelParts[nestedNodeIndex]\n\t\t\t\t\t\t\tlabelParts.splice(nestedNodeIndex)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst id = this.parentId + '-markdown-input-' + GenRandomId(5)\n\t\t\t\t\t\tconst propsToForward = { ...inputNode.props }\n\t\t\t\t\t\t// The checked prop is name modelValue for NcCheckboxRadioSwitch\n\t\t\t\t\t\tdelete propsToForward.checked\n\t\t\t\t\t\tconst inputComponent = h(NcCheckboxRadioSwitch, {\n\t\t\t\t\t\t\t...propsToForward,\n\t\t\t\t\t\t\tmodelValue: inputNode.props.checked,\n\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\tdisabled: !this.interactive,\n\t\t\t\t\t\t\t'onUpdate:modelValue': () => {\n\t\t\t\t\t\t\t\tthis.$emit('interact:todo', id)\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}, { default: () => labelParts })\n\n\t\t\t\t\t\treturn h(type, props, [inputComponent, nestedNode])\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (String(type) === 'a') {\n\t\t\t\t\tconst route = getRoute(this.$router, props.href)\n\t\t\t\t\tif (route) {\n\t\t\t\t\t\tdelete props.href\n\t\t\t\t\t\tdelete props.target\n\n\t\t\t\t\t\treturn h(RouterLink, {\n\t\t\t\t\t\t\t...props,\n\t\t\t\t\t\t\tto: route,\n\t\t\t\t\t\t}, { default: () => children })\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn h(type, props, children)\n\t\t\t}\n\n\t\t\tconst placeholder = this.arguments[type.slice(1)]\n\t\t\tif (!placeholder) {\n\t\t\t\treturn h('span', { ...props, class: 'rich-text--fallback' }, [`{${type.slice(1)}}`])\n\t\t\t}\n\n\t\t\tif (!placeholder.component) {\n\t\t\t\treturn h('span', { ...props }, [placeholder])\n\t\t\t}\n\n\t\t\tif (this.useExtendedMarkdown && !remarkGfm.value) {\n\t\t\t\treturn h('div', { class: 'rich-text--wrapper' }, [\n\t\t\t\t\th(NcLoadingIcon),\n\t\t\t\t])\n\t\t\t}\n\n\t\t\treturn h(\n\t\t\t\t(typeof placeholder.component === 'string') ? resolveComponent(placeholder.component) : placeholder.component,\n\t\t\t\t{\n\t\t\t\t\t...props,\n\t\t\t\t\t...placeholder.props,\n\t\t\t\t\tclass: 'rich-text--component',\n\t\t\t\t},\n\t\t\t\t{ default: () => children },\n\t\t\t)\n\t\t},\n\t},\n\trender() {\n\t\treturn this.useMarkdown || this.useExtendedMarkdown\n\t\t\t? this.renderMarkdown()\n\t\t\t: this.renderPlaintext()\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n/* stylelint-disable-next-line scss/at-import-partial-extension */\n@import './richtext.scss';\n\na:not(.rich-text--component) {\n\ttext-decoration: underline;\n}\n\n</style>\n"],"names":["_sfc_main","_createElementBlock","_normalizeClass","_openBlock","_Fragment","_renderList","_createBlock","_createCommentVNode","index","h"],"mappings":"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"}
|