@milkdown/crepe 7.8.0 → 7.9.1
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/lib/cjs/confirm-CNveM9QH.js +26 -0
- package/lib/cjs/confirm-CNveM9QH.js.map +1 -0
- package/lib/cjs/edit-BUtBJHpV.js +24 -0
- package/lib/cjs/edit-BUtBJHpV.js.map +1 -0
- package/lib/cjs/functions-BAY51plB.js +39 -0
- package/lib/cjs/functions-BAY51plB.js.map +1 -0
- package/lib/cjs/image-BXLkOVnO.js +24 -0
- package/lib/cjs/image-BXLkOVnO.js.map +1 -0
- package/lib/cjs/{index-DAiGM2G1.js → index-B7gqgc1H.js} +484 -204
- package/lib/cjs/index-B7gqgc1H.js.map +1 -0
- package/lib/cjs/{index-Dub20F3z.js → index-B91KhPew.js} +4 -4
- package/lib/cjs/index-B91KhPew.js.map +1 -0
- package/lib/cjs/{index-nrFkJeLW.js → index-BsrJn8Jp.js} +22 -7
- package/lib/cjs/index-BsrJn8Jp.js.map +1 -0
- package/lib/cjs/{index-BReSN-JQ.js → index-C2CAbC2F.js} +2 -2
- package/lib/cjs/{index-BReSN-JQ.js.map → index-C2CAbC2F.js.map} +1 -1
- package/lib/cjs/{index-CGies6Iv.js → index-CnyNb_OH.js} +45 -45
- package/lib/cjs/index-CnyNb_OH.js.map +1 -0
- package/lib/cjs/{index-CJdEvN3_.js → index-CoTb-QdE.js} +123 -105
- package/lib/cjs/index-CoTb-QdE.js.map +1 -0
- package/lib/cjs/index-DEs_IHHy.js +91 -0
- package/lib/cjs/index-DEs_IHHy.js.map +1 -0
- package/lib/cjs/index-DGAwtnNK.js +349 -0
- package/lib/cjs/index-DGAwtnNK.js.map +1 -0
- package/lib/cjs/index-DLIudQKW.js +126 -0
- package/lib/cjs/index-DLIudQKW.js.map +1 -0
- package/lib/cjs/index-Dw6lXgs6.js +81 -0
- package/lib/cjs/index-Dw6lXgs6.js.map +1 -0
- package/lib/cjs/{index-AlHHvSR_.js → index-xbwf60wt.js} +1 -6
- package/lib/cjs/{index-AlHHvSR_.js.map → index-xbwf60wt.js.map} +1 -1
- package/lib/cjs/{index-CvmlYYXX.js → index-xbxqAqH2.js} +21 -7
- package/lib/cjs/index-xbxqAqH2.js.map +1 -0
- package/lib/cjs/index.js +6 -6
- package/lib/cjs/plus-XLomtlXf.js +24 -0
- package/lib/cjs/plus-XLomtlXf.js.map +1 -0
- package/lib/cjs/remove-Ba-ypwBf.js +17 -0
- package/lib/cjs/remove-Ba-ypwBf.js.map +1 -0
- package/lib/esm/confirm-DtE-HkVd.js +24 -0
- package/lib/esm/confirm-DtE-HkVd.js.map +1 -0
- package/lib/esm/edit-D--t_JAb.js +22 -0
- package/lib/esm/edit-D--t_JAb.js.map +1 -0
- package/lib/esm/functions-DlJPkGmE.js +36 -0
- package/lib/esm/functions-DlJPkGmE.js.map +1 -0
- package/lib/esm/image-DoB1o1sl.js +22 -0
- package/lib/esm/image-DoB1o1sl.js.map +1 -0
- package/lib/esm/index-BAQT-9au.js +347 -0
- package/lib/esm/index-BAQT-9au.js.map +1 -0
- package/lib/esm/{index-DOrkOhki.js → index-BCvtgOeI.js} +4 -4
- package/lib/esm/index-BCvtgOeI.js.map +1 -0
- package/lib/esm/{index-x2oo_GmY.js → index-BDZ_pnSv.js} +122 -104
- package/lib/esm/index-BDZ_pnSv.js.map +1 -0
- package/lib/esm/{index-D6fLMv29.js → index-BPG8iO8t.js} +2 -6
- package/lib/esm/{index-D6fLMv29.js.map → index-BPG8iO8t.js.map} +1 -1
- package/lib/esm/{index-DcRgwPLd.js → index-BUBXHhHG.js} +18 -3
- package/lib/esm/index-BUBXHhHG.js.map +1 -0
- package/lib/esm/{index-CsYl2WR5.js → index-Bvz1Yyiz.js} +2 -2
- package/lib/esm/{index-CsYl2WR5.js.map → index-Bvz1Yyiz.js.map} +1 -1
- package/lib/esm/index-C1aVAv1l.js +124 -0
- package/lib/esm/index-C1aVAv1l.js.map +1 -0
- package/lib/esm/{index-CEOsxgzJ.js → index-CM4urRY9.js} +470 -190
- package/lib/esm/index-CM4urRY9.js.map +1 -0
- package/lib/esm/{index-BFsG6770.js → index-ChR5Qhyf.js} +17 -3
- package/lib/esm/index-ChR5Qhyf.js.map +1 -0
- package/lib/esm/index-CwMVnVeI.js +89 -0
- package/lib/esm/index-CwMVnVeI.js.map +1 -0
- package/lib/esm/{index-BwTxn2hs.js → index-Dc_wWopW.js} +46 -46
- package/lib/esm/index-Dc_wWopW.js.map +1 -0
- package/lib/esm/index-E8UgFLeN.js +79 -0
- package/lib/esm/index-E8UgFLeN.js.map +1 -0
- package/lib/esm/index.js +6 -6
- package/lib/esm/plus-lrX0Q75O.js +22 -0
- package/lib/esm/plus-lrX0Q75O.js.map +1 -0
- package/lib/esm/remove-D3g0Cd6_.js +15 -0
- package/lib/esm/remove-D3g0Cd6_.js.map +1 -0
- package/lib/theme/_internal/classic-common.css +6 -0
- package/lib/theme/common/block-edit.css +23 -23
- package/lib/theme/common/code-mirror.css +43 -44
- package/lib/theme/common/image-block.css +79 -81
- package/lib/theme/common/latex.css +6 -6
- package/lib/theme/common/link-tooltip.css +21 -21
- package/lib/theme/common/list-item.css +11 -10
- package/lib/theme/common/table.css +39 -39
- package/lib/theme/common/toolbar.css +8 -8
- package/lib/tsconfig.tsbuildinfo +1 -0
- package/lib/types/core/crepe.d.ts +6 -6
- package/lib/types/core/crepe.d.ts.map +1 -1
- package/lib/types/core/slice.d.ts.map +1 -1
- package/lib/types/feature/block-edit/handle/component.d.ts +4 -8
- package/lib/types/feature/block-edit/handle/component.d.ts.map +1 -1
- package/lib/types/feature/block-edit/handle/index.d.ts +1 -1
- package/lib/types/feature/block-edit/handle/index.d.ts.map +1 -1
- package/lib/types/feature/block-edit/index.d.ts.map +1 -1
- package/lib/types/feature/block-edit/menu/component.d.ts +8 -11
- package/lib/types/feature/block-edit/menu/component.d.ts.map +1 -1
- package/lib/types/feature/block-edit/menu/config.d.ts.map +1 -1
- package/lib/types/feature/block-edit/menu/index.d.ts.map +1 -1
- package/lib/types/feature/block-edit/menu/utils.d.ts +2 -3
- package/lib/types/feature/block-edit/menu/utils.d.ts.map +1 -1
- package/lib/types/feature/code-mirror/index.d.ts +3 -4
- package/lib/types/feature/code-mirror/index.d.ts.map +1 -1
- package/lib/types/feature/cursor/index.d.ts.map +1 -1
- package/lib/types/feature/image-block/index.d.ts.map +1 -1
- package/lib/types/feature/index.d.ts +4 -4
- package/lib/types/feature/index.d.ts.map +1 -1
- package/lib/types/feature/latex/index.d.ts.map +1 -1
- package/lib/types/feature/latex/inline-tooltip/component.d.ts +6 -10
- package/lib/types/feature/latex/inline-tooltip/component.d.ts.map +1 -1
- package/lib/types/feature/latex/inline-tooltip/view.d.ts.map +1 -1
- package/lib/types/feature/latex/input-rule.d.ts.map +1 -1
- package/lib/types/feature/latex/remark.d.ts.map +1 -1
- package/lib/types/feature/link-tooltip/index.d.ts.map +1 -1
- package/lib/types/feature/list-item/index.d.ts.map +1 -1
- package/lib/types/feature/placeholder/index.d.ts.map +1 -1
- package/lib/types/feature/shared.d.ts +1 -2
- package/lib/types/feature/shared.d.ts.map +1 -1
- package/lib/types/feature/table/index.d.ts.map +1 -1
- package/lib/types/feature/toolbar/component.d.ts +9 -12
- package/lib/types/feature/toolbar/component.d.ts.map +1 -1
- package/lib/types/feature/toolbar/index.d.ts.map +1 -1
- package/lib/types/icons/align-center.d.ts +1 -1
- package/lib/types/icons/align-center.d.ts.map +1 -1
- package/lib/types/icons/align-left.d.ts +1 -1
- package/lib/types/icons/align-left.d.ts.map +1 -1
- package/lib/types/icons/align-right.d.ts +1 -1
- package/lib/types/icons/align-right.d.ts.map +1 -1
- package/lib/types/icons/bold.d.ts +1 -1
- package/lib/types/icons/bold.d.ts.map +1 -1
- package/lib/types/icons/bullet-list.d.ts +1 -1
- package/lib/types/icons/bullet-list.d.ts.map +1 -1
- package/lib/types/icons/bullet.d.ts +1 -1
- package/lib/types/icons/bullet.d.ts.map +1 -1
- package/lib/types/icons/caption.d.ts +1 -1
- package/lib/types/icons/caption.d.ts.map +1 -1
- package/lib/types/icons/check-box-checked.d.ts +1 -1
- package/lib/types/icons/check-box-checked.d.ts.map +1 -1
- package/lib/types/icons/check-box-unchecked.d.ts +1 -1
- package/lib/types/icons/check-box-unchecked.d.ts.map +1 -1
- package/lib/types/icons/chevron-down.d.ts +1 -1
- package/lib/types/icons/chevron-down.d.ts.map +1 -1
- package/lib/types/icons/clear.d.ts +1 -1
- package/lib/types/icons/clear.d.ts.map +1 -1
- package/lib/types/icons/code.d.ts +1 -1
- package/lib/types/icons/code.d.ts.map +1 -1
- package/lib/types/icons/confirm.d.ts +1 -1
- package/lib/types/icons/confirm.d.ts.map +1 -1
- package/lib/types/icons/copy.d.ts +1 -1
- package/lib/types/icons/copy.d.ts.map +1 -1
- package/lib/types/icons/divider.d.ts +1 -1
- package/lib/types/icons/divider.d.ts.map +1 -1
- package/lib/types/icons/drag-handle.d.ts +1 -1
- package/lib/types/icons/drag-handle.d.ts.map +1 -1
- package/lib/types/icons/edit.d.ts +1 -1
- package/lib/types/icons/edit.d.ts.map +1 -1
- package/lib/types/icons/functions.d.ts +1 -1
- package/lib/types/icons/functions.d.ts.map +1 -1
- package/lib/types/icons/h1.d.ts +1 -1
- package/lib/types/icons/h1.d.ts.map +1 -1
- package/lib/types/icons/h2.d.ts +1 -1
- package/lib/types/icons/h2.d.ts.map +1 -1
- package/lib/types/icons/h3.d.ts +1 -1
- package/lib/types/icons/h3.d.ts.map +1 -1
- package/lib/types/icons/h4.d.ts +1 -1
- package/lib/types/icons/h4.d.ts.map +1 -1
- package/lib/types/icons/h5.d.ts +1 -1
- package/lib/types/icons/h5.d.ts.map +1 -1
- package/lib/types/icons/h6.d.ts +1 -1
- package/lib/types/icons/h6.d.ts.map +1 -1
- package/lib/types/icons/image.d.ts +1 -1
- package/lib/types/icons/image.d.ts.map +1 -1
- package/lib/types/icons/italic.d.ts +1 -1
- package/lib/types/icons/italic.d.ts.map +1 -1
- package/lib/types/icons/link.d.ts +1 -1
- package/lib/types/icons/link.d.ts.map +1 -1
- package/lib/types/icons/menu.d.ts +1 -1
- package/lib/types/icons/menu.d.ts.map +1 -1
- package/lib/types/icons/ordered-list.d.ts +1 -1
- package/lib/types/icons/ordered-list.d.ts.map +1 -1
- package/lib/types/icons/plus.d.ts +1 -1
- package/lib/types/icons/plus.d.ts.map +1 -1
- package/lib/types/icons/quote.d.ts +1 -1
- package/lib/types/icons/quote.d.ts.map +1 -1
- package/lib/types/icons/remove.d.ts +1 -1
- package/lib/types/icons/remove.d.ts.map +1 -1
- package/lib/types/icons/search.d.ts +1 -1
- package/lib/types/icons/search.d.ts.map +1 -1
- package/lib/types/icons/strikethrough.d.ts +1 -1
- package/lib/types/icons/strikethrough.d.ts.map +1 -1
- package/lib/types/icons/table.d.ts +1 -1
- package/lib/types/icons/table.d.ts.map +1 -1
- package/lib/types/icons/text.d.ts +1 -1
- package/lib/types/icons/text.d.ts.map +1 -1
- package/lib/types/icons/todo-list.d.ts +1 -1
- package/lib/types/icons/todo-list.d.ts.map +1 -1
- package/lib/types/icons/visibility-off.d.ts +1 -1
- package/lib/types/icons/visibility-off.d.ts.map +1 -1
- package/package.json +4 -26
- package/src/core/crepe.ts +13 -12
- package/src/core/slice.ts +2 -0
- package/src/feature/block-edit/handle/component.tsx +60 -0
- package/src/feature/block-edit/handle/index.ts +22 -14
- package/src/feature/block-edit/index.ts +3 -1
- package/src/feature/block-edit/menu/component.tsx +237 -0
- package/src/feature/block-edit/menu/config.ts +6 -3
- package/src/feature/block-edit/menu/index.ts +38 -18
- package/src/feature/block-edit/menu/utils.ts +3 -3
- package/src/feature/code-mirror/index.ts +20 -20
- package/src/feature/cursor/index.ts +1 -1
- package/src/feature/image-block/index.ts +3 -1
- package/src/feature/index.ts +5 -4
- package/src/feature/latex/index.ts +8 -8
- package/src/feature/latex/inline-tooltip/component.tsx +57 -0
- package/src/feature/latex/inline-tooltip/view.ts +30 -17
- package/src/feature/latex/input-rule.ts +4 -3
- package/src/feature/latex/remark.ts +3 -2
- package/src/feature/link-tooltip/index.ts +3 -1
- package/src/feature/list-item/index.ts +8 -16
- package/src/feature/placeholder/index.ts +6 -3
- package/src/feature/shared.ts +1 -2
- package/src/feature/table/index.ts +2 -0
- package/src/feature/toolbar/component.tsx +256 -0
- package/src/feature/toolbar/index.ts +34 -17
- package/src/icons/align-center.ts +1 -3
- package/src/icons/align-left.ts +1 -3
- package/src/icons/align-right.ts +1 -3
- package/src/icons/bold.ts +1 -3
- package/src/icons/bullet-list.ts +1 -3
- package/src/icons/bullet.ts +1 -3
- package/src/icons/caption.ts +1 -3
- package/src/icons/check-box-checked.ts +1 -3
- package/src/icons/check-box-unchecked.ts +1 -3
- package/src/icons/chevron-down.ts +1 -3
- package/src/icons/clear.ts +1 -3
- package/src/icons/code.ts +1 -3
- package/src/icons/confirm.ts +1 -3
- package/src/icons/copy.ts +1 -3
- package/src/icons/divider.ts +1 -3
- package/src/icons/drag-handle.ts +1 -3
- package/src/icons/edit.ts +1 -3
- package/src/icons/functions.ts +1 -3
- package/src/icons/h1.ts +1 -3
- package/src/icons/h2.ts +1 -3
- package/src/icons/h3.ts +1 -3
- package/src/icons/h4.ts +1 -3
- package/src/icons/h5.ts +1 -3
- package/src/icons/h6.ts +1 -3
- package/src/icons/image.ts +1 -3
- package/src/icons/italic.ts +1 -3
- package/src/icons/link.ts +1 -3
- package/src/icons/menu.ts +1 -3
- package/src/icons/ordered-list.ts +1 -3
- package/src/icons/plus.ts +1 -3
- package/src/icons/quote.ts +1 -3
- package/src/icons/remove.ts +1 -3
- package/src/icons/search.ts +1 -3
- package/src/icons/strikethrough.ts +1 -3
- package/src/icons/table.ts +1 -3
- package/src/icons/text.ts +1 -3
- package/src/icons/todo-list.ts +1 -3
- package/src/icons/visibility-off.ts +1 -3
- package/src/theme/_internal/classic-common.css +6 -0
- package/src/theme/common/block-edit.css +2 -2
- package/src/theme/common/code-mirror.css +5 -6
- package/src/theme/common/image-block.css +9 -11
- package/src/theme/common/latex.css +1 -1
- package/src/theme/common/link-tooltip.css +2 -2
- package/src/theme/common/list-item.css +3 -2
- package/src/theme/common/table.css +2 -2
- package/src/theme/common/toolbar.css +1 -1
- package/lib/cjs/functions-Dk90yOUc.js +0 -690
- package/lib/cjs/functions-Dk90yOUc.js.map +0 -1
- package/lib/cjs/index-CGies6Iv.js.map +0 -1
- package/lib/cjs/index-CJdEvN3_.js.map +0 -1
- package/lib/cjs/index-CvmlYYXX.js.map +0 -1
- package/lib/cjs/index-D3lu92SA.js +0 -39
- package/lib/cjs/index-D3lu92SA.js.map +0 -1
- package/lib/cjs/index-DAiGM2G1.js.map +0 -1
- package/lib/cjs/index-DKY_Kri2.js +0 -272
- package/lib/cjs/index-DKY_Kri2.js.map +0 -1
- package/lib/cjs/index-DQll67YS.js +0 -65
- package/lib/cjs/index-DQll67YS.js.map +0 -1
- package/lib/cjs/index-Dub20F3z.js.map +0 -1
- package/lib/cjs/index-hPk2gbSt.js +0 -35
- package/lib/cjs/index-hPk2gbSt.js.map +0 -1
- package/lib/cjs/index-nrFkJeLW.js.map +0 -1
- package/lib/esm/functions-Bsik6ikd.js +0 -652
- package/lib/esm/functions-Bsik6ikd.js.map +0 -1
- package/lib/esm/index-B3KiKTSt.js +0 -63
- package/lib/esm/index-B3KiKTSt.js.map +0 -1
- package/lib/esm/index-BFsG6770.js.map +0 -1
- package/lib/esm/index-BwTxn2hs.js.map +0 -1
- package/lib/esm/index-CBrOT1fW.js +0 -37
- package/lib/esm/index-CBrOT1fW.js.map +0 -1
- package/lib/esm/index-CEOsxgzJ.js.map +0 -1
- package/lib/esm/index-Cuk7cL-r.js +0 -33
- package/lib/esm/index-Cuk7cL-r.js.map +0 -1
- package/lib/esm/index-DOrkOhki.js.map +0 -1
- package/lib/esm/index-DcRgwPLd.js.map +0 -1
- package/lib/esm/index-H9uklzH0.js +0 -270
- package/lib/esm/index-H9uklzH0.js.map +0 -1
- package/lib/esm/index-x2oo_GmY.js.map +0 -1
- package/src/feature/block-edit/handle/component.ts +0 -54
- package/src/feature/block-edit/menu/component.ts +0 -241
- package/src/feature/latex/inline-tooltip/component.ts +0 -38
- package/src/feature/toolbar/component.ts +0 -236
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-BAQT-9au.js","sources":["../../src/icons/bold.ts","../../src/icons/italic.ts","../../src/icons/link.ts","../../src/icons/strikethrough.ts","../../src/feature/toolbar/component.tsx","../../src/feature/toolbar/index.ts"],"sourcesContent":["export const boldIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <path\n d=\"M8.85758 18.625C8.4358 18.625 8.07715 18.4772 7.78163 18.1817C7.48613 17.8862 7.33838 17.5275 7.33838 17.1058V6.8942C7.33838 6.47242 7.48613 6.11377 7.78163 5.81825C8.07715 5.52275 8.4358 5.375 8.85758 5.375H12.1999C13.2191 5.375 14.1406 5.69231 14.9643 6.32693C15.788 6.96154 16.1999 7.81603 16.1999 8.89038C16.1999 9.63779 16.0194 10.2471 15.6585 10.7183C15.2976 11.1894 14.9088 11.5314 14.4922 11.7442C15.005 11.9211 15.4947 12.2708 15.9614 12.7933C16.428 13.3157 16.6614 14.0192 16.6614 14.9038C16.6614 16.182 16.1902 17.1217 15.2479 17.723C14.3056 18.3243 13.3563 18.625 12.3999 18.625H8.85758ZM9.4883 16.6327H12.3191C13.1063 16.6327 13.6627 16.4141 13.9884 15.9769C14.314 15.5397 14.4768 15.1205 14.4768 14.7192C14.4768 14.3179 14.314 13.8987 13.9884 13.4615C13.6627 13.0243 13.0909 12.8057 12.273 12.8057H9.4883V16.6327ZM9.4883 10.875H12.0826C12.6903 10.875 13.172 10.7013 13.5278 10.3539C13.8836 10.0064 14.0615 9.59037 14.0615 9.10575C14.0615 8.59035 13.8733 8.16918 13.497 7.84225C13.1207 7.51533 12.6595 7.35188 12.1133 7.35188H9.4883V10.875Z\"\n />\n </svg>\n`\n","export const italicIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <path\n d=\"M6.29811 18.625C6.04505 18.625 5.83115 18.5375 5.65641 18.3626C5.48166 18.1877 5.39429 17.9736 5.39429 17.7203C5.39429 17.467 5.48166 17.2532 5.65641 17.0788C5.83115 16.9045 6.04505 16.8173 6.29811 16.8173H9.21159L12.452 7.18265H9.53851C9.28545 7.18265 9.07155 7.0952 8.89681 6.9203C8.72206 6.7454 8.63469 6.5313 8.63469 6.278C8.63469 6.02472 8.72206 5.81089 8.89681 5.63652C9.07155 5.46217 9.28545 5.375 9.53851 5.375H16.8847C17.1377 5.375 17.3516 5.46245 17.5264 5.63735C17.7011 5.81225 17.7885 6.02634 17.7885 6.27962C17.7885 6.53293 17.7011 6.74676 17.5264 6.92113C17.3516 7.09548 17.1377 7.18265 16.8847 7.18265H14.2789L11.0385 16.8173H13.6443C13.8973 16.8173 14.1112 16.9048 14.286 17.0797C14.4607 17.2546 14.5481 17.4687 14.5481 17.722C14.5481 17.9752 14.4607 18.1891 14.286 18.3634C14.1112 18.5378 13.8973 18.625 13.6443 18.625H6.29811Z\"\n />\n </svg>\n`\n","export const linkIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <path\n d=\"M17.0385 19.5003V16.5388H14.0769V15.0388H17.0385V12.0773H18.5384V15.0388H21.5V16.5388H18.5384V19.5003H17.0385ZM10.8077 16.5388H7.03845C5.78282 16.5388 4.7125 16.0963 3.8275 15.2114C2.9425 14.3266 2.5 13.2564 2.5 12.0009C2.5 10.7454 2.9425 9.67504 3.8275 8.78979C4.7125 7.90454 5.78282 7.46191 7.03845 7.46191H10.8077V8.96186H7.03845C6.1987 8.96186 5.48235 9.25834 4.8894 9.85129C4.29645 10.4442 3.99998 11.1606 3.99998 12.0003C3.99998 12.8401 4.29645 13.5564 4.8894 14.1494C5.48235 14.7423 6.1987 15.0388 7.03845 15.0388H10.8077V16.5388ZM8.25 12.7503V11.2504H15.75V12.7503H8.25ZM21.5 12.0003H20C20 11.1606 19.7035 10.4442 19.1106 9.85129C18.5176 9.25834 17.8013 8.96186 16.9615 8.96186H13.1923V7.46191H16.9615C18.2171 7.46191 19.2875 7.90441 20.1725 8.78939C21.0575 9.67439 21.5 10.7447 21.5 12.0003Z\"\n />\n </svg>\n`\n","export const strikethroughIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <path\n d=\"M3.25 13.7404C3.0375 13.7404 2.85938 13.6684 2.71563 13.5246C2.57188 13.3808 2.5 13.2026 2.5 12.99C2.5 12.7774 2.57188 12.5993 2.71563 12.4558C2.85938 12.3122 3.0375 12.2404 3.25 12.2404H20.75C20.9625 12.2404 21.1406 12.3123 21.2843 12.4561C21.4281 12.5999 21.5 12.7781 21.5 12.9907C21.5 13.2033 21.4281 13.3814 21.2843 13.525C21.1406 13.6686 20.9625 13.7404 20.75 13.7404H3.25ZM10.9423 10.2596V6.62495H6.5673C6.2735 6.62495 6.02377 6.52201 5.8181 6.31613C5.61245 6.11026 5.50963 5.86027 5.50963 5.56615C5.50963 5.27205 5.61245 5.02083 5.8181 4.8125C6.02377 4.60417 6.2735 4.5 6.5673 4.5H17.4423C17.7361 4.5 17.9858 4.60294 18.1915 4.80883C18.3971 5.01471 18.5 5.2647 18.5 5.5588C18.5 5.85292 18.3971 6.10413 18.1915 6.31245C17.9858 6.52078 17.7361 6.62495 17.4423 6.62495H13.0673V10.2596H10.9423ZM10.9423 15.7211H13.0673V18.4423C13.0673 18.7361 12.9643 18.9858 12.7584 19.1915C12.5526 19.3971 12.3026 19.5 12.0085 19.5C11.7144 19.5 11.4631 19.3962 11.2548 19.1887C11.0465 18.9811 10.9423 18.7291 10.9423 18.4327V15.7211Z\"\n />\n </svg>\n`\n","import type { Ctx } from '@milkdown/kit/ctx'\nimport type { MarkType, NodeType, Node } from '@milkdown/kit/prose/model'\n\nimport { Icon } from '@milkdown/kit/component'\nimport { linkTooltipAPI } from '@milkdown/kit/component/link-tooltip'\nimport { commandsCtx, editorViewCtx } from '@milkdown/kit/core'\nimport {\n emphasisSchema,\n inlineCodeSchema,\n linkSchema,\n strongSchema,\n toggleEmphasisCommand,\n toggleInlineCodeCommand,\n toggleStrongCommand,\n} from '@milkdown/kit/preset/commonmark'\nimport {\n strikethroughSchema,\n toggleStrikethroughCommand,\n} from '@milkdown/kit/preset/gfm'\nimport {\n NodeSelection,\n TextSelection,\n type Selection,\n} from '@milkdown/kit/prose/state'\nimport clsx from 'clsx'\nimport { defineComponent, type Ref, type ShallowRef, h, Fragment } from 'vue'\n\nimport type { ToolbarFeatureConfig } from '.'\n\nimport { CrepeFeature } from '../..'\nimport { FeaturesCtx } from '../../core/slice'\nimport {\n boldIcon,\n codeIcon,\n functionsIcon,\n italicIcon,\n linkIcon,\n strikethroughIcon,\n} from '../../icons'\nimport { mathInlineSchema } from '../latex/inline-latex'\n\nh\nFragment\n\ntype ToolbarProps = {\n ctx: Ctx\n hide: () => void\n show: Ref<boolean>\n selection: ShallowRef<Selection>\n config?: ToolbarFeatureConfig\n}\n\nexport const Toolbar = defineComponent<ToolbarProps>({\n props: {\n ctx: {\n type: Object,\n required: true,\n },\n hide: {\n type: Function,\n required: true,\n },\n show: {\n type: Object,\n required: true,\n },\n selection: {\n type: Object,\n required: true,\n },\n config: {\n type: Object,\n required: false,\n },\n },\n setup(props) {\n const { ctx, hide, config } = props\n\n const onClick = (fn: (ctx: Ctx) => void) => (e: MouseEvent) => {\n e.preventDefault()\n ctx && fn(ctx)\n }\n\n const isActive = (mark: MarkType) => {\n const selection = props.selection.value\n if (!ctx || !selection) return false\n const { state } = ctx.get(editorViewCtx)\n if (!state) return false\n const { doc } = state\n return doc.rangeHasMark(selection.from, selection.to, mark)\n }\n\n const containsNode = (node: NodeType) => {\n const selection = props.selection.value\n if (!ctx || !selection) return false\n const { state } = ctx.get(editorViewCtx)\n if (!state) return false\n const { doc } = state\n if (selection instanceof NodeSelection) {\n return selection.node.type === node\n }\n\n const { from, to } = selection\n\n let hasNode = false\n doc.nodesBetween(from, to, (n) => {\n if (n.type === node) {\n hasNode = true\n return false\n }\n return true\n })\n\n return hasNode\n }\n\n const flags = ctx?.get(FeaturesCtx)\n const isLatexEnabled = flags?.includes(CrepeFeature.Latex)\n\n const toggleLatex = (ctx: Ctx) => {\n const hasLatex = containsNode(mathInlineSchema.type(ctx))\n const view = ctx.get(editorViewCtx)\n const { selection, doc, tr } = view.state\n if (!hasLatex) {\n const text = doc.textBetween(selection.from, selection.to)\n let _tr = tr.replaceSelectionWith(\n mathInlineSchema.type(ctx).create({\n value: text,\n })\n )\n view.dispatch(\n _tr.setSelection(NodeSelection.create(_tr.doc, selection.from))\n )\n return\n }\n\n const { from, to } = selection\n let pos = -1\n let node: Node | null = null\n doc.nodesBetween(from, to, (n, p) => {\n if (node) return false\n if (n.type === mathInlineSchema.type(ctx)) {\n pos = p\n node = n\n return false\n }\n return true\n })\n if (!node || pos < 0) return\n\n let _tr = tr.delete(pos, pos + 1)\n const content = (node as Node).attrs.value\n _tr = _tr.insertText(content, pos)\n view.dispatch(\n _tr.setSelection(\n TextSelection.create(_tr.doc, from, to + content.length - 1)\n )\n )\n }\n\n return () => {\n return (\n <>\n <button\n type=\"button\"\n class={clsx(\n 'toolbar-item',\n ctx && isActive(strongSchema.type(ctx)) && 'active'\n )}\n onPointerdown={onClick((ctx) => {\n const commands = ctx.get(commandsCtx)\n commands.call(toggleStrongCommand.key)\n })}\n >\n <Icon icon={config?.boldIcon?.() ?? boldIcon} />\n </button>\n <button\n type=\"button\"\n class={clsx(\n 'toolbar-item',\n ctx && isActive(emphasisSchema.type(ctx)) && 'active'\n )}\n onPointerdown={onClick((ctx) => {\n const commands = ctx.get(commandsCtx)\n commands.call(toggleEmphasisCommand.key)\n })}\n >\n <Icon icon={config?.italicIcon?.() ?? italicIcon} />\n </button>\n <button\n type=\"button\"\n class={clsx(\n 'toolbar-item',\n ctx && isActive(strikethroughSchema.type(ctx)) && 'active'\n )}\n onPointerdown={onClick((ctx) => {\n const commands = ctx.get(commandsCtx)\n commands.call(toggleStrikethroughCommand.key)\n })}\n >\n <Icon icon={config?.strikethroughIcon?.() ?? strikethroughIcon} />\n </button>\n <div class=\"divider\"></div>\n <button\n type=\"button\"\n class={clsx(\n 'toolbar-item',\n ctx && isActive(inlineCodeSchema.type(ctx)) && 'active'\n )}\n onPointerdown={onClick((ctx) => {\n const commands = ctx.get(commandsCtx)\n commands.call(toggleInlineCodeCommand.key)\n })}\n >\n <Icon icon={config?.codeIcon?.() ?? codeIcon} />\n </button>\n {isLatexEnabled && (\n <button\n type=\"button\"\n class={clsx(\n 'toolbar-item',\n ctx && containsNode(mathInlineSchema.type(ctx)) && 'active'\n )}\n onPointerdown={onClick(toggleLatex)}\n >\n <Icon icon={config?.latexIcon?.() ?? functionsIcon} />\n </button>\n )}\n <button\n type=\"button\"\n class={clsx(\n 'toolbar-item',\n ctx && isActive(linkSchema.type(ctx)) && 'active'\n )}\n onPointerdown={onClick((ctx) => {\n const view = ctx.get(editorViewCtx)\n const { selection } = view.state\n\n if (isActive(linkSchema.type(ctx))) {\n ctx\n .get(linkTooltipAPI.key)\n .removeLink(selection.from, selection.to)\n return\n }\n\n ctx.get(linkTooltipAPI.key).addLink(selection.from, selection.to)\n hide?.()\n })}\n >\n <Icon icon={config?.linkIcon?.() ?? linkIcon} />\n </button>\n </>\n )\n }\n },\n})\n","import type { Ctx } from '@milkdown/kit/ctx'\nimport type {\n EditorState,\n PluginView,\n Selection,\n} from '@milkdown/kit/prose/state'\nimport type { EditorView } from '@milkdown/kit/prose/view'\n\nimport { TooltipProvider, tooltipFactory } from '@milkdown/kit/plugin/tooltip'\nimport { TextSelection } from '@milkdown/kit/prose/state'\nimport { createApp, ref, shallowRef, type App, type ShallowRef } from 'vue'\n\nimport type { DefineFeature, Icon } from '../shared'\n\nimport { Toolbar } from './component'\n\ninterface ToolbarConfig {\n boldIcon: Icon\n codeIcon: Icon\n italicIcon: Icon\n linkIcon: Icon\n strikethroughIcon: Icon\n latexIcon: Icon\n}\n\nexport type ToolbarFeatureConfig = Partial<ToolbarConfig>\n\nconst toolbar = tooltipFactory('CREPE_TOOLBAR')\n\nclass ToolbarView implements PluginView {\n #tooltipProvider: TooltipProvider\n #content: HTMLElement\n #app: App\n #selection: ShallowRef<Selection>\n #show = ref(false)\n\n constructor(ctx: Ctx, view: EditorView, config?: ToolbarFeatureConfig) {\n const content = document.createElement('div')\n content.className = 'milkdown-toolbar'\n this.#selection = shallowRef(view.state.selection)\n const app = createApp(Toolbar, {\n ctx,\n hide: this.hide,\n config,\n selection: this.#selection,\n show: this.#show,\n })\n app.mount(content)\n this.#content = content\n this.#app = app\n\n this.#tooltipProvider = new TooltipProvider({\n content: this.#content,\n debounce: 20,\n offset: 10,\n shouldShow(view: EditorView) {\n const { doc, selection } = view.state\n const { empty, from, to } = selection\n\n const isEmptyTextBlock =\n !doc.textBetween(from, to).length &&\n selection instanceof TextSelection\n\n const isNotTextBlock = !(selection instanceof TextSelection)\n\n const activeElement = (view.dom.getRootNode() as ShadowRoot | Document)\n .activeElement\n const isTooltipChildren = content.contains(activeElement)\n\n const notHasFocus = !view.hasFocus() && !isTooltipChildren\n\n const isReadonly = !view.editable\n\n if (\n notHasFocus ||\n isNotTextBlock ||\n empty ||\n isEmptyTextBlock ||\n isReadonly\n )\n return false\n\n return true\n },\n })\n this.#tooltipProvider.onShow = () => {\n this.#show.value = true\n }\n this.#tooltipProvider.onHide = () => {\n this.#show.value = false\n }\n this.update(view)\n }\n\n update = (view: EditorView, prevState?: EditorState) => {\n this.#tooltipProvider.update(view, prevState)\n this.#selection.value = view.state.selection\n }\n\n destroy = () => {\n this.#tooltipProvider.destroy()\n this.#app.unmount()\n this.#content.remove()\n }\n\n hide = () => {\n this.#tooltipProvider.hide()\n }\n}\n\nexport const defineFeature: DefineFeature<ToolbarFeatureConfig> = (\n editor,\n config\n) => {\n editor\n .config((ctx) => {\n ctx.set(toolbar.key, {\n view: (view) => new ToolbarView(ctx, view, config),\n })\n })\n .use(toolbar)\n}\n"],"names":["ctx","_tr","view"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { findParent } from '@milkdown/kit/prose';
|
|
2
2
|
import { Plugin, PluginKey } from '@milkdown/kit/prose/state';
|
|
3
3
|
import { DecorationSet, Decoration } from '@milkdown/kit/prose/view';
|
|
4
|
-
import {
|
|
5
|
-
import { i as isInCodeBlock, a as isInList } from './index-
|
|
4
|
+
import { $ctx, $prose } from '@milkdown/kit/utils';
|
|
5
|
+
import { i as isInCodeBlock, a as isInList } from './index-BPG8iO8t.js';
|
|
6
6
|
|
|
7
7
|
function isDocEmpty(doc) {
|
|
8
8
|
var _a;
|
|
@@ -61,4 +61,4 @@ const defineFeature = (editor, config) => {
|
|
|
61
61
|
};
|
|
62
62
|
|
|
63
63
|
export { defineFeature, placeholderConfig, placeholderPlugin };
|
|
64
|
-
//# sourceMappingURL=index-
|
|
64
|
+
//# sourceMappingURL=index-BCvtgOeI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-BCvtgOeI.js","sources":["../../src/feature/placeholder/index.ts"],"sourcesContent":["import type { Node } from '@milkdown/kit/prose/model'\nimport type { EditorState } from '@milkdown/kit/prose/state'\n\nimport { findParent } from '@milkdown/kit/prose'\nimport { Plugin, PluginKey } from '@milkdown/kit/prose/state'\nimport { Decoration, DecorationSet } from '@milkdown/kit/prose/view'\nimport { $ctx, $prose } from '@milkdown/kit/utils'\n\nimport type { DefineFeature } from '../shared'\n\nimport { isInCodeBlock, isInList } from '../../utils'\n\nfunction isDocEmpty(doc: Node) {\n return doc.childCount <= 1 && !doc.firstChild?.content.size\n}\n\nfunction createPlaceholderDecoration(\n state: EditorState,\n placeholderText: string\n): Decoration | null {\n const { selection } = state\n if (!selection.empty) return null\n\n const $pos = selection.$anchor\n const node = $pos.parent\n if (node.content.size > 0) return null\n\n const inTable = findParent((node) => node.type.name === 'table')($pos)\n if (inTable) return null\n\n const before = $pos.before()\n\n return Decoration.node(before, before + node.nodeSize, {\n class: 'crepe-placeholder',\n 'data-placeholder': placeholderText,\n })\n}\n\ninterface PlaceholderConfig {\n text: string\n mode: 'doc' | 'block'\n}\n\nexport type PlaceHolderFeatureConfig = Partial<PlaceholderConfig>\n\nexport const placeholderConfig = $ctx(\n {\n text: 'Please enter...',\n mode: 'block',\n } as PlaceholderConfig,\n 'placeholderConfigCtx'\n)\n\nexport const placeholderPlugin = $prose((ctx) => {\n return new Plugin({\n key: new PluginKey('CREPE_PLACEHOLDER'),\n props: {\n decorations: (state) => {\n const config = ctx.get(placeholderConfig.key)\n if (config.mode === 'doc' && !isDocEmpty(state.doc)) return null\n\n if (isInCodeBlock(state.selection) || isInList(state.selection))\n return null\n\n const placeholderText = config.text ?? 'Please enter...'\n const deco = createPlaceholderDecoration(state, placeholderText)\n if (!deco) return null\n\n return DecorationSet.create(state.doc, [deco])\n },\n },\n })\n})\n\nexport const defineFeature: DefineFeature<PlaceHolderFeatureConfig> = (\n editor,\n config\n) => {\n editor\n .config((ctx) => {\n if (config) {\n ctx.update(placeholderConfig.key, (prev) => {\n return {\n ...prev,\n ...config,\n }\n })\n }\n })\n .use(placeholderPlugin)\n .use(placeholderConfig)\n}\n"],"names":["node"],"mappings":";;;;;;AAYA,SAAS,WAAW,GAAW,EAAA;AAZ/B,EAAA,IAAA,EAAA;AAaE,EAAA,OAAO,IAAI,UAAc,IAAA,CAAA,IAAK,GAAC,EAAI,GAAA,GAAA,CAAA,UAAA,KAAJ,mBAAgB,OAAQ,CAAA,IAAA,CAAA;AACzD;AAEA,SAAS,2BAAA,CACP,OACA,eACmB,EAAA;AACnB,EAAM,MAAA,EAAE,WAAc,GAAA,KAAA;AACtB,EAAI,IAAA,CAAC,SAAU,CAAA,KAAA,EAAc,OAAA,IAAA;AAE7B,EAAA,MAAM,OAAO,SAAU,CAAA,OAAA;AACvB,EAAA,MAAM,OAAO,IAAK,CAAA,MAAA;AAClB,EAAA,IAAI,IAAK,CAAA,OAAA,CAAQ,IAAO,GAAA,CAAA,EAAU,OAAA,IAAA;AAElC,EAAM,MAAA,OAAA,GAAU,WAAW,CAACA,KAAAA,KAASA,MAAK,IAAK,CAAA,IAAA,KAAS,OAAO,CAAA,CAAE,IAAI,CAAA;AACrE,EAAA,IAAI,SAAgB,OAAA,IAAA;AAEpB,EAAM,MAAA,MAAA,GAAS,KAAK,MAAO,EAAA;AAE3B,EAAA,OAAO,UAAW,CAAA,IAAA,CAAK,MAAQ,EAAA,MAAA,GAAS,KAAK,QAAU,EAAA;AAAA,IACrD,KAAO,EAAA,mBAAA;AAAA,IACP,kBAAoB,EAAA;AAAA,GACrB,CAAA;AACH;AASO,MAAM,iBAAoB,GAAA,IAAA;AAAA,EAC/B;AAAA,IACE,IAAM,EAAA,iBAAA;AAAA,IACN,IAAM,EAAA;AAAA,GACR;AAAA,EACA;AACF;AAEa,MAAA,iBAAA,GAAoB,MAAO,CAAA,CAAC,GAAQ,KAAA;AAC/C,EAAA,OAAO,IAAI,MAAO,CAAA;AAAA,IAChB,GAAA,EAAK,IAAI,SAAA,CAAU,mBAAmB,CAAA;AAAA,IACtC,KAAO,EAAA;AAAA,MACL,WAAA,EAAa,CAAC,KAAU,KAAA;AAzD9B,QAAA,IAAA,EAAA;AA0DQ,QAAA,MAAM,MAAS,GAAA,GAAA,CAAI,GAAI,CAAA,iBAAA,CAAkB,GAAG,CAAA;AAC5C,QAAI,IAAA,MAAA,CAAO,SAAS,KAAS,IAAA,CAAC,WAAW,KAAM,CAAA,GAAG,GAAU,OAAA,IAAA;AAE5D,QAAA,IAAI,cAAc,KAAM,CAAA,SAAS,CAAK,IAAA,QAAA,CAAS,MAAM,SAAS,CAAA;AAC5D,UAAO,OAAA,IAAA;AAET,QAAM,MAAA,eAAA,GAAA,CAAkB,EAAO,GAAA,MAAA,CAAA,IAAA,KAAP,IAAe,GAAA,EAAA,GAAA,iBAAA;AACvC,QAAM,MAAA,IAAA,GAAO,2BAA4B,CAAA,KAAA,EAAO,eAAe,CAAA;AAC/D,QAAI,IAAA,CAAC,MAAa,OAAA,IAAA;AAElB,QAAA,OAAO,cAAc,MAAO,CAAA,KAAA,CAAM,GAAK,EAAA,CAAC,IAAI,CAAC,CAAA;AAAA;AAC/C;AACF,GACD,CAAA;AACH,CAAC;AAEY,MAAA,aAAA,GAAyD,CACpE,MAAA,EACA,MACG,KAAA;AACH,EACG,MAAA,CAAA,MAAA,CAAO,CAAC,GAAQ,KAAA;AACf,IAAA,IAAI,MAAQ,EAAA;AACV,MAAA,GAAA,CAAI,MAAO,CAAA,iBAAA,CAAkB,GAAK,EAAA,CAAC,IAAS,KAAA;AAC1C,QAAO,OAAA;AAAA,UACL,GAAG,IAAA;AAAA,UACH,GAAG;AAAA,SACL;AAAA,OACD,CAAA;AAAA;AACH,GACD,CACA,CAAA,GAAA,CAAI,iBAAiB,CAAA,CACrB,IAAI,iBAAiB,CAAA;AAC1B;;;;"}
|
|
@@ -1,85 +1,94 @@
|
|
|
1
|
-
import katex from 'katex';
|
|
2
1
|
import { codeBlockConfig } from '@milkdown/kit/component/code-block';
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
2
|
+
import katex from 'katex';
|
|
3
|
+
import { F as FeaturesCtx, C as CrepeFeature } from './index-Dc_wWopW.js';
|
|
4
|
+
import { c as confirmIcon } from './confirm-DtE-HkVd.js';
|
|
5
|
+
import { codeBlockSchema } from '@milkdown/kit/preset/commonmark';
|
|
7
6
|
import { a as mathInlineId, m as mathInlineSchema } from './inline-latex-C9IGAXXQ.js';
|
|
8
|
-
import { d as defIfNotExists } from './index-D6fLMv29.js';
|
|
9
|
-
import { c, h, html } from 'atomico';
|
|
10
7
|
import { tooltipFactory, TooltipProvider } from '@milkdown/kit/plugin/tooltip';
|
|
11
|
-
import { NodeSelection, EditorState } from '@milkdown/kit/prose/state';
|
|
12
|
-
import { EditorView } from '@milkdown/kit/prose/view';
|
|
13
|
-
import { keymap } from '@milkdown/kit/prose/keymap';
|
|
14
8
|
import { redo, undo } from '@milkdown/kit/prose/history';
|
|
9
|
+
import { keymap } from '@milkdown/kit/prose/keymap';
|
|
15
10
|
import { Schema } from '@milkdown/kit/prose/model';
|
|
16
|
-
import {
|
|
11
|
+
import { NodeSelection, EditorState } from '@milkdown/kit/prose/state';
|
|
12
|
+
import { EditorView } from '@milkdown/kit/prose/view';
|
|
13
|
+
import { defineComponent, h, shallowRef, createApp } from 'vue';
|
|
14
|
+
import { Icon } from '@milkdown/kit/component';
|
|
17
15
|
import { nodeRule } from '@milkdown/kit/prose';
|
|
18
|
-
import { codeBlockSchema } from '@milkdown/kit/preset/commonmark';
|
|
19
16
|
import { textblockTypeInputRule } from '@milkdown/kit/prose/inputrules';
|
|
17
|
+
import { $inputRule, $remark } from '@milkdown/kit/utils';
|
|
18
|
+
import remarkMath from 'remark-math';
|
|
19
|
+
import { visit } from 'unist-util-visit';
|
|
20
20
|
import '@milkdown/kit/core';
|
|
21
|
-
import '@milkdown/kit/
|
|
21
|
+
import '@milkdown/kit/plugin/clipboard';
|
|
22
22
|
import '@milkdown/kit/plugin/history';
|
|
23
23
|
import '@milkdown/kit/plugin/indent';
|
|
24
|
-
import '@milkdown/kit/plugin/
|
|
24
|
+
import '@milkdown/kit/plugin/listener';
|
|
25
25
|
import '@milkdown/kit/plugin/trailing';
|
|
26
|
+
import '@milkdown/kit/preset/gfm';
|
|
26
27
|
import '@milkdown/kit/ctx';
|
|
27
|
-
import '@milkdown/kit/plugin/listener';
|
|
28
|
-
|
|
29
|
-
const remarkMathPlugin = $remark(
|
|
30
|
-
"remarkMath",
|
|
31
|
-
() => remarkMath
|
|
32
|
-
);
|
|
33
|
-
function visitMathBlock(ast) {
|
|
34
|
-
return visit(
|
|
35
|
-
ast,
|
|
36
|
-
"math",
|
|
37
|
-
(node, index, parent) => {
|
|
38
|
-
const { value } = node;
|
|
39
|
-
const newNode = {
|
|
40
|
-
type: "code",
|
|
41
|
-
lang: "LaTeX",
|
|
42
|
-
value
|
|
43
|
-
};
|
|
44
|
-
parent.children.splice(index, 1, newNode);
|
|
45
|
-
}
|
|
46
|
-
);
|
|
47
|
-
}
|
|
48
|
-
const remarkMathBlockPlugin = $remark(
|
|
49
|
-
"remarkMathBlock",
|
|
50
|
-
() => () => visitMathBlock
|
|
51
|
-
);
|
|
52
28
|
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
29
|
+
const blockLatexSchema = codeBlockSchema.extendSchema((prev) => {
|
|
30
|
+
return (ctx) => {
|
|
31
|
+
const baseSchema = prev(ctx);
|
|
32
|
+
return {
|
|
33
|
+
...baseSchema,
|
|
34
|
+
toMarkdown: {
|
|
35
|
+
match: baseSchema.toMarkdown.match,
|
|
36
|
+
runner: (state, node) => {
|
|
37
|
+
var _a, _b;
|
|
38
|
+
const language = (_a = node.attrs.language) != null ? _a : "";
|
|
39
|
+
if (language.toLowerCase() === "latex") {
|
|
40
|
+
state.addNode(
|
|
41
|
+
"math",
|
|
42
|
+
void 0,
|
|
43
|
+
((_b = node.content.firstChild) == null ? void 0 : _b.text) || ""
|
|
44
|
+
);
|
|
45
|
+
} else {
|
|
46
|
+
return baseSchema.toMarkdown.runner(state, node);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
};
|
|
62
51
|
};
|
|
63
|
-
|
|
64
|
-
<host>
|
|
65
|
-
<div class="container">
|
|
66
|
-
${innerView && h(innerView.dom, {})}
|
|
67
|
-
<button onmousedown=${onMouseDown}>
|
|
68
|
-
${(_a = config == null ? void 0 : config.inlineEditConfirm) == null ? void 0 : _a.call(config)}
|
|
69
|
-
</button>
|
|
70
|
-
</div>
|
|
71
|
-
</host>
|
|
72
|
-
`;
|
|
73
|
-
};
|
|
74
|
-
latexEditComponent.props = {
|
|
75
|
-
config: Object,
|
|
76
|
-
innerView: Object,
|
|
77
|
-
updateValue: Function
|
|
78
|
-
};
|
|
79
|
-
const LatexInlineEditElement = c(latexEditComponent);
|
|
52
|
+
});
|
|
80
53
|
|
|
81
54
|
const inlineLatexTooltip = tooltipFactory("INLINE_LATEX");
|
|
82
55
|
|
|
56
|
+
const LatexTooltip = defineComponent({
|
|
57
|
+
props: {
|
|
58
|
+
config: {
|
|
59
|
+
type: Object,
|
|
60
|
+
required: true
|
|
61
|
+
},
|
|
62
|
+
innerView: {
|
|
63
|
+
type: Object,
|
|
64
|
+
required: true
|
|
65
|
+
},
|
|
66
|
+
updateValue: {
|
|
67
|
+
type: Object,
|
|
68
|
+
required: true
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
setup(props) {
|
|
72
|
+
const innerViewRef = (el) => {
|
|
73
|
+
if (!el || !(el instanceof HTMLElement)) return;
|
|
74
|
+
while (el.firstChild) {
|
|
75
|
+
el.removeChild(el.firstChild);
|
|
76
|
+
}
|
|
77
|
+
if (props.innerView.value) {
|
|
78
|
+
el.appendChild(props.innerView.value.dom);
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
const onUpdate = (e) => {
|
|
82
|
+
e.preventDefault();
|
|
83
|
+
props.updateValue.value();
|
|
84
|
+
};
|
|
85
|
+
return () => {
|
|
86
|
+
var _a, _b;
|
|
87
|
+
return /* @__PURE__ */ h("div", { class: "container" }, props.innerView && /* @__PURE__ */ h("div", { ref: innerViewRef }), /* @__PURE__ */ h("button", { onPointerdown: onUpdate }, /* @__PURE__ */ h(Icon, { icon: (_b = (_a = props.config).inlineEditConfirm) == null ? void 0 : _b.call(_a) })));
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
|
|
83
92
|
var __typeError = (msg) => {
|
|
84
93
|
throw TypeError(msg);
|
|
85
94
|
};
|
|
@@ -87,18 +96,21 @@ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot
|
|
|
87
96
|
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
88
97
|
var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
89
98
|
var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
|
|
90
|
-
var _content, _provider, _dom, _innerView, _onHide, _shouldShow;
|
|
99
|
+
var _content, _provider, _dom, _innerView, _updateValue, _app, _onHide, _shouldShow;
|
|
91
100
|
class LatexInlineTooltip {
|
|
92
101
|
constructor(ctx, view, config) {
|
|
93
102
|
this.ctx = ctx;
|
|
94
|
-
__privateAdd(this, _content
|
|
103
|
+
__privateAdd(this, _content);
|
|
95
104
|
__privateAdd(this, _provider);
|
|
96
105
|
__privateAdd(this, _dom);
|
|
97
|
-
__privateAdd(this, _innerView);
|
|
106
|
+
__privateAdd(this, _innerView, shallowRef(null));
|
|
107
|
+
__privateAdd(this, _updateValue, shallowRef(() => {
|
|
108
|
+
}));
|
|
109
|
+
__privateAdd(this, _app);
|
|
98
110
|
__privateAdd(this, _onHide, () => {
|
|
99
|
-
if (__privateGet(this, _innerView)) {
|
|
100
|
-
__privateGet(this, _innerView).destroy();
|
|
101
|
-
|
|
111
|
+
if (__privateGet(this, _innerView).value) {
|
|
112
|
+
__privateGet(this, _innerView).value.destroy();
|
|
113
|
+
__privateGet(this, _innerView).value = null;
|
|
102
114
|
}
|
|
103
115
|
});
|
|
104
116
|
__privateAdd(this, _shouldShow, (view) => {
|
|
@@ -140,17 +152,15 @@ class LatexInlineTooltip {
|
|
|
140
152
|
"Mod-Z": redo,
|
|
141
153
|
"Mod-y": redo,
|
|
142
154
|
Enter: () => {
|
|
143
|
-
|
|
144
|
-
(_b = (_a = __privateGet(this, _content)).updateValue) == null ? void 0 : _b.call(_a);
|
|
155
|
+
__privateGet(this, _updateValue).value();
|
|
145
156
|
return true;
|
|
146
157
|
}
|
|
147
158
|
})
|
|
148
159
|
]
|
|
149
160
|
})
|
|
150
161
|
});
|
|
151
|
-
|
|
152
|
-
__privateGet(this,
|
|
153
|
-
__privateGet(this, _content).updateValue = () => {
|
|
162
|
+
__privateGet(this, _innerView).value = innerView;
|
|
163
|
+
__privateGet(this, _updateValue).value = () => {
|
|
154
164
|
const { tr } = view.state;
|
|
155
165
|
tr.setNodeAttribute(textFrom, "value", innerView.state.doc.textContent);
|
|
156
166
|
view.dispatch(tr);
|
|
@@ -168,9 +178,19 @@ class LatexInlineTooltip {
|
|
|
168
178
|
__privateGet(this, _provider).update(view, prevState);
|
|
169
179
|
};
|
|
170
180
|
this.destroy = () => {
|
|
181
|
+
__privateGet(this, _app).unmount();
|
|
171
182
|
__privateGet(this, _provider).destroy();
|
|
172
183
|
__privateGet(this, _content).remove();
|
|
173
184
|
};
|
|
185
|
+
const content = document.createElement("div");
|
|
186
|
+
content.className = "milkdown-latex-inline-edit";
|
|
187
|
+
__privateSet(this, _content, content);
|
|
188
|
+
__privateSet(this, _app, createApp(LatexTooltip, {
|
|
189
|
+
config,
|
|
190
|
+
innerView: __privateGet(this, _innerView),
|
|
191
|
+
updateValue: __privateGet(this, _updateValue)
|
|
192
|
+
}));
|
|
193
|
+
__privateGet(this, _app).mount(content);
|
|
174
194
|
__privateSet(this, _provider, new TooltipProvider({
|
|
175
195
|
debounce: 0,
|
|
176
196
|
content: __privateGet(this, _content),
|
|
@@ -180,16 +200,16 @@ class LatexInlineTooltip {
|
|
|
180
200
|
placement: "bottom"
|
|
181
201
|
}
|
|
182
202
|
}));
|
|
183
|
-
__privateGet(this, _content).config = config;
|
|
184
203
|
__privateGet(this, _provider).update(view);
|
|
185
204
|
__privateSet(this, _dom, document.createElement("div"));
|
|
186
|
-
__privateSet(this, _innerView, null);
|
|
187
205
|
}
|
|
188
206
|
}
|
|
189
207
|
_content = new WeakMap();
|
|
190
208
|
_provider = new WeakMap();
|
|
191
209
|
_dom = new WeakMap();
|
|
192
210
|
_innerView = new WeakMap();
|
|
211
|
+
_updateValue = new WeakMap();
|
|
212
|
+
_app = new WeakMap();
|
|
193
213
|
_onHide = new WeakMap();
|
|
194
214
|
_shouldShow = new WeakMap();
|
|
195
215
|
|
|
@@ -209,32 +229,30 @@ const mathBlockInputRule = $inputRule(
|
|
|
209
229
|
}))
|
|
210
230
|
);
|
|
211
231
|
|
|
212
|
-
const
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
});
|
|
232
|
+
const remarkMathPlugin = $remark(
|
|
233
|
+
"remarkMath",
|
|
234
|
+
() => remarkMath
|
|
235
|
+
);
|
|
236
|
+
function visitMathBlock(ast) {
|
|
237
|
+
return visit(
|
|
238
|
+
ast,
|
|
239
|
+
"math",
|
|
240
|
+
(node, index, parent) => {
|
|
241
|
+
const { value } = node;
|
|
242
|
+
const newNode = {
|
|
243
|
+
type: "code",
|
|
244
|
+
lang: "LaTeX",
|
|
245
|
+
value
|
|
246
|
+
};
|
|
247
|
+
parent.children.splice(index, 1, newNode);
|
|
248
|
+
}
|
|
249
|
+
);
|
|
250
|
+
}
|
|
251
|
+
const remarkMathBlockPlugin = $remark(
|
|
252
|
+
"remarkMathBlock",
|
|
253
|
+
() => () => visitMathBlock
|
|
254
|
+
);
|
|
236
255
|
|
|
237
|
-
defIfNotExists("milkdown-latex-inline-edit", LatexInlineEditElement);
|
|
238
256
|
const defineFeature = (editor, config) => {
|
|
239
257
|
editor.config((ctx) => {
|
|
240
258
|
const flags = ctx.get(FeaturesCtx);
|
|
@@ -273,4 +291,4 @@ function renderLatex(content, options) {
|
|
|
273
291
|
}
|
|
274
292
|
|
|
275
293
|
export { defineFeature };
|
|
276
|
-
//# sourceMappingURL=index-
|
|
294
|
+
//# sourceMappingURL=index-BDZ_pnSv.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-BDZ_pnSv.js","sources":["../../src/feature/latex/block-latex.ts","../../src/feature/latex/inline-tooltip/tooltip.ts","../../src/feature/latex/inline-tooltip/component.tsx","../../src/feature/latex/inline-tooltip/view.ts","../../src/feature/latex/input-rule.ts","../../src/feature/latex/remark.ts","../../src/feature/latex/index.ts"],"sourcesContent":["import { codeBlockSchema } from '@milkdown/kit/preset/commonmark'\n\nexport const blockLatexSchema = codeBlockSchema.extendSchema((prev) => {\n return (ctx) => {\n const baseSchema = prev(ctx)\n return {\n ...baseSchema,\n toMarkdown: {\n match: baseSchema.toMarkdown.match,\n runner: (state, node) => {\n const language = node.attrs.language ?? ''\n if (language.toLowerCase() === 'latex') {\n state.addNode(\n 'math',\n undefined,\n node.content.firstChild?.text || ''\n )\n } else {\n return baseSchema.toMarkdown.runner(state, node)\n }\n },\n },\n }\n }\n})\n","import { tooltipFactory } from '@milkdown/kit/plugin/tooltip'\n\nexport const inlineLatexTooltip = tooltipFactory('INLINE_LATEX')\n","import type { EditorView } from '@milkdown/kit/prose/view'\n\nimport { Icon } from '@milkdown/kit/component'\nimport { defineComponent, type ShallowRef, type VNodeRef, h } from 'vue'\n\nimport type { LatexConfig } from '..'\n\ntype LatexTooltipProps = {\n config: Partial<LatexConfig>\n innerView: ShallowRef<EditorView | null>\n updateValue: ShallowRef<() => void>\n}\n\nh\n\nexport const LatexTooltip = defineComponent<LatexTooltipProps>({\n props: {\n config: {\n type: Object,\n required: true,\n },\n innerView: {\n type: Object,\n required: true,\n },\n updateValue: {\n type: Object,\n required: true,\n },\n },\n setup(props) {\n const innerViewRef: VNodeRef = (el) => {\n if (!el || !(el instanceof HTMLElement)) return\n while (el.firstChild) {\n el.removeChild(el.firstChild)\n }\n if (props.innerView.value) {\n el.appendChild(props.innerView.value.dom)\n }\n }\n const onUpdate = (e: Event) => {\n e.preventDefault()\n props.updateValue.value()\n }\n\n return () => {\n return (\n <div class=\"container\">\n {props.innerView && <div ref={innerViewRef} />}\n <button onPointerdown={onUpdate}>\n <Icon icon={props.config.inlineEditConfirm?.()} />\n </button>\n </div>\n )\n }\n },\n})\n","import type { Ctx } from '@milkdown/kit/ctx'\nimport type { PluginView } from '@milkdown/kit/prose/state'\n\nimport { TooltipProvider } from '@milkdown/kit/plugin/tooltip'\nimport { redo, undo } from '@milkdown/kit/prose/history'\nimport { keymap } from '@milkdown/kit/prose/keymap'\nimport { Schema } from '@milkdown/kit/prose/model'\nimport { EditorState, NodeSelection } from '@milkdown/kit/prose/state'\nimport { EditorView } from '@milkdown/kit/prose/view'\nimport { createApp, shallowRef, type App, type ShallowRef } from 'vue'\n\nimport type { LatexConfig } from '..'\n\nimport { mathInlineId } from '../inline-latex'\nimport { LatexTooltip } from './component'\n\nexport class LatexInlineTooltip implements PluginView {\n #content: HTMLElement\n #provider: TooltipProvider\n #dom: HTMLElement\n #innerView: ShallowRef<EditorView | null> = shallowRef(null)\n #updateValue: ShallowRef<() => void> = shallowRef(() => {})\n #app: App\n\n constructor(\n readonly ctx: Ctx,\n view: EditorView,\n config: Partial<LatexConfig>\n ) {\n const content = document.createElement('div')\n content.className = 'milkdown-latex-inline-edit'\n this.#content = content\n this.#app = createApp(LatexTooltip, {\n config,\n innerView: this.#innerView,\n updateValue: this.#updateValue,\n })\n this.#app.mount(content)\n this.#provider = new TooltipProvider({\n debounce: 0,\n content: this.#content,\n shouldShow: this.#shouldShow,\n offset: 10,\n floatingUIOptions: {\n placement: 'bottom',\n },\n })\n this.#provider.update(view)\n this.#dom = document.createElement('div')\n }\n\n #onHide = () => {\n if (this.#innerView.value) {\n this.#innerView.value.destroy()\n this.#innerView.value = null\n }\n }\n\n #shouldShow = (view: EditorView) => {\n const shouldShow = () => {\n const { selection, schema } = view.state\n if (selection.empty) return false\n if (!(selection instanceof NodeSelection)) return false\n const node = selection.node\n if (node.type.name !== mathInlineId) return false\n\n const textFrom = selection.from\n\n const paragraph = schema.nodes.paragraph!.create(\n null,\n schema.text(node.attrs.value)\n )\n\n const innerView = new EditorView(this.#dom, {\n state: EditorState.create({\n doc: paragraph,\n schema: new Schema({\n nodes: {\n doc: {\n content: 'block+',\n },\n paragraph: {\n content: 'inline*',\n group: 'block',\n parseDOM: [{ tag: 'p' }],\n toDOM() {\n return ['p', 0]\n },\n },\n text: {\n group: 'inline',\n },\n },\n }),\n plugins: [\n keymap({\n 'Mod-z': undo,\n 'Mod-Z': redo,\n 'Mod-y': redo,\n Enter: () => {\n this.#updateValue.value()\n return true\n },\n }),\n ],\n }),\n })\n\n this.#innerView.value = innerView\n this.#updateValue.value = () => {\n const { tr } = view.state\n tr.setNodeAttribute(textFrom, 'value', innerView.state.doc.textContent)\n view.dispatch(tr)\n requestAnimationFrame(() => {\n view.focus()\n })\n }\n return true\n }\n\n const show = shouldShow()\n if (!show) this.#onHide()\n return show\n }\n\n update = (view: EditorView, prevState?: EditorState) => {\n this.#provider.update(view, prevState)\n }\n\n destroy = () => {\n this.#app.unmount()\n this.#provider.destroy()\n this.#content.remove()\n }\n}\n","import { codeBlockSchema } from '@milkdown/kit/preset/commonmark'\nimport { nodeRule } from '@milkdown/kit/prose'\nimport { textblockTypeInputRule } from '@milkdown/kit/prose/inputrules'\nimport { $inputRule } from '@milkdown/kit/utils'\n\nimport { mathInlineSchema } from './inline-latex'\n\n/// Input rule for inline math.\n/// When you type $E=MC^2$, it will create an inline math node.\nexport const mathInlineInputRule = $inputRule((ctx) =>\n nodeRule(/(?:\\$)([^$]+)(?:\\$)$/, mathInlineSchema.type(ctx), {\n getAttr: (match) => {\n return {\n value: match[1] ?? '',\n }\n },\n })\n)\n\n/// A input rule for creating block math.\n/// For example, `$$ ` will create a code block with language javascript.\nexport const mathBlockInputRule = $inputRule((ctx) =>\n textblockTypeInputRule(/^\\$\\$[\\s\\n]$/, codeBlockSchema.type(ctx), () => ({\n language: 'LaTeX',\n }))\n)\n","import type { Node } from '@milkdown/kit/transformer'\n\nimport { $remark } from '@milkdown/kit/utils'\nimport remarkMath from 'remark-math'\nimport { visit } from 'unist-util-visit'\n\nexport const remarkMathPlugin = $remark<'remarkMath', undefined>(\n 'remarkMath',\n () => remarkMath\n)\n\nfunction visitMathBlock(ast: Node) {\n return visit(\n ast,\n 'math',\n (\n node: Node & { value: string },\n index: number,\n parent: Node & { children: Node[] }\n ) => {\n const { value } = node as Node & { value: string }\n const newNode = {\n type: 'code',\n lang: 'LaTeX',\n value,\n }\n parent.children.splice(index, 1, newNode)\n }\n )\n}\n\n/// Turn math block into code block with language LaTeX.\nexport const remarkMathBlockPlugin = $remark(\n 'remarkMathBlock',\n () => () => visitMathBlock\n)\n","import type { KatexOptions } from 'katex'\n\nimport { codeBlockConfig } from '@milkdown/kit/component/code-block'\nimport katex from 'katex'\n\nimport type { DefineFeature, Icon } from '../shared'\n\nimport { CrepeFeature } from '../..'\nimport { FeaturesCtx } from '../../core/slice'\nimport { confirmIcon } from '../../icons'\nimport { blockLatexSchema } from './block-latex'\nimport { mathInlineSchema } from './inline-latex'\nimport { inlineLatexTooltip } from './inline-tooltip/tooltip'\nimport { LatexInlineTooltip } from './inline-tooltip/view'\nimport { mathBlockInputRule, mathInlineInputRule } from './input-rule'\nimport { remarkMathBlockPlugin, remarkMathPlugin } from './remark'\n\nexport interface LatexConfig {\n katexOptions: KatexOptions\n inlineEditConfirm: Icon\n}\n\nexport type LatexFeatureConfig = Partial<LatexConfig>\n\nexport const defineFeature: DefineFeature<LatexFeatureConfig> = (\n editor,\n config\n) => {\n editor\n .config((ctx) => {\n const flags = ctx.get(FeaturesCtx)\n const isCodeMirrorEnabled = flags.includes(CrepeFeature.CodeMirror)\n if (!isCodeMirrorEnabled) {\n throw new Error('You need to enable CodeMirror to use LaTeX feature')\n }\n\n ctx.update(codeBlockConfig.key, (prev) => ({\n ...prev,\n renderPreview: (language, content) => {\n if (language.toLowerCase() === 'latex' && content.length > 0) {\n return renderLatex(content, config?.katexOptions)\n }\n const renderPreview = prev.renderPreview\n return renderPreview(language, content)\n },\n }))\n\n ctx.set(inlineLatexTooltip.key, {\n view: (view) => {\n return new LatexInlineTooltip(ctx, view, {\n inlineEditConfirm: config?.inlineEditConfirm ?? (() => confirmIcon),\n ...config,\n })\n },\n })\n })\n .use(remarkMathPlugin)\n .use(remarkMathBlockPlugin)\n .use(mathInlineSchema)\n .use(inlineLatexTooltip)\n .use(mathInlineInputRule)\n .use(mathBlockInputRule)\n .use(blockLatexSchema)\n}\n\nfunction renderLatex(content: string, options?: KatexOptions) {\n const html = katex.renderToString(content, {\n ...options,\n throwOnError: false,\n displayMode: true,\n })\n return html\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -7,10 +7,6 @@ function isInList(selection) {
|
|
|
7
7
|
const type = (_a = selection.$from.node(selection.$from.depth - 1)) == null ? void 0 : _a.type;
|
|
8
8
|
return (type == null ? void 0 : type.name) === "list_item";
|
|
9
9
|
}
|
|
10
|
-
function defIfNotExists(tagName, element) {
|
|
11
|
-
if (customElements.get(tagName) == null)
|
|
12
|
-
customElements.define(tagName, element);
|
|
13
|
-
}
|
|
14
10
|
|
|
15
|
-
export { isInList as a,
|
|
16
|
-
//# sourceMappingURL=index-
|
|
11
|
+
export { isInList as a, isInCodeBlock as i };
|
|
12
|
+
//# sourceMappingURL=index-BPG8iO8t.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-BPG8iO8t.js","sources":["../../src/utils/index.ts"],"sourcesContent":["import type { Selection } from '@milkdown/kit/prose/state'\n\nexport function isInCodeBlock(selection: Selection) {\n const type = selection.$from.parent.type\n return type.name === 'code_block'\n}\n\nexport function isInList(selection: Selection) {\n const type = selection.$from.node(selection.$from.depth - 1)?.type\n return type?.name === 'list_item'\n}\n\nexport function defIfNotExists(\n tagName: string,\n element: CustomElementConstructor\n) {\n if (customElements.get(tagName) == null)\n customElements.define(tagName, element)\n}\n"],"names":[],"mappings":"AAEO,SAAS,cAAc,SAAsB,EAAA;AAClD,EAAM,MAAA,IAAA,GAAO,SAAU,CAAA,KAAA,CAAM,MAAO,CAAA,IAAA;AACpC,EAAA,OAAO,KAAK,IAAS,KAAA,YAAA;AACvB;AAEO,SAAS,SAAS,SAAsB,EAAA;AAP/C,EAAA,IAAA,EAAA;AAQE,EAAM,MAAA,IAAA,GAAA,CAAO,eAAU,KAAM,CAAA,IAAA,CAAK,UAAU,KAAM,CAAA,KAAA,GAAQ,CAAC,CAAA,KAA9C,IAAiD,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA;AAC9D,EAAA,OAAA,CAAO,6BAAM,IAAS,MAAA,WAAA;AACxB;;;;"}
|
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
import { configureLinkTooltip, linkTooltipConfig, linkTooltipPlugin } from '@milkdown/kit/component/link-tooltip';
|
|
2
|
-
import {
|
|
3
|
-
import '
|
|
2
|
+
import { c as confirmIcon } from './confirm-DtE-HkVd.js';
|
|
3
|
+
import { e as editIcon } from './edit-D--t_JAb.js';
|
|
4
|
+
import { r as removeIcon } from './remove-D3g0Cd6_.js';
|
|
5
|
+
|
|
6
|
+
const copyIcon = `
|
|
7
|
+
<svg
|
|
8
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
9
|
+
height="24px"
|
|
10
|
+
viewBox="0 -960 960 960"
|
|
11
|
+
width="24px"
|
|
12
|
+
fill="none"
|
|
13
|
+
>
|
|
14
|
+
<path
|
|
15
|
+
d="M360-240q-33 0-56.5-23.5T280-320v-480q0-33 23.5-56.5T360-880h360q33 0 56.5 23.5T800-800v480q0 33-23.5 56.5T720-240H360Zm0-80h360v-480H360v480ZM200-80q-33 0-56.5-23.5T120-160v-560h80v560h440v80H200Zm160-240v-480 480Z"
|
|
16
|
+
/>
|
|
17
|
+
</svg>
|
|
18
|
+
`;
|
|
4
19
|
|
|
5
20
|
const defineFeature = (editor, config) => {
|
|
6
21
|
editor.config(configureLinkTooltip).config((ctx) => {
|
|
@@ -21,4 +36,4 @@ const defineFeature = (editor, config) => {
|
|
|
21
36
|
};
|
|
22
37
|
|
|
23
38
|
export { defineFeature };
|
|
24
|
-
//# sourceMappingURL=index-
|
|
39
|
+
//# sourceMappingURL=index-BUBXHhHG.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-BUBXHhHG.js","sources":["../../src/icons/copy.ts","../../src/feature/link-tooltip/index.ts"],"sourcesContent":["export const copyIcon = `\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"24px\"\n viewBox=\"0 -960 960 960\"\n width=\"24px\"\n fill=\"none\"\n >\n <path\n d=\"M360-240q-33 0-56.5-23.5T280-320v-480q0-33 23.5-56.5T360-880h360q33 0 56.5 23.5T800-800v480q0 33-23.5 56.5T720-240H360Zm0-80h360v-480H360v480ZM200-80q-33 0-56.5-23.5T120-160v-560h80v560h440v80H200Zm160-240v-480 480Z\"\n />\n </svg>\n`\n","import {\n configureLinkTooltip,\n linkTooltipConfig,\n linkTooltipPlugin,\n} from '@milkdown/kit/component/link-tooltip'\n\nimport type { DefineFeature, Icon } from '../shared'\n\nimport { copyIcon, editIcon, removeIcon, confirmIcon } from '../../icons'\n\ninterface LinkTooltipConfig {\n linkIcon: Icon\n editButton: Icon\n removeButton: Icon\n confirmButton: Icon\n inputPlaceholder: string\n onCopyLink: (link: string) => void\n}\n\nexport type LinkTooltipFeatureConfig = Partial<LinkTooltipConfig>\n\nexport const defineFeature: DefineFeature<LinkTooltipFeatureConfig> = (\n editor,\n config\n) => {\n editor\n .config(configureLinkTooltip)\n .config((ctx) => {\n ctx.update(linkTooltipConfig.key, (prev) => ({\n ...prev,\n linkIcon: config?.linkIcon ?? (() => copyIcon),\n editButton: config?.editButton ?? (() => editIcon),\n removeButton: config?.removeButton ?? (() => removeIcon),\n confirmButton: config?.confirmButton ?? (() => confirmIcon),\n inputPlaceholder: config?.inputPlaceholder ?? 'Paste link...',\n onCopyLink: config?.onCopyLink ?? (() => {}),\n }))\n })\n .use(linkTooltipPlugin)\n}\n"],"names":[],"mappings":";;;;;AAAO,MAAM,QAAW,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;;ACqBX,MAAA,aAAA,GAAyD,CACpE,MAAA,EACA,MACG,KAAA;AACH,EAAA,MAAA,CACG,MAAO,CAAA,oBAAoB,CAC3B,CAAA,MAAA,CAAO,CAAC,GAAQ,KAAA;AACf,IAAA,GAAA,CAAI,MAAO,CAAA,iBAAA,CAAkB,GAAK,EAAA,CAAC,IAAM,KAAA;AA5B/C,MAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AA4BmD,MAAA,OAAA;AAAA,QAC3C,GAAG,IAAA;AAAA,QACH,QAAU,EAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,QAAR,KAAA,IAAA,GAAA,EAAA,GAAqB,MAAM,QAAA;AAAA,QACrC,UAAY,EAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,UAAR,KAAA,IAAA,GAAA,EAAA,GAAuB,MAAM,QAAA;AAAA,QACzC,YAAc,EAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,YAAR,KAAA,IAAA,GAAA,EAAA,GAAyB,MAAM,UAAA;AAAA,QAC7C,aAAe,EAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,aAAR,KAAA,IAAA,GAAA,EAAA,GAA0B,MAAM,WAAA;AAAA,QAC/C,gBAAA,EAAA,CAAkB,EAAQ,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAA,gBAAA,KAAR,IAA4B,GAAA,EAAA,GAAA,eAAA;AAAA,QAC9C,UAAY,EAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,UAAR,KAAA,IAAA,GAAA,EAAA,GAAuB,MAAM;AAAA;AAAC,OAC5C;AAAA,KAAE,CAAA;AAAA,GACH,CACA,CAAA,GAAA,CAAI,iBAAiB,CAAA;AAC1B;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { dropCursorConfig, cursor } from '@milkdown/kit/plugin/cursor';
|
|
2
|
-
import { createVirtualCursor } from 'prosemirror-virtual-cursor';
|
|
3
2
|
import { $prose } from '@milkdown/kit/utils';
|
|
3
|
+
import { createVirtualCursor } from 'prosemirror-virtual-cursor';
|
|
4
4
|
|
|
5
5
|
const defineFeature = (editor, config) => {
|
|
6
6
|
editor.config((ctx) => {
|
|
@@ -21,4 +21,4 @@ const defineFeature = (editor, config) => {
|
|
|
21
21
|
};
|
|
22
22
|
|
|
23
23
|
export { defineFeature };
|
|
24
|
-
//# sourceMappingURL=index-
|
|
24
|
+
//# sourceMappingURL=index-Bvz1Yyiz.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-Bvz1Yyiz.js","sources":["../../src/feature/cursor/index.ts"],"sourcesContent":["import { cursor, dropCursorConfig } from '@milkdown/kit/plugin/cursor'\nimport { $prose } from '@milkdown/kit/utils'\nimport { createVirtualCursor } from 'prosemirror-virtual-cursor'\n\nimport type { DefineFeature } from '../shared'\n\ninterface CursorConfig {\n color: string | false\n width: number\n virtual: boolean\n}\nexport type CursorFeatureConfig = Partial<CursorConfig>\n\nexport const defineFeature: DefineFeature<CursorFeatureConfig> = (\n editor,\n config\n) => {\n editor\n .config((ctx) => {\n ctx.update(dropCursorConfig.key, () => ({\n class: 'crepe-drop-cursor',\n width: config?.width ?? 4,\n color: config?.color ?? false,\n }))\n })\n .use(cursor)\n\n if (config?.virtual === false) {\n return\n }\n\n const virtualCursor = createVirtualCursor()\n editor.use($prose(() => virtualCursor))\n}\n"],"names":[],"mappings":";;;;AAaa,MAAA,aAAA,GAAoD,CAC/D,MAAA,EACA,MACG,KAAA;AACH,EACG,MAAA,CAAA,MAAA,CAAO,CAAC,GAAQ,KAAA;AACf,IAAI,GAAA,CAAA,MAAA,CAAO,gBAAiB,CAAA,GAAA,EAAK,MAAG;AAnB1C,MAAA,IAAA,EAAA,EAAA,EAAA;AAmB8C,MAAA,OAAA;AAAA,QACtC,KAAO,EAAA,mBAAA;AAAA,QACP,KAAA,EAAA,CAAO,EAAQ,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAA,KAAA,KAAR,IAAiB,GAAA,EAAA,GAAA,CAAA;AAAA,QACxB,KAAA,EAAA,CAAO,EAAQ,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAA,KAAA,KAAR,IAAiB,GAAA,EAAA,GAAA;AAAA,OAC1B;AAAA,KAAE,CAAA;AAAA,GACH,CACA,CAAA,GAAA,CAAI,MAAM,CAAA;AAEb,EAAI,IAAA,CAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,aAAY,KAAO,EAAA;AAC7B,IAAA;AAAA;AAGF,EAAA,MAAM,gBAAgB,mBAAoB,EAAA;AAC1C,EAAA,MAAA,CAAO,GAAI,CAAA,MAAA,CAAO,MAAM,aAAa,CAAC,CAAA;AACxC;;;;"}
|