@primeui/texteditor-core 0.0.1-alpha.1 → 1.0.0-beta.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/dist/{chunk-GG56GLXC.mjs → chunks/chunk-25Y5HLDY.mjs} +2 -2
- package/dist/chunks/chunk-25Y5HLDY.mjs.map +1 -0
- package/dist/{chunk-PT2O4RV7.mjs → chunks/chunk-4BI7WWVV.mjs} +6 -5
- package/dist/chunks/chunk-4BI7WWVV.mjs.map +1 -0
- package/dist/{chunk-72T5I4O4.mjs → chunks/chunk-4C4R23A3.mjs} +2 -2
- package/dist/chunks/chunk-4C4R23A3.mjs.map +1 -0
- package/dist/{chunk-PT5V6UYE.mjs → chunks/chunk-4NWX3EPS.mjs} +2 -2
- package/dist/chunks/chunk-4NWX3EPS.mjs.map +1 -0
- package/dist/{chunk-XKY2VYPW.mjs → chunks/chunk-75IVOL6Q.mjs} +2 -2
- package/dist/chunks/chunk-75IVOL6Q.mjs.map +1 -0
- package/dist/{chunk-7QCHSEN2.mjs → chunks/chunk-C2TRJCIH.mjs} +2 -2
- package/dist/chunks/chunk-C2TRJCIH.mjs.map +1 -0
- package/dist/{chunk-AJOKUIQD.mjs → chunks/chunk-C6CEVLOL.mjs} +2 -2
- package/dist/chunks/chunk-C6CEVLOL.mjs.map +1 -0
- package/dist/{chunk-H3RFOYCT.mjs → chunks/chunk-DAVC2Z22.mjs} +2 -2
- package/dist/chunks/chunk-DAVC2Z22.mjs.map +1 -0
- package/dist/{chunk-NWRVBNBW.mjs → chunks/chunk-F2THMQFM.mjs} +3 -3
- package/dist/chunks/chunk-F2THMQFM.mjs.map +1 -0
- package/dist/{chunk-TBQVZVKA.mjs → chunks/chunk-F4KBJIZJ.mjs} +43 -31
- package/dist/chunks/chunk-F4KBJIZJ.mjs.map +1 -0
- package/dist/{chunk-J5LGTIGS.mjs → chunks/chunk-FLGC65SR.mjs} +2 -2
- package/dist/{chunk-J5LGTIGS.mjs.map → chunks/chunk-FLGC65SR.mjs.map} +1 -1
- package/dist/{chunk-3RKMABZR.mjs → chunks/chunk-KA3KNPLZ.mjs} +4 -4
- package/dist/chunks/chunk-KA3KNPLZ.mjs.map +1 -0
- package/dist/{chunk-OGEMGWLR.mjs → chunks/chunk-LHZDU6AA.mjs} +5 -5
- package/dist/chunks/chunk-LHZDU6AA.mjs.map +1 -0
- package/dist/{chunk-PRFYR67X.mjs → chunks/chunk-LYB4TGKX.mjs} +2 -2
- package/dist/chunks/chunk-LYB4TGKX.mjs.map +1 -0
- package/dist/{chunk-MNKMKFLQ.mjs → chunks/chunk-MMU3VGMT.mjs} +3 -3
- package/dist/chunks/chunk-MMU3VGMT.mjs.map +1 -0
- package/dist/{chunk-6YDCG63C.mjs → chunks/chunk-MMY4F74E.mjs} +9 -9
- package/dist/chunks/chunk-MMY4F74E.mjs.map +1 -0
- package/dist/{chunk-6GY64GPU.mjs → chunks/chunk-MSPB65AH.mjs} +2 -2
- package/dist/chunks/chunk-MSPB65AH.mjs.map +1 -0
- package/dist/{chunk-KNZAMA6H.mjs → chunks/chunk-NZCWIEXE.mjs} +3 -3
- package/dist/chunks/chunk-NZCWIEXE.mjs.map +1 -0
- package/dist/{chunk-DXPG5XMX.mjs → chunks/chunk-P4N6CW2J.mjs} +2 -2
- package/dist/chunks/chunk-P4N6CW2J.mjs.map +1 -0
- package/dist/{chunk-FFCQLWS5.mjs → chunks/chunk-PRW2CBOO.mjs} +2 -2
- package/dist/chunks/chunk-PRW2CBOO.mjs.map +1 -0
- package/dist/{chunk-IUQKSDKG.mjs → chunks/chunk-PSOP5GNT.mjs} +3 -3
- package/dist/chunks/chunk-PSOP5GNT.mjs.map +1 -0
- package/dist/{chunk-RH45QRSV.mjs → chunks/chunk-Q7MBG5CT.mjs} +2 -2
- package/dist/chunks/chunk-Q7MBG5CT.mjs.map +1 -0
- package/dist/{chunk-AUTGNC2Q.mjs → chunks/chunk-QMEKZ64Z.mjs} +6 -6
- package/dist/chunks/chunk-QMEKZ64Z.mjs.map +1 -0
- package/dist/{chunk-YHMP6AN3.mjs → chunks/chunk-QZUFYVD5.mjs} +4 -4
- package/dist/chunks/chunk-QZUFYVD5.mjs.map +1 -0
- package/dist/{chunk-22B454VC.mjs → chunks/chunk-RE46J3VH.mjs} +2 -2
- package/dist/chunks/chunk-RE46J3VH.mjs.map +1 -0
- package/dist/{chunk-MWT5PK3Z.mjs → chunks/chunk-SFUE4QBU.mjs} +2 -2
- package/dist/chunks/chunk-SFUE4QBU.mjs.map +1 -0
- package/dist/{chunk-TB7ZSSR2.mjs → chunks/chunk-UHENKXGQ.mjs} +2 -2
- package/dist/chunks/chunk-UHENKXGQ.mjs.map +1 -0
- package/dist/{chunk-GGPBV4BM.mjs → chunks/chunk-UN74246B.mjs} +2 -2
- package/dist/chunks/chunk-UN74246B.mjs.map +1 -0
- package/dist/{chunk-6ZN5XRH2.mjs → chunks/chunk-UORFAHNO.mjs} +2 -2
- package/dist/chunks/chunk-UORFAHNO.mjs.map +1 -0
- package/dist/{chunk-E2KXUP3F.mjs → chunks/chunk-VXO6D7N5.mjs} +2 -2
- package/dist/chunks/chunk-VXO6D7N5.mjs.map +1 -0
- package/dist/{chunk-RQ2HHNI6.mjs → chunks/chunk-XO4UUELZ.mjs} +3 -3
- package/dist/chunks/chunk-XO4UUELZ.mjs.map +1 -0
- package/dist/{chunk-EA2YI7LA.mjs → chunks/chunk-XOMJOYJG.mjs} +2 -2
- package/dist/chunks/chunk-XOMJOYJG.mjs.map +1 -0
- package/dist/{chunk-VWGQMUPD.mjs → chunks/chunk-YXOJODMQ.mjs} +3 -3
- package/dist/chunks/chunk-YXOJODMQ.mjs.map +1 -0
- package/dist/{chunk-XSVIGDQR.mjs → chunks/chunk-Z7KBTB2P.mjs} +2 -2
- package/dist/chunks/chunk-Z7KBTB2P.mjs.map +1 -0
- package/dist/{chunk-F7BJWPT6.mjs → chunks/chunk-ZSXWDZMQ.mjs} +6 -6
- package/dist/chunks/chunk-ZSXWDZMQ.mjs.map +1 -0
- package/dist/{chunk-CRAB2MFE.mjs → chunks/chunk-ZUZABDZC.mjs} +2 -2
- package/dist/chunks/chunk-ZUZABDZC.mjs.map +1 -0
- package/dist/commands/index.mjs +11 -11
- package/dist/createTextEditor.mjs +29 -29
- package/dist/index.mjs +31 -31
- package/dist/plugins/columnWidthPin.mjs +2 -2
- package/dist/plugins/contextToolbar.mjs +3 -3
- package/dist/plugins/defineTextEditorPlugin.mjs +2 -2
- package/dist/plugins/inputRules.mjs +6 -6
- package/dist/plugins/keymap.mjs +4 -4
- package/dist/plugins/mention.mjs +4 -3
- package/dist/plugins/mentionController.mjs +2 -2
- package/dist/plugins/placeholder.mjs +3 -3
- package/dist/plugins/registry.mjs +2 -2
- package/dist/plugins/selectionHighlight.mjs +3 -3
- package/dist/plugins/slashCommands.mjs +3 -3
- package/dist/plugins/tableOverlay.mjs +4 -4
- package/dist/plugins/trailingNode.mjs +2 -2
- package/dist/schema/index.mjs +6 -6
- package/dist/serialization/index.mjs +3 -3
- package/dist/texteditor.classes.mjs +2 -2
- package/dist/texteditor.constants.mjs +2 -2
- package/dist/texteditor.props.mjs +2 -2
- package/dist/texteditor.refs.mjs +2 -2
- package/dist/texteditor.state.mjs +2 -2
- package/dist/ui/focus.mjs +2 -2
- package/dist/ui/index.mjs +7 -7
- package/dist/ui/keyboard.mjs +2 -2
- package/dist/ui/menu.mjs +2 -2
- package/dist/ui/positioning.mjs +3 -3
- package/dist/ui/scroll.mjs +2 -2
- package/dist/utils/index.mjs +4 -4
- package/package.json +3 -3
- package/dist/chunk-22B454VC.mjs.map +0 -1
- package/dist/chunk-3RKMABZR.mjs.map +0 -1
- package/dist/chunk-6GY64GPU.mjs.map +0 -1
- package/dist/chunk-6YDCG63C.mjs.map +0 -1
- package/dist/chunk-6ZN5XRH2.mjs.map +0 -1
- package/dist/chunk-72T5I4O4.mjs.map +0 -1
- package/dist/chunk-7QCHSEN2.mjs.map +0 -1
- package/dist/chunk-AJOKUIQD.mjs.map +0 -1
- package/dist/chunk-AUTGNC2Q.mjs.map +0 -1
- package/dist/chunk-CRAB2MFE.mjs.map +0 -1
- package/dist/chunk-DXPG5XMX.mjs.map +0 -1
- package/dist/chunk-E2KXUP3F.mjs.map +0 -1
- package/dist/chunk-EA2YI7LA.mjs.map +0 -1
- package/dist/chunk-F7BJWPT6.mjs.map +0 -1
- package/dist/chunk-FFCQLWS5.mjs.map +0 -1
- package/dist/chunk-GG56GLXC.mjs.map +0 -1
- package/dist/chunk-GGPBV4BM.mjs.map +0 -1
- package/dist/chunk-H3RFOYCT.mjs.map +0 -1
- package/dist/chunk-IUQKSDKG.mjs.map +0 -1
- package/dist/chunk-KNZAMA6H.mjs.map +0 -1
- package/dist/chunk-MNKMKFLQ.mjs.map +0 -1
- package/dist/chunk-MWT5PK3Z.mjs.map +0 -1
- package/dist/chunk-NWRVBNBW.mjs.map +0 -1
- package/dist/chunk-OGEMGWLR.mjs.map +0 -1
- package/dist/chunk-PRFYR67X.mjs.map +0 -1
- package/dist/chunk-PT2O4RV7.mjs.map +0 -1
- package/dist/chunk-PT5V6UYE.mjs.map +0 -1
- package/dist/chunk-RH45QRSV.mjs.map +0 -1
- package/dist/chunk-RQ2HHNI6.mjs.map +0 -1
- package/dist/chunk-TB7ZSSR2.mjs.map +0 -1
- package/dist/chunk-TBQVZVKA.mjs.map +0 -1
- package/dist/chunk-VWGQMUPD.mjs.map +0 -1
- package/dist/chunk-XKY2VYPW.mjs.map +0 -1
- package/dist/chunk-XSVIGDQR.mjs.map +0 -1
- package/dist/chunk-YHMP6AN3.mjs.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { createMarkdownInputRules } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-
|
|
5
|
-
import '../chunk-
|
|
6
|
-
import '../chunk-
|
|
1
|
+
export { createMarkdownInputRules } from '../chunks/chunk-LHZDU6AA.mjs';
|
|
2
|
+
import '../chunks/chunk-YXOJODMQ.mjs';
|
|
3
|
+
import '../chunks/chunk-UHENKXGQ.mjs';
|
|
4
|
+
import '../chunks/chunk-4C4R23A3.mjs';
|
|
5
|
+
import '../chunks/chunk-MMU3VGMT.mjs';
|
|
6
|
+
import '../chunks/chunk-FLGC65SR.mjs';
|
|
7
7
|
//# sourceMappingURL=inputRules.mjs.map
|
|
8
8
|
//# sourceMappingURL=inputRules.mjs.map
|
package/dist/plugins/keymap.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { baseKeymap, blockSelectAll, createEditorKeymap, keymap } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-
|
|
1
|
+
export { baseKeymap, blockSelectAll, createEditorKeymap, keymap } from '../chunks/chunk-QZUFYVD5.mjs';
|
|
2
|
+
import '../chunks/chunk-UHENKXGQ.mjs';
|
|
3
|
+
import '../chunks/chunk-4C4R23A3.mjs';
|
|
4
|
+
import '../chunks/chunk-FLGC65SR.mjs';
|
|
5
5
|
//# sourceMappingURL=keymap.mjs.map
|
|
6
6
|
//# sourceMappingURL=keymap.mjs.map
|
package/dist/plugins/mention.mjs
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
export { createMentionPlugin, insertMention, mentionPluginKey } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
1
|
+
export { createMentionPlugin, insertMention, mentionPluginKey } from '../chunks/chunk-4BI7WWVV.mjs';
|
|
2
|
+
import '../chunks/chunk-MMU3VGMT.mjs';
|
|
3
|
+
import '../chunks/chunk-25Y5HLDY.mjs';
|
|
4
|
+
import '../chunks/chunk-FLGC65SR.mjs';
|
|
4
5
|
//# sourceMappingURL=mention.mjs.map
|
|
5
6
|
//# sourceMappingURL=mention.mjs.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { createMentionController } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { createMentionController } from '../chunks/chunk-UN74246B.mjs';
|
|
2
|
+
import '../chunks/chunk-FLGC65SR.mjs';
|
|
3
3
|
//# sourceMappingURL=mentionController.mjs.map
|
|
4
4
|
//# sourceMappingURL=mentionController.mjs.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { createPlaceholderPlugin } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
1
|
+
export { createPlaceholderPlugin } from '../chunks/chunk-F2THMQFM.mjs';
|
|
2
|
+
import '../chunks/chunk-25Y5HLDY.mjs';
|
|
3
|
+
import '../chunks/chunk-FLGC65SR.mjs';
|
|
4
4
|
//# sourceMappingURL=placeholder.mjs.map
|
|
5
5
|
//# sourceMappingURL=placeholder.mjs.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { addProseMirrorPlugin, removeProseMirrorPlugin } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { addProseMirrorPlugin, removeProseMirrorPlugin } from '../chunks/chunk-MSPB65AH.mjs';
|
|
2
|
+
import '../chunks/chunk-FLGC65SR.mjs';
|
|
3
3
|
//# sourceMappingURL=registry.mjs.map
|
|
4
4
|
//# sourceMappingURL=registry.mjs.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { createSelectionHighlightPlugin, preserveSelection, selectionHighlightKey } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
1
|
+
export { createSelectionHighlightPlugin, preserveSelection, selectionHighlightKey } from '../chunks/chunk-XO4UUELZ.mjs';
|
|
2
|
+
import '../chunks/chunk-25Y5HLDY.mjs';
|
|
3
|
+
import '../chunks/chunk-FLGC65SR.mjs';
|
|
4
4
|
//# sourceMappingURL=selectionHighlight.mjs.map
|
|
5
5
|
//# sourceMappingURL=selectionHighlight.mjs.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { createSlashPlugin, executeSlashCommand, executeSlashCommandInline, slashPluginKey } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
1
|
+
export { createSlashPlugin, executeSlashCommand, executeSlashCommandInline, slashPluginKey } from '../chunks/chunk-NZCWIEXE.mjs';
|
|
2
|
+
import '../chunks/chunk-25Y5HLDY.mjs';
|
|
3
|
+
import '../chunks/chunk-FLGC65SR.mjs';
|
|
4
4
|
//# sourceMappingURL=slashCommands.mjs.map
|
|
5
5
|
//# sourceMappingURL=slashCommands.mjs.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { createTableOverlayPlugin } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-
|
|
1
|
+
export { createTableOverlayPlugin } from '../chunks/chunk-KA3KNPLZ.mjs';
|
|
2
|
+
import '../chunks/chunk-RE46J3VH.mjs';
|
|
3
|
+
import '../chunks/chunk-25Y5HLDY.mjs';
|
|
4
|
+
import '../chunks/chunk-FLGC65SR.mjs';
|
|
5
5
|
//# sourceMappingURL=tableOverlay.mjs.map
|
|
6
6
|
//# sourceMappingURL=tableOverlay.mjs.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { createTrailingNodePlugin } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { createTrailingNodePlugin } from '../chunks/chunk-XOMJOYJG.mjs';
|
|
2
|
+
import '../chunks/chunk-FLGC65SR.mjs';
|
|
3
3
|
//# sourceMappingURL=trailingNode.mjs.map
|
|
4
4
|
//# sourceMappingURL=trailingNode.mjs.map
|
package/dist/schema/index.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { baseMarks, baseNodes, createEditorSchema, extendNodeSpec, getEditorSchema, marks_exports as marks } from '../chunk-
|
|
2
|
-
export { nodes_exports as nodes } from '../chunk-
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-
|
|
5
|
-
import '../chunk-
|
|
6
|
-
import '../chunk-
|
|
1
|
+
export { baseMarks, baseNodes, createEditorSchema, extendNodeSpec, getEditorSchema, marks_exports as marks } from '../chunks/chunk-QMEKZ64Z.mjs';
|
|
2
|
+
export { nodes_exports as nodes } from '../chunks/chunk-ZSXWDZMQ.mjs';
|
|
3
|
+
import '../chunks/chunk-C2TRJCIH.mjs';
|
|
4
|
+
import '../chunks/chunk-MMU3VGMT.mjs';
|
|
5
|
+
import '../chunks/chunk-25Y5HLDY.mjs';
|
|
6
|
+
import '../chunks/chunk-FLGC65SR.mjs';
|
|
7
7
|
//# sourceMappingURL=index.mjs.map
|
|
8
8
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { htmlToDoc } from '../chunk-
|
|
2
|
-
export { docToHtml } from '../chunk-
|
|
3
|
-
import '../chunk-
|
|
1
|
+
export { htmlToDoc } from '../chunks/chunk-LYB4TGKX.mjs';
|
|
2
|
+
export { docToHtml } from '../chunks/chunk-UORFAHNO.mjs';
|
|
3
|
+
import '../chunks/chunk-FLGC65SR.mjs';
|
|
4
4
|
//# sourceMappingURL=index.mjs.map
|
|
5
5
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { textEditorClasses } from './chunk-
|
|
2
|
-
import './chunk-
|
|
1
|
+
export { textEditorClasses } from './chunks/chunk-25Y5HLDY.mjs';
|
|
2
|
+
import './chunks/chunk-FLGC65SR.mjs';
|
|
3
3
|
//# sourceMappingURL=texteditor.classes.mjs.map
|
|
4
4
|
//# sourceMappingURL=texteditor.classes.mjs.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { TEXT_EDITOR_ALLOWED_TYPES, TEXT_EDITOR_FILE_SIZE } from './chunk-
|
|
2
|
-
import './chunk-
|
|
1
|
+
export { TEXT_EDITOR_ALLOWED_TYPES, TEXT_EDITOR_FILE_SIZE } from './chunks/chunk-DAVC2Z22.mjs';
|
|
2
|
+
import './chunks/chunk-FLGC65SR.mjs';
|
|
3
3
|
//# sourceMappingURL=texteditor.constants.mjs.map
|
|
4
4
|
//# sourceMappingURL=texteditor.constants.mjs.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { defaultTextEditorProps } from './chunk-
|
|
2
|
-
import './chunk-
|
|
1
|
+
export { defaultTextEditorProps } from './chunks/chunk-C6CEVLOL.mjs';
|
|
2
|
+
import './chunks/chunk-FLGC65SR.mjs';
|
|
3
3
|
//# sourceMappingURL=texteditor.props.mjs.map
|
|
4
4
|
//# sourceMappingURL=texteditor.props.mjs.map
|
package/dist/texteditor.refs.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { defaultTextEditorRefs } from './chunk-
|
|
2
|
-
import './chunk-
|
|
1
|
+
export { defaultTextEditorRefs } from './chunks/chunk-VXO6D7N5.mjs';
|
|
2
|
+
import './chunks/chunk-FLGC65SR.mjs';
|
|
3
3
|
//# sourceMappingURL=texteditor.refs.mjs.map
|
|
4
4
|
//# sourceMappingURL=texteditor.refs.mjs.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { defaultTextEditorState } from './chunk-
|
|
2
|
-
import './chunk-
|
|
1
|
+
export { defaultTextEditorState } from './chunks/chunk-4NWX3EPS.mjs';
|
|
2
|
+
import './chunks/chunk-FLGC65SR.mjs';
|
|
3
3
|
//# sourceMappingURL=texteditor.state.mjs.map
|
|
4
4
|
//# sourceMappingURL=texteditor.state.mjs.map
|
package/dist/ui/focus.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { isClickOutside, isMouseLeavingBlockArea, setRovingTabindex } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { isClickOutside, isMouseLeavingBlockArea, setRovingTabindex } from '../chunks/chunk-Z7KBTB2P.mjs';
|
|
2
|
+
import '../chunks/chunk-FLGC65SR.mjs';
|
|
3
3
|
//# sourceMappingURL=focus.mjs.map
|
|
4
4
|
//# sourceMappingURL=focus.mjs.map
|
package/dist/ui/index.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export { isClickOutside, isMouseLeavingBlockArea, setRovingTabindex } from '../chunk-
|
|
2
|
-
export { computeEdgeScrollSpeed } from '../chunk-
|
|
3
|
-
export { computePopoverPosition, computeSubmenuPosition } from '../chunk-
|
|
4
|
-
export { assignActiveDescendantId, filterMenuItemsByText, getVisibleMenuItems } from '../chunk-
|
|
5
|
-
export { computeArrowNavIndex, computeFocusTrapTarget } from '../chunk-
|
|
6
|
-
export { clampToViewport } from '../chunk-
|
|
7
|
-
import '../chunk-
|
|
1
|
+
export { isClickOutside, isMouseLeavingBlockArea, setRovingTabindex } from '../chunks/chunk-Z7KBTB2P.mjs';
|
|
2
|
+
export { computeEdgeScrollSpeed } from '../chunks/chunk-P4N6CW2J.mjs';
|
|
3
|
+
export { computePopoverPosition, computeSubmenuPosition } from '../chunks/chunk-PRW2CBOO.mjs';
|
|
4
|
+
export { assignActiveDescendantId, filterMenuItemsByText, getVisibleMenuItems } from '../chunks/chunk-Q7MBG5CT.mjs';
|
|
5
|
+
export { computeArrowNavIndex, computeFocusTrapTarget } from '../chunks/chunk-ZUZABDZC.mjs';
|
|
6
|
+
export { clampToViewport } from '../chunks/chunk-RE46J3VH.mjs';
|
|
7
|
+
import '../chunks/chunk-FLGC65SR.mjs';
|
|
8
8
|
//# sourceMappingURL=index.mjs.map
|
|
9
9
|
//# sourceMappingURL=index.mjs.map
|
package/dist/ui/keyboard.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { computeArrowNavIndex, computeFocusTrapTarget } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { computeArrowNavIndex, computeFocusTrapTarget } from '../chunks/chunk-ZUZABDZC.mjs';
|
|
2
|
+
import '../chunks/chunk-FLGC65SR.mjs';
|
|
3
3
|
//# sourceMappingURL=keyboard.mjs.map
|
|
4
4
|
//# sourceMappingURL=keyboard.mjs.map
|
package/dist/ui/menu.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { assignActiveDescendantId, filterMenuItemsByText, getVisibleMenuItems } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { assignActiveDescendantId, filterMenuItemsByText, getVisibleMenuItems } from '../chunks/chunk-Q7MBG5CT.mjs';
|
|
2
|
+
import '../chunks/chunk-FLGC65SR.mjs';
|
|
3
3
|
//# sourceMappingURL=menu.mjs.map
|
|
4
4
|
//# sourceMappingURL=menu.mjs.map
|
package/dist/ui/positioning.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { computePopoverPosition, computeSubmenuPosition } from '../chunk-
|
|
2
|
-
export { clampToViewport } from '../chunk-
|
|
3
|
-
import '../chunk-
|
|
1
|
+
export { computePopoverPosition, computeSubmenuPosition } from '../chunks/chunk-PRW2CBOO.mjs';
|
|
2
|
+
export { clampToViewport } from '../chunks/chunk-RE46J3VH.mjs';
|
|
3
|
+
import '../chunks/chunk-FLGC65SR.mjs';
|
|
4
4
|
//# sourceMappingURL=positioning.mjs.map
|
|
5
5
|
//# sourceMappingURL=positioning.mjs.map
|
package/dist/ui/scroll.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { computeEdgeScrollSpeed } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { computeEdgeScrollSpeed } from '../chunks/chunk-P4N6CW2J.mjs';
|
|
2
|
+
import '../chunks/chunk-FLGC65SR.mjs';
|
|
3
3
|
//# sourceMappingURL=scroll.mjs.map
|
|
4
4
|
//# sourceMappingURL=scroll.mjs.map
|
package/dist/utils/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { clampToViewport, computeBlockControlsStyle, computeDropIndicatorStyle, computeDropTargetIndex, inlineStartAbsolute, inlineStartFixed, setInlineStart } from '../chunk-
|
|
2
|
-
export { sanitizeCssValue } from '../chunk-
|
|
3
|
-
export { sanitizeImageUrl, sanitizeUrl } from '../chunk-
|
|
4
|
-
import '../chunk-
|
|
1
|
+
export { clampToViewport, computeBlockControlsStyle, computeDropIndicatorStyle, computeDropTargetIndex, inlineStartAbsolute, inlineStartFixed, setInlineStart } from '../chunks/chunk-RE46J3VH.mjs';
|
|
2
|
+
export { sanitizeCssValue } from '../chunks/chunk-C2TRJCIH.mjs';
|
|
3
|
+
export { sanitizeImageUrl, sanitizeUrl } from '../chunks/chunk-MMU3VGMT.mjs';
|
|
4
|
+
import '../chunks/chunk-FLGC65SR.mjs';
|
|
5
5
|
|
|
6
6
|
// src/utils/dom.ts
|
|
7
7
|
function generateEditorId() {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@primeui/texteditor-core",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "1.0.0-beta.1",
|
|
4
4
|
"author": "PrimeTek Informatics",
|
|
5
5
|
"description": "TextEditor API for PrimeUI.",
|
|
6
6
|
"keywords": [
|
|
@@ -56,8 +56,8 @@
|
|
|
56
56
|
"prosemirror-tables": "^1.8.5",
|
|
57
57
|
"prosemirror-transform": "^1.12.0",
|
|
58
58
|
"prosemirror-view": "^1.41.7",
|
|
59
|
-
"@primeui/core": "0.0
|
|
60
|
-
"@primeui/texteditor-types": "0.0
|
|
59
|
+
"@primeui/core": "1.0.0-beta.1",
|
|
60
|
+
"@primeui/texteditor-types": "1.0.0-beta.1"
|
|
61
61
|
},
|
|
62
62
|
"scripts": {
|
|
63
63
|
"build": "cross-env NODE_ENV=production INPUT_DIR=src/ OUTPUT_DIR=dist/ pnpm run build:package",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/position.ts"],"names":[],"mappings":"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","file":"chunk-22B454VC.mjs","sourcesContent":["/**\n * RTL-aware positioning utilities.\n *\n * getBoundingClientRect() always returns physical (left/right) coordinates.\n * In LTR we set `left`; in RTL we set `right` so the element anchors to the\n * correct edge.\n */\n\nfunction isRtl(): boolean {\n return document.documentElement.dir === 'rtl' || getComputedStyle(document.documentElement).direction === 'rtl';\n}\n\n/**\n * Returns an inline-start style for a **viewport-positioned** (fixed) element.\n * In LTR → { left: `${value}px` }\n * In RTL → { right: `${viewportWidth - value - elWidth}px` }\n */\nexport function inlineStartFixed(left: number, elWidth: number): Record<string, string> {\n if (!isRtl()) {\n return { left: `${left}px` };\n }\n\n return { right: `${window.innerWidth - left - elWidth}px` };\n}\n\n/**\n * Returns an inline-start style for an **absolutely-positioned** element\n * inside a container.\n *\n * @param offsetLeft Physical left offset relative to the container (e.g. elRect.left - containerRect.left)\n * @param elWidth Width of the positioned element (use 0 for point positioning like triggers)\n * @param containerWidth Width of the containing element\n */\nexport function inlineStartAbsolute(offsetLeft: number, elWidth: number, containerWidth: number): Record<string, string> {\n if (!isRtl()) {\n return { left: `${offsetLeft}px` };\n }\n\n return { right: `${containerWidth - offsetLeft - elWidth}px` };\n}\n\n/**\n * Sets inline-start on an HTMLElement's style directly (for imperative DOM code like tableOverlay).\n * Clears the opposite property to avoid conflicts.\n */\nexport function setInlineStart(el: HTMLElement, offsetLeft: number, containerWidth: number, elWidth: number = 0): void {\n if (!isRtl()) {\n el.style.left = `${offsetLeft}px`;\n el.style.right = '';\n } else {\n el.style.right = `${containerWidth - offsetLeft - elWidth}px`;\n el.style.left = '';\n }\n}\n\n/**\n * Computes absolute-positioned style for block controls anchored to a block element\n * within the editor container. Handles RTL by anchoring to inline-end (right) edge.\n */\nexport function computeBlockControlsStyle(blockEl: HTMLElement | null, editorEl: HTMLElement | null): Record<string, string> {\n if (!blockEl || !editorEl) return {};\n\n const blockRect = blockEl.getBoundingClientRect();\n const editorRect = editorEl.getBoundingClientRect();\n const rtl = isRtl();\n\n return {\n position: 'absolute',\n top: `${blockRect.top - editorRect.top + editorEl.scrollTop}px`,\n ...(rtl ? { right: `${editorRect.right - blockRect.right}px` } : { left: `${blockRect.left - editorRect.left}px` })\n };\n}\n\n/**\n * Computes absolute-positioned style for the block drop indicator line.\n * Position is between blocks (or after the last block when targetIndex >= block count).\n */\nexport function computeDropIndicatorStyle(editorEl: HTMLElement | null, dropTargetIndex: number, blockClassName: string): Record<string, string> {\n if (dropTargetIndex < 0 || !editorEl) return {};\n\n const blocks = editorEl.querySelectorAll(`.${blockClassName}`);\n const editorRect = editorEl.getBoundingClientRect();\n // The indicator is absolute-positioned inside editorEl, which is also the\n // scroll container, so its top must be in scrolled content coordinates —\n // add scrollTop, otherwise it drifts off-screen once the content is scrolled.\n const scrollTop = editorEl.scrollTop;\n let top: number;\n\n if (dropTargetIndex < blocks.length) {\n const blockRect = blocks[dropTargetIndex].getBoundingClientRect();\n\n top = blockRect.top - editorRect.top + scrollTop;\n } else {\n const lastBlock = blocks[blocks.length - 1];\n const blockRect = lastBlock.getBoundingClientRect();\n\n top = blockRect.bottom - editorRect.top + scrollTop;\n }\n\n return { top: `${top}px` };\n}\n\n/**\n * Computes the target drop index for block drag-and-drop based on mouse position.\n * Returns -1 if the target would be at the dragged block's current position or right after it\n * (no-op drop), otherwise returns the index where the block should be inserted.\n */\nexport function computeDropTargetIndex(event: DragEvent, editorEl: HTMLElement, draggedBlockIndex: number, blockClassName: string): number {\n const blocks = editorEl.querySelectorAll(`.${blockClassName}`);\n const mouseY = event.clientY;\n let targetIndex = blocks.length;\n\n for (let i = 0; i < blocks.length; i++) {\n const rect = blocks[i].getBoundingClientRect();\n const midY = rect.top + rect.height / 2;\n\n if (mouseY < midY) {\n targetIndex = i;\n break;\n }\n }\n\n // No-op drop positions\n if (targetIndex === draggedBlockIndex || targetIndex === draggedBlockIndex + 1) {\n return -1;\n }\n\n return targetIndex;\n}\n\n/**\n * Clamps a viewport-relative left value within margins, accounting for element width.\n * Returns the clamped physical left value (caller then passes to inlineStartFixed).\n */\nexport function clampToViewport(left: number, elWidth: number, margin: number): number {\n const viewportWidth = window.innerWidth;\n\n if (left < margin) {\n return margin;\n }\n\n if (left + elWidth > viewportWidth - margin) {\n return viewportWidth - elWidth - margin;\n }\n\n return left;\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/plugins/tableOverlay.ts"],"names":[],"mappings":"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","file":"chunk-3RKMABZR.mjs","sourcesContent":["import { Plugin, PluginKey } from 'prosemirror-state';\nimport type { EditorView } from 'prosemirror-view';\nimport type { TableActiveState, TableOverlayRect } from '@primeui/texteditor-types';\nimport { CellSelection } from 'prosemirror-tables';\nimport { textEditorClasses as classes } from '../texteditor.classes';\nimport { setInlineStart } from '../utils/position';\n\nconst tableOverlayKey = new PluginKey('tableOverlay');\n\ninterface TableOverlayCallbacks {\n onActiveStateChange: (state: TableActiveState | null) => void;\n onOverlayRectChange: (rect: TableOverlayRect | null) => void;\n onColumnTriggerClick: (colIndex: number, event: MouseEvent) => void;\n onRowTriggerClick: (rowIndex: number, event: MouseEvent) => void;\n onCellTriggerClick: (event: MouseEvent) => void;\n onAddColumn: () => void;\n onAddRow: () => void;\n}\n\nfunction getTableActiveState(view: EditorView): TableActiveState | null {\n const { $from } = view.state.selection;\n\n for (let depth = $from.depth; depth > 0; depth--) {\n const node = $from.node(depth);\n\n if (node.type.name === 'table_cell' || node.type.name === 'table_header') {\n for (let tableDepth = depth - 1; tableDepth > 0; tableDepth--) {\n if ($from.node(tableDepth).type.name === 'table') {\n const tableNode = $from.node(tableDepth);\n let tableDOM = view.nodeDOM($from.before(tableDepth)) as HTMLElement | null;\n\n if (!tableDOM) return null;\n\n if (tableDOM.tagName !== 'TABLE') {\n tableDOM = tableDOM.querySelector('table');\n }\n\n if (!tableDOM) return null;\n\n const cellDOM = view.nodeDOM($from.before(depth)) as HTMLTableCellElement | null;\n\n if (!cellDOM) return null;\n\n const row = cellDOM.parentElement as HTMLTableRowElement;\n const colIndex = Array.from(row.cells).indexOf(cellDOM);\n const rowIndex = Array.from(tableDOM.querySelectorAll('tr')).indexOf(row);\n const rowCount = tableNode.childCount;\n const colCount = tableNode.firstChild?.childCount || 0;\n\n return { table: tableDOM as HTMLTableElement, colIndex, rowIndex, colCount, rowCount };\n }\n }\n }\n }\n\n return null;\n}\n\nfunction computeOverlayRect(activeState: TableActiveState): TableOverlayRect | null {\n const { table, colIndex, rowIndex } = activeState;\n const tableRect = table.getBoundingClientRect();\n const rows = table.querySelectorAll('tr');\n const currentRow = rows[rowIndex];\n\n if (!currentRow) return null;\n\n const currentCell = currentRow.cells[colIndex];\n\n if (!currentCell) return null;\n\n const cellRect = currentCell.getBoundingClientRect();\n\n const columnBorders: number[] = [];\n const firstRow = rows[0];\n\n if (firstRow) {\n let x = tableRect.left;\n\n for (let i = 0; i < firstRow.cells.length; i++) {\n x += firstRow.cells[i].getBoundingClientRect().width;\n columnBorders.push(x);\n }\n }\n\n return {\n tableRect,\n cellRect,\n isLastColumn: colIndex === activeState.colCount - 1,\n isLastRow: rowIndex === activeState.rowCount - 1,\n columnBorders\n };\n}\n\nfunction getTableWrapper(tableEl: HTMLElement): HTMLElement | null {\n const parent = tableEl.parentElement;\n\n return parent?.classList.contains('tableWrapper') ? parent : null;\n}\n\ntype TriggerElement = HTMLDivElement & { _teCleanup?: () => void };\n\nfunction createTrigger(className: string, onClick: (event: MouseEvent) => void): TriggerElement {\n const el = document.createElement('div') as TriggerElement;\n\n el.className = className;\n el.contentEditable = 'false';\n\n const handler = (event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n onClick(event);\n };\n\n el.addEventListener('mousedown', handler);\n el._teCleanup = () => el.removeEventListener('mousedown', handler);\n\n return el;\n}\n\nexport function createTableOverlayPlugin(callbacks: TableOverlayCallbacks) {\n let currentActiveState: TableActiveState | null = null;\n\n return new Plugin({\n key: tableOverlayKey,\n view() {\n // Selection outline\n let overlayEl: HTMLDivElement | null = null;\n let cellTriggerEl: HTMLDivElement | null = null;\n\n // Column/row triggers\n let colTriggerEl: HTMLDivElement | null = null;\n let rowTriggerEl: HTMLDivElement | null = null;\n\n // Add buttons\n let addColEl: HTMLDivElement | null = null;\n let addRowEl: HTMLDivElement | null = null;\n\n // ResizeObserver for live updates\n let resizeObserver: ResizeObserver | null = null;\n let observedTable: HTMLElement | null = null;\n let lastActiveState: TableActiveState | null = null;\n let isCellSelectionMode = false;\n\n let currentWrapper: HTMLElement | null = null;\n let rafId = 0;\n\n const removeAll = () => {\n [overlayEl, cellTriggerEl, colTriggerEl, rowTriggerEl, addColEl, addRowEl].forEach((el) => {\n (el as TriggerElement | null)?._teCleanup?.();\n });\n overlayEl?.remove();\n colTriggerEl?.remove();\n rowTriggerEl?.remove();\n addColEl?.remove();\n addRowEl?.remove();\n overlayEl = null;\n cellTriggerEl = null;\n colTriggerEl = null;\n rowTriggerEl = null;\n addColEl = null;\n addRowEl = null;\n currentWrapper = null;\n lastActiveState = null;\n\n if (resizeObserver && observedTable) {\n resizeObserver.unobserve(observedTable);\n observedTable = null;\n }\n };\n\n const ensureElements = (wrapper: HTMLElement) => {\n if (currentWrapper === wrapper && overlayEl) return;\n\n removeAll();\n currentWrapper = wrapper;\n\n // Selection outline with cell trigger (hidden until positioned)\n overlayEl = document.createElement('div');\n overlayEl.className = classes.tableSelectionOutline;\n overlayEl.style.visibility = 'hidden';\n\n cellTriggerEl = createTrigger(`${classes.tableTrigger} ${classes.tableTriggerCell}`, (event) => {\n callbacks.onCellTriggerClick(event);\n });\n overlayEl.appendChild(cellTriggerEl);\n wrapper.appendChild(overlayEl);\n\n // Column trigger\n colTriggerEl = createTrigger(`${classes.tableTrigger} ${classes.tableTriggerCol}`, (event) => {\n if (lastActiveState) callbacks.onColumnTriggerClick(lastActiveState.colIndex, event);\n });\n colTriggerEl.style.visibility = 'hidden';\n wrapper.appendChild(colTriggerEl);\n\n // Row trigger\n rowTriggerEl = createTrigger(`${classes.tableTrigger} ${classes.tableTriggerRow}`, (event) => {\n if (lastActiveState) callbacks.onRowTriggerClick(lastActiveState.rowIndex, event);\n });\n rowTriggerEl.style.visibility = 'hidden';\n wrapper.appendChild(rowTriggerEl);\n\n // Add column button\n addColEl = createTrigger(`${classes.tableAdd} ${classes.tableAddCol}`, () => {\n callbacks.onAddColumn();\n });\n addColEl.style.visibility = 'hidden';\n addColEl.innerHTML = '<svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\"><path d=\"M6 1v10M1 6h10\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/></svg>';\n wrapper.appendChild(addColEl);\n\n // Add row button\n addRowEl = createTrigger(`${classes.tableAdd} ${classes.tableAddRow}`, () => {\n callbacks.onAddRow();\n });\n addRowEl.style.visibility = 'hidden';\n addRowEl.innerHTML = '<svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\"><path d=\"M6 1v10M1 6h10\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"/></svg>';\n wrapper.appendChild(addRowEl);\n };\n\n const showElements = () => {\n if (overlayEl) overlayEl.style.visibility = '';\n if (colTriggerEl) colTriggerEl.style.visibility = '';\n if (rowTriggerEl) rowTriggerEl.style.visibility = '';\n if (addColEl) addColEl.style.visibility = '';\n if (addRowEl) addRowEl.style.visibility = '';\n };\n\n // Defer to the next frame so element rects are read AFTER the table's\n // layout settles (e.g. right after a column is added or the table is\n // resized); otherwise triggers/handles latch onto a stale width.\n const schedulePosition = () => {\n if (rafId) cancelAnimationFrame(rafId);\n\n rafId = requestAnimationFrame(() => {\n rafId = 0;\n positionElements();\n });\n };\n\n const positionElements = () => {\n if (!currentWrapper || !overlayEl) return;\n\n const wrapperRect = currentWrapper.getBoundingClientRect();\n const tableEl = currentWrapper.querySelector('table');\n\n if (!tableEl) return;\n\n const tableRect = tableEl.getBoundingClientRect();\n const w = wrapperRect.width;\n // Absolutely-positioned elements live in the wrapper's scrolled\n // content box; viewport rects don't include that scroll, so add it\n // back or the handles latch to the wrong place once scrolled.\n const sx = currentWrapper.scrollLeft;\n const sy = currentWrapper.scrollTop;\n\n // Skip positioning if table hasn't been laid out yet\n if (tableRect.width === 0 || tableRect.height === 0) return;\n\n if (isCellSelectionMode) {\n // Multi-cell: outline from .selectedCell rects\n const selectedCells = currentWrapper.querySelectorAll('.selectedCell');\n\n if (selectedCells.length > 0) {\n let minTop = Infinity;\n let minLeft = Infinity;\n let maxBottom = -Infinity;\n let maxRight = -Infinity;\n\n selectedCells.forEach((cell) => {\n const rect = cell.getBoundingClientRect();\n\n minTop = Math.min(minTop, rect.top);\n minLeft = Math.min(minLeft, rect.left);\n maxBottom = Math.max(maxBottom, rect.bottom);\n maxRight = Math.max(maxRight, rect.right);\n });\n\n const selWidth = maxRight - minLeft;\n\n overlayEl.style.top = `${minTop - wrapperRect.top + sy}px`;\n setInlineStart(overlayEl, minLeft - wrapperRect.left + sx, w, selWidth);\n overlayEl.style.width = `${selWidth}px`;\n overlayEl.style.height = `${maxBottom - minTop}px`;\n }\n } else if (lastActiveState) {\n // Single cell outline\n const rows = tableEl.querySelectorAll('tr');\n const row = rows[lastActiveState.rowIndex];\n\n if (row) {\n const cell = row.cells[lastActiveState.colIndex];\n\n if (cell) {\n const cellRect = cell.getBoundingClientRect();\n\n overlayEl.style.top = `${cellRect.top - wrapperRect.top + sy}px`;\n setInlineStart(overlayEl, cellRect.left - wrapperRect.left + sx, w, cellRect.width);\n overlayEl.style.width = `${cellRect.width}px`;\n overlayEl.style.height = `${cellRect.height}px`;\n }\n }\n }\n\n // Column trigger — top center of active cell's column\n if (colTriggerEl && lastActiveState) {\n const rows = tableEl.querySelectorAll('tr');\n const firstRow = rows[0];\n\n if (firstRow && firstRow.cells[lastActiveState.colIndex]) {\n const cellRect = firstRow.cells[lastActiveState.colIndex].getBoundingClientRect();\n\n colTriggerEl.style.top = `${cellRect.top - wrapperRect.top + sy}px`;\n setInlineStart(colTriggerEl, cellRect.left - wrapperRect.left + sx + cellRect.width / 2, w);\n colTriggerEl.style.display = '';\n } else {\n colTriggerEl.style.display = 'none';\n }\n }\n\n // Row trigger — inline-start center of active cell's row\n if (rowTriggerEl && lastActiveState) {\n const rows = tableEl.querySelectorAll('tr');\n const activeRow = rows[lastActiveState.rowIndex];\n\n if (activeRow && activeRow.cells[0]) {\n const cellRect = activeRow.cells[0].getBoundingClientRect();\n\n rowTriggerEl.style.top = `${cellRect.top - wrapperRect.top + sy + cellRect.height / 2}px`;\n setInlineStart(rowTriggerEl, cellRect.left - wrapperRect.left + sx, w);\n rowTriggerEl.style.display = '';\n } else {\n rowTriggerEl.style.display = 'none';\n }\n }\n\n // Add column button — inline-end edge of table, full height\n if (addColEl) {\n const rtl = document.documentElement.dir === 'rtl' || getComputedStyle(document.documentElement).direction === 'rtl';\n\n addColEl.style.top = `${tableRect.top - wrapperRect.top + sy}px`;\n\n if (rtl) {\n addColEl.style.right = `${wrapperRect.right - tableRect.left - sx + 4}px`;\n addColEl.style.left = '';\n } else {\n addColEl.style.left = `${tableRect.right - wrapperRect.left + sx + 4}px`;\n addColEl.style.right = '';\n }\n\n addColEl.style.height = `${tableRect.height}px`;\n }\n\n // Add row button — bottom edge of table, full width\n if (addRowEl) {\n addRowEl.style.top = `${tableRect.bottom - wrapperRect.top + sy + 4}px`;\n setInlineStart(addRowEl, tableRect.left - wrapperRect.left + sx, w, tableRect.width);\n addRowEl.style.width = `${tableRect.width}px`;\n }\n\n showElements();\n };\n\n const observeTable = (tableEl: HTMLElement) => {\n if (observedTable === tableEl) return;\n\n if (resizeObserver && observedTable) {\n resizeObserver.unobserve(observedTable);\n }\n\n if (!resizeObserver) {\n resizeObserver = new ResizeObserver(() => schedulePosition());\n }\n\n resizeObserver.observe(tableEl);\n observedTable = tableEl;\n };\n\n return {\n update(view) {\n const isCellSel = view.state.selection instanceof CellSelection;\n\n if (isCellSel) {\n isCellSelectionMode = true;\n\n // During CellSelection, keep elements but reposition\n if (currentWrapper) {\n positionElements();\n }\n\n if (currentActiveState) {\n currentActiveState = null;\n callbacks.onActiveStateChange(null);\n callbacks.onOverlayRectChange(null);\n }\n\n return;\n }\n\n isCellSelectionMode = false;\n\n const newState = getTableActiveState(view);\n\n if (newState) {\n currentActiveState = newState;\n callbacks.onActiveStateChange(newState);\n callbacks.onOverlayRectChange(computeOverlayRect(newState));\n\n const wrapper = getTableWrapper(newState.table);\n\n if (wrapper) {\n ensureElements(wrapper);\n lastActiveState = newState;\n positionElements();\n schedulePosition();\n observeTable(newState.table);\n } else {\n lastActiveState = newState;\n }\n } else {\n removeAll();\n\n if (currentActiveState) {\n currentActiveState = null;\n callbacks.onActiveStateChange(null);\n callbacks.onOverlayRectChange(null);\n }\n }\n },\n destroy() {\n if (rafId) cancelAnimationFrame(rafId);\n removeAll();\n resizeObserver?.disconnect();\n resizeObserver = null;\n currentActiveState = null;\n callbacks.onActiveStateChange(null);\n callbacks.onOverlayRectChange(null);\n }\n };\n }\n });\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/plugins/registry.ts"],"names":[],"mappings":";AAIO,SAAS,oBAAA,CAAqB,MAAkB,MAAA,EAA4B;AAC/E,EAAA,MAAM,OAAA,GAAU,KAAK,KAAA,CAAM,OAAA;AAE3B,EAAA,IAAI,CAAC,OAAA,CAAQ,QAAA,CAAS,MAAM,CAAA,EAAG;AAC3B,IAAA,IAAA,CAAK,WAAA,CAAY,IAAA,CAAK,KAAA,CAAM,WAAA,CAAY,EAAE,OAAA,EAAS,CAAC,GAAG,OAAA,EAAS,MAAM,CAAA,EAAG,CAAC,CAAA;AAAA,EAC9E;AAEA,EAAA,OAAO,MAAM,uBAAA,CAAwB,IAAA,EAAM,MAAM,CAAA;AACrD;AAEO,SAAS,uBAAA,CAAwB,MAAkB,MAAA,EAAsB;AAC5E,EAAA,MAAM,IAAA,GAAO,KAAK,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAC,CAAA,KAAM,MAAM,MAAM,CAAA;AAE1D,EAAA,IAAI,IAAA,CAAK,MAAA,KAAW,IAAA,CAAK,KAAA,CAAM,QAAQ,MAAA,EAAQ;AAC3C,IAAA,IAAA,CAAK,WAAA,CAAY,KAAK,KAAA,CAAM,WAAA,CAAY,EAAE,OAAA,EAAS,IAAA,EAAM,CAAC,CAAA;AAAA,EAC9D;AACJ","file":"chunk-6GY64GPU.mjs","sourcesContent":["import type { Plugin } from 'prosemirror-state';\nimport type { EditorView } from 'prosemirror-view';\n\n// Attaches a ProseMirror plugin to a live view (preserving doc/selection); returns a remover.\nexport function addProseMirrorPlugin(view: EditorView, plugin: Plugin): () => void {\n const current = view.state.plugins;\n\n if (!current.includes(plugin)) {\n view.updateState(view.state.reconfigure({ plugins: [...current, plugin] }));\n }\n\n return () => removeProseMirrorPlugin(view, plugin);\n}\n\nexport function removeProseMirrorPlugin(view: EditorView, plugin: Plugin): void {\n const next = view.state.plugins.filter((p) => p !== plugin);\n\n if (next.length !== view.state.plugins.length) {\n view.updateState(view.state.reconfigure({ plugins: next }));\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/formatting.ts","../src/commands/lists.ts","../src/commands/tableHelpers.ts","../src/commands/tables.ts","../src/commands/markRange.ts","../src/commands/content.ts","../src/commands/editor.ts","../src/commands/index.ts"],"names":["tr","CellSelection","TextSelection","addColumnAfter"],"mappings":"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","file":"chunk-6YDCG63C.mjs","sourcesContent":["import type { EditorView } from 'prosemirror-view';\nimport type { MarkType, Schema } from 'prosemirror-model';\nimport type { Transaction } from 'prosemirror-state';\nimport { toggleMark } from 'prosemirror-commands';\nimport { CellSelection } from 'prosemirror-tables';\nimport { getMarkAttrs } from '../state/selection';\nimport { DEFAULT_HIGHLIGHT_COLOR } from './constants';\n\nfunction toggleMarkCommand(view: EditorView, markType: MarkType) {\n toggleMark(markType)(view.state, view.dispatch);\n view.focus();\n}\n\n// Apply a textStyle attr over [from,to], preserving each node's other attrs.\nfunction applyStyleToRange(tr: Transaction, markType: MarkType, attr: string, value: string | null, from: number, to: number) {\n const ranges: { from: number; to: number; attrs: Record<string, unknown> }[] = [];\n\n tr.doc.nodesBetween(from, to, (node, pos) => {\n if (!node.isText) return;\n\n const existingMark = markType.isInSet(node.marks);\n const existingAttrs = existingMark ? { ...existingMark.attrs } : {};\n const mergedAttrs = { ...existingAttrs, [attr]: value || null };\n\n ranges.push({ from: Math.max(pos, from), to: Math.min(pos + node.nodeSize, to), attrs: mergedAttrs });\n });\n\n tr.removeMark(from, to, markType);\n\n for (const range of ranges) {\n if (Object.values(range.attrs).some((v) => v != null)) {\n tr.addMark(range.from, range.to, markType.create(range.attrs));\n }\n }\n\n // Fallback: empty cell/range but setting a value — apply directly.\n if (ranges.length === 0 && value) {\n tr.addMark(from, to, markType.create({ [attr]: value }));\n }\n}\n\nfunction applyTextStyle(view: EditorView, schema: Schema, attr: string, value: string | null) {\n const markType = schema.marks.textStyle;\n const { selection } = view.state;\n const { empty } = selection;\n\n if (empty) {\n // Apply to stored marks for next typed content\n const currentAttrs = getMarkAttrs(view.state, markType) || {};\n const newAttrs = { ...currentAttrs, [attr]: value || null };\n const hasValue = Object.values(newAttrs).some((v) => v != null);\n const tr = hasValue ? view.state.tr.addStoredMark(markType.create(newAttrs)) : view.state.tr.removeStoredMark(markType);\n\n view.dispatch(tr);\n view.focus();\n\n return;\n }\n\n const tr = view.state.tr;\n\n if (selection instanceof CellSelection) {\n // Apply to every selected cell, not just the flat anchor→head range.\n selection.forEachCell((cell, pos) => {\n applyStyleToRange(tr, markType, attr, value, pos + 1, pos + cell.nodeSize - 1);\n });\n } else {\n applyStyleToRange(tr, markType, attr, value, selection.from, selection.to);\n }\n\n view.dispatch(tr);\n view.focus();\n}\n\nfunction isHighlightActive(view: EditorView, schema: Schema): boolean {\n const attrs = getMarkAttrs(view.state, schema.marks.textStyle);\n\n return !!attrs?.backgroundColor;\n}\n\nexport function createFormattingCommands(view: EditorView, schema: Schema, options?: { highlightColor?: string | null }) {\n const highlightColor = options?.highlightColor || DEFAULT_HIGHLIGHT_COLOR;\n\n return {\n bold: () => toggleMarkCommand(view, schema.marks.bold),\n italic: () => toggleMarkCommand(view, schema.marks.italic),\n underline: () => toggleMarkCommand(view, schema.marks.underline),\n strikethrough: () => toggleMarkCommand(view, schema.marks.strikethrough),\n subscript: () => toggleMarkCommand(view, schema.marks.subscript),\n superscript: () => toggleMarkCommand(view, schema.marks.superscript),\n code: () => toggleMarkCommand(view, schema.marks.code),\n fontFamily: (family: string | null) => applyTextStyle(view, schema, 'fontFamily', family),\n fontSize: (size: string | null) => applyTextStyle(view, schema, 'fontSize', size),\n foregroundColor: (color: string | null) => applyTextStyle(view, schema, 'color', color),\n backgroundColor: (color: string | null) => applyTextStyle(view, schema, 'backgroundColor', color),\n highlight: () => applyTextStyle(view, schema, 'backgroundColor', isHighlightActive(view, schema) ? null : highlightColor)\n };\n}\n","import type { Fragment, Node, NodeType, Schema } from 'prosemirror-model';\nimport { TextSelection } from 'prosemirror-state';\nimport { liftListItem } from 'prosemirror-schema-list';\nimport type { EditorView } from 'prosemirror-view';\nimport { wrapInListNormalized } from './normalize';\n\nfunction currentListItemType(view: EditorView, schema: Schema): NodeType | null {\n const { $from } = view.state.selection;\n\n for (let depth = $from.depth; depth > 0; depth--) {\n const node = $from.node(depth);\n\n if (node.type === schema.nodes.list_item) return schema.nodes.list_item;\n if (node.type === schema.nodes.check_list_item) return schema.nodes.check_list_item;\n }\n\n return null;\n}\n\n/**\n * Find the list node around the cursor/selection.\n */\nfunction findList(view: EditorView, schema: Schema): { pos: number; node: Node; depth: number } | null {\n const { $from } = view.state.selection;\n const listTypes = [schema.nodes.bullet_list, schema.nodes.ordered_list, schema.nodes.check_list];\n\n // Walk up from cursor position\n for (let depth = $from.depth; depth > 0; depth--) {\n const node = $from.node(depth);\n\n if (listTypes.includes(node.type)) {\n return { pos: $from.before(depth), node, depth };\n }\n }\n\n // Selection at doc level (e.g. select all) — scan for first list in selection range\n const { from, to } = view.state.selection;\n let found: { pos: number; node: Node; depth: number } | null = null;\n\n view.state.doc.nodesBetween(from, to, (node, pos) => {\n if (found) return false;\n\n if (listTypes.includes(node.type)) {\n const $pos = view.state.doc.resolve(pos);\n\n found = { pos, node, depth: $pos.depth };\n\n return false;\n }\n\n return undefined;\n });\n\n return found;\n}\n\n/**\n * Recursively convert a node to the target list type: list items are re-typed\n * and any nested sub-list is converted too, so switching e.g. bullet→ordered\n * doesn't leave nested sub-lists in the old type.\n */\nfunction convertNode(node: Node, targetListType: NodeType, targetItemType: NodeType, schema: Schema): Node {\n const listTypes = [schema.nodes.bullet_list, schema.nodes.ordered_list, schema.nodes.check_list];\n const itemTypes = [schema.nodes.list_item, schema.nodes.check_list_item];\n\n if (listTypes.includes(node.type)) {\n const children: Node[] = [];\n\n node.content.forEach((child) => children.push(convertNode(child, targetListType, targetItemType, schema)));\n\n return targetListType.create(null, children);\n }\n\n if (itemTypes.includes(node.type)) {\n const inner: Node[] = [];\n\n node.content.forEach((child) => inner.push(convertNode(child, targetListType, targetItemType, schema)));\n const attrs = targetItemType === schema.nodes.check_list_item ? { checked: false } : null;\n\n return targetItemType.create(attrs, inner, node.marks);\n }\n\n return node;\n}\n\nfunction convertItems(content: Fragment, targetListType: NodeType, targetItemType: NodeType, schema: Schema): Node[] {\n const items: Node[] = [];\n\n content.forEach((child) => items.push(convertNode(child, targetListType, targetItemType, schema)));\n\n return items;\n}\n\nfunction findAllLists(view: EditorView, schema: Schema): { pos: number; node: Node; depth: number }[] {\n const { from, to } = view.state.selection;\n const listTypes = [schema.nodes.bullet_list, schema.nodes.ordered_list, schema.nodes.check_list];\n const results: { pos: number; node: Node; depth: number }[] = [];\n\n view.state.doc.nodesBetween(from, to, (node, pos) => {\n if (listTypes.includes(node.type)) {\n const $pos = view.state.doc.resolve(pos);\n\n results.push({ pos, node, depth: $pos.depth });\n\n return false;\n }\n\n return undefined;\n });\n\n return results;\n}\n\nfunction toggleList(view: EditorView, schema: Schema, targetListType: NodeType, targetItemType: NodeType) {\n const existing = findList(view, schema);\n\n if (existing && existing.node.type === targetListType) {\n // Already in this list type — unwrap\n const itemType = currentListItemType(view, schema) || targetItemType;\n\n liftListItem(itemType)(view.state, view.dispatch);\n view.focus();\n\n return;\n }\n\n if (existing) {\n // Convert all lists in the selection to the target type\n const allLists = findAllLists(view, schema);\n\n if (allLists.length > 0) {\n const tr = view.state.tr;\n const { anchor, head } = view.state.selection;\n\n for (let i = allLists.length - 1; i >= 0; i--) {\n const list = allLists[i];\n const newList = targetListType.create(null, convertItems(list.node.content, targetListType, targetItemType, schema));\n\n tr.replaceWith(list.pos, list.pos + list.node.nodeSize, newList);\n }\n\n // A type conversion replaces each list node with one of identical inner\n // structure/size, so absolute cursor positions are unchanged. Mapping through\n // the replace collapses interior positions to a list boundary (cursor would\n // jump to the first item), so restore the original positions directly.\n try {\n tr.setSelection(TextSelection.between(tr.doc.resolve(anchor), tr.doc.resolve(head)));\n } catch {\n /* keep mapped default if resolve fails */\n }\n\n view.dispatch(tr.scrollIntoView());\n view.focus();\n\n return;\n }\n }\n\n // Not in any list — wrap in a new list (normalizing non-paragraph blocks).\n wrapInListNormalized(view, schema, targetListType);\n view.focus();\n}\n\nexport function createListCommands(view: EditorView, schema: Schema) {\n return {\n bulletList: () => toggleList(view, schema, schema.nodes.bullet_list, schema.nodes.list_item),\n orderedList: () => toggleList(view, schema, schema.nodes.ordered_list, schema.nodes.list_item),\n checkList: () => toggleList(view, schema, schema.nodes.check_list, schema.nodes.check_list_item)\n };\n}\n","import type { EditorView } from 'prosemirror-view';\nimport type { Node as PMNode } from 'prosemirror-model';\nimport type { Transaction } from 'prosemirror-state';\nimport { addColumnAfter, CellSelection, TableMap } from 'prosemirror-tables';\n\n/**\n * Internal table helpers shared by the public table commands in `tables.ts`.\n * Split out to keep `tables.ts` focused on the public surface (insertTable,\n * select*, and the three command factories). None of these are part of the\n * package's public API.\n */\n\n/** Find the table node and start position from the current selection. */\nexport function findTable(view: EditorView) {\n const { $from } = view.state.selection;\n\n for (let depth = $from.depth; depth > 0; depth--) {\n if ($from.node(depth).type.name === 'table') {\n return { node: $from.node(depth), start: $from.before(depth) + 1 };\n }\n }\n\n return null;\n}\n\n/** Select an entire column by creating a CellSelection from the first to last cell. */\nexport function selectColumn(view: EditorView, colIndex: number) {\n const table = findTable(view);\n\n if (!table) return;\n\n const map = TableMap.get(table.node);\n\n if (colIndex >= map.width) return;\n\n const firstCellPos = table.start + map.map[colIndex];\n const lastCellPos = table.start + map.map[(map.height - 1) * map.width + colIndex];\n const $first = view.state.doc.resolve(firstCellPos);\n const $last = view.state.doc.resolve(lastCellPos);\n\n view.dispatch(view.state.tr.setSelection(CellSelection.create(view.state.doc, $first.pos, $last.pos)));\n}\n\n/** Select an entire row by creating a CellSelection from the first to last cell. */\nexport function selectRow(view: EditorView, rowIndex: number) {\n const table = findTable(view);\n\n if (!table) return;\n\n const map = TableMap.get(table.node);\n\n if (rowIndex >= map.height) return;\n\n const firstCellPos = table.start + map.map[rowIndex * map.width];\n const lastCellPos = table.start + map.map[rowIndex * map.width + (map.width - 1)];\n const $first = view.state.doc.resolve(firstCellPos);\n const $last = view.state.doc.resolve(lastCellPos);\n\n view.dispatch(view.state.tr.setSelection(CellSelection.create(view.state.doc, $first.pos, $last.pos)));\n}\n\n/** Move a column left or right by swapping cell content in each row. */\nexport function moveColumn(view: EditorView, colIndex: number, direction: -1 | 1) {\n const table = findTable(view);\n\n if (!table) return;\n\n const map = TableMap.get(table.node);\n const targetCol = colIndex + direction;\n\n if (targetCol < 0 || targetCol >= map.width) return;\n\n const tr = view.state.tr;\n\n // Process rows bottom-to-top to avoid position shifting\n for (let row = map.height - 1; row >= 0; row--) {\n const fromCellPos = table.start + map.map[row * map.width + colIndex];\n const toCellPos = table.start + map.map[row * map.width + targetCol];\n const fromCell = view.state.doc.nodeAt(fromCellPos);\n const toCell = view.state.doc.nodeAt(toCellPos);\n\n if (!fromCell || !toCell) return;\n if ((fromCell.attrs.colspan ?? 1) > 1 || (toCell.attrs.colspan ?? 1) > 1 || (fromCell.attrs.rowspan ?? 1) > 1 || (toCell.attrs.rowspan ?? 1) > 1) return;\n\n // Swap by replacing both cells — do the later position first to avoid mapping issues\n const [firstPos, firstCell, secondPos, secondCell] = fromCellPos < toCellPos ? [fromCellPos, fromCell, toCellPos, toCell] : [toCellPos, toCell, fromCellPos, fromCell];\n\n tr.replaceWith(tr.mapping.map(secondPos), tr.mapping.map(secondPos + secondCell.nodeSize), firstCell.copy(firstCell.content));\n tr.replaceWith(tr.mapping.map(firstPos), tr.mapping.map(firstPos + firstCell.nodeSize), secondCell.copy(secondCell.content));\n }\n\n if (tr.docChanged) {\n view.dispatch(tr);\n view.focus();\n }\n}\n\n/** Move a row up or down by swapping row nodes. */\nexport function moveRow(view: EditorView, rowIndex: number, direction: -1 | 1) {\n const table = findTable(view);\n\n if (!table) return;\n\n const targetRow = rowIndex + direction;\n\n if (targetRow < 0 || targetRow >= table.node.childCount) return;\n\n const fromRow = table.node.child(rowIndex);\n const toRow = table.node.child(targetRow);\n\n // Merged cells make the two rows structurally different — refuse to swap.\n if (fromRow.childCount !== toRow.childCount) return;\n\n for (let col = 0; col < fromRow.childCount; col++) {\n const a = fromRow.child(col);\n const b = toRow.child(col);\n\n if ((a.attrs.rowspan ?? 1) > 1 || (b.attrs.rowspan ?? 1) > 1 || (a.attrs.colspan ?? 1) > 1 || (b.attrs.colspan ?? 1) > 1) return;\n }\n\n let fromRowPos = table.start;\n\n for (let i = 0; i < rowIndex; i++) {\n fromRowPos += table.node.child(i).nodeSize;\n }\n\n let toRowPos = table.start;\n\n for (let i = 0; i < targetRow; i++) {\n toRowPos += table.node.child(i).nodeSize;\n }\n\n const tr = view.state.tr;\n\n // Swap: replace the later row first, then the earlier one\n const [firstPos, firstRow, secondPos, secondRow] = fromRowPos < toRowPos ? [fromRowPos, fromRow, toRowPos, toRow] : [toRowPos, toRow, fromRowPos, fromRow];\n\n tr.replaceWith(secondPos, secondPos + secondRow.nodeSize, firstRow.copy(firstRow.content));\n tr.replaceWith(firstPos, firstPos + firstRow.nodeSize, secondRow.copy(secondRow.content));\n\n if (tr.docChanged) {\n view.dispatch(tr);\n view.focus();\n }\n}\n\n/** Set text-align on all paragraph/heading nodes within a cell at the given position. */\nfunction alignCell(tr: Transaction, cellPos: number, doc: PMNode, alignment: string) {\n const cell = doc.nodeAt(cellPos);\n\n if (!cell) return;\n\n cell.forEach((child, offset) => {\n if (child.type.name === 'paragraph' || child.type.name === 'heading') {\n const pos = cellPos + 1 + offset;\n\n tr.setNodeMarkup(tr.mapping.map(pos), null, { ...child.attrs, textAlign: alignment === 'left' ? null : alignment });\n }\n });\n}\n\n/** Set text-align on all cells in a column. */\nexport function alignColumn(view: EditorView, colIndex: number, alignment: string) {\n const table = findTable(view);\n\n if (!table) return;\n\n const map = TableMap.get(table.node);\n const tr = view.state.tr;\n\n for (let row = 0; row < map.height; row++) {\n const cellPos = table.start + map.map[row * map.width + colIndex];\n\n alignCell(tr, cellPos, view.state.doc, alignment);\n }\n\n if (tr.docChanged) {\n view.dispatch(tr);\n view.focus();\n }\n}\n\n/** Set text-align on all cells in a row. */\nexport function alignRow(view: EditorView, rowIndex: number, alignment: string) {\n const table = findTable(view);\n\n if (!table) return;\n\n const map = TableMap.get(table.node);\n const tr = view.state.tr;\n\n for (let col = 0; col < map.width; col++) {\n const cellPos = table.start + map.map[rowIndex * map.width + col];\n\n alignCell(tr, cellPos, view.state.doc, alignment);\n }\n\n if (tr.docChanged) {\n view.dispatch(tr);\n view.focus();\n }\n}\n\n/** Set text-align on the current cell (the one containing the cursor). */\nexport function alignCurrentCell(view: EditorView, alignment: string) {\n const { $from } = view.state.selection;\n\n for (let depth = $from.depth; depth > 0; depth--) {\n const node = $from.node(depth);\n\n if (node.type.name === 'table_cell' || node.type.name === 'table_header') {\n const cellPos = $from.before(depth);\n const tr = view.state.tr;\n\n alignCell(tr, cellPos, view.state.doc, alignment);\n\n if (tr.docChanged) {\n view.dispatch(tr);\n view.focus();\n }\n\n return;\n }\n }\n}\n\n/** Apply background color to a cell by setting its backgroundColor attr. */\nfunction setCellBackgroundColor(tr: Transaction, cellPos: number, color: string | null) {\n const cell = tr.doc.nodeAt(tr.mapping.map(cellPos));\n\n if (!cell) return;\n\n tr.setNodeMarkup(tr.mapping.map(cellPos), null, { ...cell.attrs, backgroundColor: color });\n}\n\n/** Apply foreground color to all text in a cell using the textStyle mark. */\nfunction setCellForegroundColor(view: EditorView, cellPos: number, color: string) {\n const cell = view.state.doc.nodeAt(cellPos);\n\n if (!cell) return;\n\n const from = cellPos + 1;\n const to = cellPos + cell.nodeSize - 1;\n const textStyleType = view.state.schema.marks.textStyle;\n\n if (!textStyleType) return;\n\n const tr = view.state.tr;\n\n if (color) {\n tr.addMark(from, to, textStyleType.create({ color }));\n } else {\n tr.removeMark(from, to, textStyleType);\n }\n\n view.dispatch(tr);\n}\n\n/** Apply color to cells in a column. */\nexport function colorColumn(view: EditorView, colIndex: number, color: string, property: 'color' | 'backgroundColor') {\n const table = findTable(view);\n\n if (!table) return;\n\n const map = TableMap.get(table.node);\n\n if (property === 'backgroundColor') {\n const tr = view.state.tr;\n\n for (let row = 0; row < map.height; row++) {\n setCellBackgroundColor(tr, table.start + map.map[row * map.width + colIndex], color || null);\n }\n\n if (tr.docChanged) view.dispatch(tr);\n } else {\n for (let row = 0; row < map.height; row++) {\n setCellForegroundColor(view, table.start + map.map[row * map.width + colIndex], color);\n }\n }\n\n view.focus();\n}\n\n/** Apply color to cells in a row. */\nexport function colorRow(view: EditorView, rowIndex: number, color: string, property: 'color' | 'backgroundColor') {\n const table = findTable(view);\n\n if (!table) return;\n\n const map = TableMap.get(table.node);\n\n if (property === 'backgroundColor') {\n const tr = view.state.tr;\n\n for (let col = 0; col < map.width; col++) {\n setCellBackgroundColor(tr, table.start + map.map[rowIndex * map.width + col], color || null);\n }\n\n if (tr.docChanged) view.dispatch(tr);\n } else {\n for (let col = 0; col < map.width; col++) {\n setCellForegroundColor(view, table.start + map.map[rowIndex * map.width + col], color);\n }\n }\n\n view.focus();\n}\n\n/** Apply color to the current cell. */\nexport function colorCurrentCell(view: EditorView, color: string, property: 'color' | 'backgroundColor') {\n const { $from } = view.state.selection;\n\n for (let depth = $from.depth; depth > 0; depth--) {\n const node = $from.node(depth);\n\n if (node.type.name === 'table_cell' || node.type.name === 'table_header') {\n const cellPos = $from.before(depth);\n\n if (property === 'backgroundColor') {\n const tr = view.state.tr;\n\n setCellBackgroundColor(tr, cellPos, color || null);\n\n if (tr.docChanged) view.dispatch(tr);\n } else {\n setCellForegroundColor(view, cellPos, color);\n }\n\n view.focus();\n\n return;\n }\n }\n}\n\n/** Duplicate a column: add a new column after and copy cell content from the source. */\nexport function duplicateColumn(view: EditorView, colIndex: number) {\n const source = findTable(view);\n\n if (!source) return;\n\n // Bail on merged cells in the source column — the duplicate would lose data.\n const sourceMap = TableMap.get(source.node);\n\n for (let row = 0; row < sourceMap.height; row++) {\n const cell = view.state.doc.nodeAt(source.start + sourceMap.map[row * sourceMap.width + colIndex]);\n\n if (cell && ((cell.attrs.colspan ?? 1) > 1 || (cell.attrs.rowspan ?? 1) > 1)) return;\n }\n\n addColumnAfter(view.state, view.dispatch);\n\n // Now copy content from source column to the new column (colIndex + 1)\n const table = findTable(view);\n\n if (!table) return;\n\n const map = TableMap.get(table.node);\n const tr = view.state.tr;\n\n for (let row = 0; row < map.height; row++) {\n const sourceCellPos = table.start + map.map[row * map.width + colIndex];\n const targetCellPos = table.start + map.map[row * map.width + colIndex + 1];\n const sourceCell = view.state.doc.nodeAt(sourceCellPos);\n const targetCell = view.state.doc.nodeAt(targetCellPos);\n\n if (!sourceCell || !targetCell) continue;\n\n // Replace the target cell's content with a copy of the source cell's content\n tr.replaceWith(tr.mapping.map(targetCellPos + 1), tr.mapping.map(targetCellPos + targetCell.nodeSize - 1), sourceCell.content);\n }\n\n if (tr.docChanged) {\n view.dispatch(tr);\n }\n\n view.focus();\n}\n\n/** Duplicate a row: insert a copy of the row after the current one. */\nexport function duplicateRow(view: EditorView, rowIndex: number) {\n const table = findTable(view);\n\n if (!table) return;\n\n const row = table.node.child(rowIndex);\n\n // Calculate the position after the current row\n let rowEndPos = table.start;\n\n for (let i = 0; i <= rowIndex; i++) {\n rowEndPos += table.node.child(i).nodeSize;\n }\n\n const tr = view.state.tr.insert(rowEndPos, row.copy(row.content));\n\n view.dispatch(tr);\n view.focus();\n}\n","import type { EditorView } from 'prosemirror-view';\nimport type { Schema } from 'prosemirror-model';\nimport type { TextEditorTableColumnCommands, TextEditorTableRowCommands, TextEditorTableCellCommands } from '@primeui/texteditor-types';\nimport { addColumnAfter, addColumnBefore, addRowAfter, addRowBefore, deleteColumn, deleteRow, deleteTable, mergeCells, splitCell, toggleHeaderCell, toggleHeaderColumn, toggleHeaderRow } from 'prosemirror-tables';\nimport { TextSelection } from 'prosemirror-state';\nimport { alignColumn, alignCurrentCell, alignRow, colorColumn, colorCurrentCell, colorRow, duplicateColumn, duplicateRow, moveColumn, moveRow, selectColumn, selectRow } from './tableHelpers';\n\n// selectColumn/selectRow live in tableHelpers (shared with move*), but are part\n// of the public command surface — re-export so consumers keep importing from here.\nexport { selectColumn, selectRow };\n\n/**\n * Insert a table with the given number of rows and columns.\n */\nexport function insertTable(view: EditorView, schema: Schema, rows: number = 3, cols: number = 3, defaultCellWidth?: number) {\n const cells: ReturnType<typeof schema.nodes.table_cell.create>[] = [];\n const cellAttrs = defaultCellWidth ? { colwidth: [defaultCellWidth] } : null;\n\n for (let i = 0; i < cols; i++) {\n cells.push(schema.nodes.table_cell.create(cellAttrs, schema.nodes.paragraph.create()));\n }\n\n const tableRows: ReturnType<typeof schema.nodes.table_row.create>[] = [];\n\n for (let i = 0; i < rows; i++) {\n const rowCells = cells.map((cell) => cell.copy(cell.content));\n\n tableRows.push(schema.nodes.table_row.create(null, rowCells));\n }\n\n const table = schema.nodes.table.create(null, tableRows);\n const $from = view.state.selection.$from;\n const parent = $from.node($from.depth);\n const tr = view.state.tr;\n let tablePos: number;\n\n if (parent.isTextblock && parent.content.size === 0) {\n // Empty block — replace it with the table\n tablePos = $from.before($from.depth);\n tr.replaceWith(tablePos, tablePos + parent.nodeSize, table);\n } else {\n // Non-empty block — insert table after the current top-level block\n tablePos = $from.after(1);\n tr.insert(tablePos, table);\n }\n\n // Place cursor inside the first cell's paragraph (table > tr > td > p, +3 from table pos)\n const cellParagraphPos = tablePos + 3;\n const selection = TextSelection.findFrom(tr.doc.resolve(cellParagraphPos), 1, true);\n\n if (selection) tr.setSelection(selection);\n\n view.dispatch(tr.scrollIntoView());\n view.focus();\n}\n\n/**\n * Create table column commands for the downloadable UI components.\n */\nexport function createTableColumnCommands(view: EditorView, schema: Schema, _colIndex: number, onDismiss: () => void): TextEditorTableColumnCommands {\n const run = (cmd: (state: typeof view.state, dispatch?: typeof view.dispatch) => boolean) => {\n cmd(view.state, view.dispatch);\n view.focus();\n onDismiss();\n };\n\n return {\n insertBefore: () => run(addColumnBefore),\n insertAfter: () => run(addColumnAfter),\n delete: () => run(deleteColumn),\n moveLeft: () => {\n moveColumn(view, _colIndex, -1);\n selectColumn(view, _colIndex - 1);\n onDismiss();\n },\n moveRight: () => {\n moveColumn(view, _colIndex, 1);\n selectColumn(view, _colIndex + 1);\n onDismiss();\n },\n duplicate: () => {\n duplicateColumn(view, _colIndex);\n onDismiss();\n },\n align: (value: string) => {\n alignColumn(view, _colIndex, value);\n onDismiss();\n },\n toggleHeader: () => run(toggleHeaderColumn),\n foregroundColor: (color: string) => {\n colorColumn(view, _colIndex, color, 'color');\n onDismiss();\n },\n backgroundColor: (color: string) => {\n colorColumn(view, _colIndex, color, 'backgroundColor');\n onDismiss();\n }\n };\n}\n\n/**\n * Create table row commands for the downloadable UI components.\n */\nexport function createTableRowCommands(view: EditorView, schema: Schema, _rowIndex: number, onDismiss: () => void): TextEditorTableRowCommands {\n const run = (cmd: (state: typeof view.state, dispatch?: typeof view.dispatch) => boolean) => {\n cmd(view.state, view.dispatch);\n view.focus();\n onDismiss();\n };\n\n return {\n insertBefore: () => run(addRowBefore),\n insertAfter: () => run(addRowAfter),\n delete: () => run(deleteRow),\n moveUp: () => {\n moveRow(view, _rowIndex, -1);\n selectRow(view, _rowIndex - 1);\n onDismiss();\n },\n moveDown: () => {\n moveRow(view, _rowIndex, 1);\n selectRow(view, _rowIndex + 1);\n onDismiss();\n },\n duplicate: () => {\n duplicateRow(view, _rowIndex);\n onDismiss();\n },\n deleteTable: () => run(deleteTable),\n align: (value: string) => {\n alignRow(view, _rowIndex, value);\n onDismiss();\n },\n toggleHeader: () => run(toggleHeaderRow),\n foregroundColor: (color: string) => {\n colorRow(view, _rowIndex, color, 'color');\n onDismiss();\n },\n backgroundColor: (color: string) => {\n colorRow(view, _rowIndex, color, 'backgroundColor');\n onDismiss();\n }\n };\n}\n\n/**\n * Create table cell commands for the downloadable UI components.\n */\nexport function createTableCellCommands(view: EditorView, schema: Schema, onDismiss: () => void): TextEditorTableCellCommands {\n return {\n clearContents: () => {\n // Replace cell content with empty paragraph\n const { $from } = view.state.selection;\n\n for (let depth = $from.depth; depth > 0; depth--) {\n if ($from.node(depth).type === schema.nodes.table_cell || $from.node(depth).type === schema.nodes.table_header) {\n const cellStart = $from.start(depth);\n const cellEnd = $from.end(depth);\n const tr = view.state.tr.replaceWith(cellStart, cellEnd, schema.nodes.paragraph.create());\n\n view.dispatch(tr);\n break;\n }\n }\n\n view.focus();\n onDismiss();\n },\n align: (value: string) => {\n alignCurrentCell(view, value);\n onDismiss();\n },\n mergeCells: () => {\n mergeCells(view.state, view.dispatch);\n view.focus();\n onDismiss();\n },\n splitCell: () => {\n splitCell(view.state, view.dispatch);\n view.focus();\n onDismiss();\n },\n toggleHeader: () => {\n toggleHeaderCell(view.state, view.dispatch);\n view.focus();\n onDismiss();\n },\n foregroundColor: (color: string) => {\n colorCurrentCell(view, color, 'color');\n onDismiss();\n },\n backgroundColor: (color: string) => {\n colorCurrentCell(view, color, 'backgroundColor');\n onDismiss();\n }\n };\n}\n","import type { MarkType, Node as PMNode } from 'prosemirror-model';\n\n// Returns the full {from,to} extent of `markType` (matching attrs) covering `pos`, or null if absent.\nexport function findMarkRange(doc: PMNode, pos: number, markType: MarkType): { from: number; to: number } | null {\n const $pos = doc.resolve(pos);\n const parent = $pos.parent;\n const parentStart = $pos.start();\n const markAt = (i: number) => (i >= 0 && i < parent.childCount ? markType.isInSet(parent.child(i).marks) || null : null);\n\n let index = $pos.index();\n let anchor = markAt(index);\n\n if (!anchor && markAt(index - 1)) {\n index -= 1;\n anchor = markAt(index);\n }\n\n if (!anchor) return null;\n\n const sameMark = (i: number) => {\n const m = markAt(i);\n\n return !!m && m.eq(anchor!);\n };\n\n let start = index;\n let end = index;\n\n while (start > 0 && sameMark(start - 1)) start--;\n while (end < parent.childCount - 1 && sameMark(end + 1)) end++;\n\n let from = parentStart;\n\n for (let i = 0; i < start; i++) from += parent.child(i).nodeSize;\n\n let to = from;\n\n for (let i = start; i <= end; i++) to += parent.child(i).nodeSize;\n\n return { from, to };\n}\n","import type { EditorView } from 'prosemirror-view';\nimport type { Schema } from 'prosemirror-model';\nimport type { ImageAttributes } from '@primeui/texteditor-types';\nimport { sanitizeUrl, sanitizeImageUrl, sanitizeTextAttr } from '../utils/url';\nimport { parseDimension } from '../schema/nodes';\nimport { findMarkRange } from './markRange';\n\nexport function createContentCommands(view: EditorView, schema: Schema) {\n const getLinkRange = (): { from: number; to: number } => {\n const { from, to, empty } = view.state.selection;\n\n if (!empty) return { from, to };\n\n return findMarkRange(view.state.doc, from, schema.marks.link) ?? { from, to };\n };\n\n return {\n insertLink: (url: string, text?: string) => {\n const href = sanitizeUrl(url);\n\n // Refuse to create a link with an unsafe scheme.\n if (href == null) return;\n\n const { from, to, empty } = view.state.selection;\n const linkMark = schema.marks.link.create({ href });\n\n if (empty && text) {\n const textNode = schema.text(text, [linkMark]);\n\n view.dispatch(view.state.tr.replaceSelectionWith(textNode, false));\n } else if (empty) {\n const displayText = href;\n const textNode = schema.text(displayText, [linkMark]);\n\n view.dispatch(view.state.tr.replaceSelectionWith(textNode, false));\n } else {\n view.dispatch(view.state.tr.addMark(from, to, linkMark));\n }\n\n view.focus();\n },\n\n updateLink: (url: string) => {\n const href = sanitizeUrl(url);\n\n // Refuse to update a link to an unsafe scheme.\n if (href == null) return;\n\n const { from, to } = getLinkRange();\n const tr = view.state.tr;\n\n tr.removeMark(from, to, schema.marks.link);\n tr.addMark(from, to, schema.marks.link.create({ href }));\n view.dispatch(tr);\n view.focus();\n },\n\n removeLink: () => {\n const { from, to } = getLinkRange();\n\n view.dispatch(view.state.tr.removeMark(from, to, schema.marks.link));\n view.focus();\n },\n\n openLink: () => {\n const { $from } = view.state.selection;\n const linkMark = schema.marks.link.isInSet($from.marks()) ?? schema.marks.link.isInSet(view.state.doc.resolve(Math.max(0, $from.pos - 1)).marks());\n const href = linkMark?.attrs.href ? sanitizeUrl(linkMark.attrs.href as string) : null;\n\n if (href) window.open(href, '_blank', 'noopener,noreferrer');\n },\n\n insertImage: (src: string, attrs?: ImageAttributes) => {\n const safeSrc = sanitizeImageUrl(src);\n\n if (safeSrc == null) return;\n\n // Sanitize attrs like the parse path (command path also feeds getJSON).\n const imageNode = schema.nodes.image.create({\n src: safeSrc,\n alt: sanitizeTextAttr(attrs?.alt) || null,\n width: parseDimension(attrs?.width == null ? null : String(attrs.width)),\n height: parseDimension(attrs?.height == null ? null : String(attrs.height))\n });\n\n view.dispatch(view.state.tr.replaceSelectionWith(imageNode));\n view.focus();\n }\n };\n}\n","import type { EditorView } from 'prosemirror-view';\nimport type { Schema } from 'prosemirror-model';\nimport { undo, redo } from 'prosemirror-history';\nimport { docToHtml } from '../serialization/htmlSerializer';\n\nexport interface EditorCommandCallbacks {\n onUploadImages?: () => void;\n onUploadDocuments?: () => void;\n}\n\n// Editor-level commands (clear formatting, print, upload placeholders, history).\n// Kept out of the aggregator so index.ts stays a thin assembler.\nexport function createEditorCommands(view: EditorView, schema: Schema, callbacks?: EditorCommandCallbacks) {\n const insertUploadPlaceholder = (placeholderType: typeof schema.nodes.image_upload_placeholder, onInsert?: () => void) => {\n let exists = false;\n\n view.state.doc.descendants((node) => {\n if (node.type === placeholderType) exists = true;\n });\n\n if (exists) return;\n\n view.dispatch(view.state.tr.replaceSelectionWith(placeholderType.create()).scrollIntoView());\n onInsert?.();\n };\n\n return {\n clearFormatting: () => {\n const { from, to, empty } = view.state.selection;\n\n if (empty) return;\n\n const tr = view.state.tr;\n\n for (const markType of Object.values(schema.marks)) {\n tr.removeMark(from, to, markType);\n }\n\n view.state.doc.nodesBetween(from, to, (node, pos) => {\n if (node.isTextblock && node.type !== schema.nodes.paragraph && node.type !== schema.nodes.code_block) {\n tr.setNodeMarkup(pos, schema.nodes.paragraph);\n }\n });\n\n view.dispatch(tr);\n view.focus();\n },\n\n print: () => {\n const content = docToHtml(view.state.doc, schema);\n const iframe = document.createElement('iframe');\n\n iframe.setAttribute('sandbox', 'allow-modals allow-same-origin');\n iframe.style.position = 'fixed';\n iframe.style.inset = '0';\n iframe.style.width = '0';\n iframe.style.height = '0';\n iframe.style.border = 'none';\n document.body.appendChild(iframe);\n\n const doc = iframe.contentDocument;\n\n if (doc) {\n doc.open();\n doc.write(\n `<!DOCTYPE html><html><head><style>body { font-family: system-ui, sans-serif; padding: 2rem; line-height: 1.6; } img { max-width: 100%; } table { border-collapse: collapse; width: 100%; } td, th { border: 1px solid #ccc; padding: 0.5rem; }</style></head><body>${content}</body></html>`\n );\n doc.close();\n\n iframe.contentWindow?.focus();\n iframe.contentWindow?.print();\n }\n\n setTimeout(() => iframe.remove(), 1000);\n },\n\n uploadImages: () => insertUploadPlaceholder(schema.nodes.image_upload_placeholder, callbacks?.onUploadImages),\n uploadDocuments: () => insertUploadPlaceholder(schema.nodes.document_upload_placeholder, callbacks?.onUploadDocuments),\n\n undo: () => {\n undo(view.state, view.dispatch);\n view.focus();\n },\n redo: () => {\n redo(view.state, view.dispatch);\n view.focus();\n }\n };\n}\n","import type { EditorView } from 'prosemirror-view';\nimport type { Schema } from 'prosemirror-model';\nimport type { TextEditorCommands } from '@primeui/texteditor-types';\nimport { setBlockType } from 'prosemirror-commands';\nimport { preserveSelection } from '../plugins/selectionHighlight';\nimport { wrapInBlockquoteNormalized, wrapInListNormalized } from './normalize';\nimport { createFormattingCommands } from './formatting';\nimport { createBlockCommands } from './blocks';\nimport { createListCommands } from './lists';\nimport { insertTable } from './tables';\nimport { createContentCommands } from './content';\nimport { createEditorCommands } from './editor';\n\nexport function createCommands(view: EditorView, schema: Schema, callbacks?: { onUploadImages?: () => void; onUploadDocuments?: () => void }, options?: { defaultCellWidth?: number; highlightColor?: string | null }): TextEditorCommands {\n const formatting = createFormattingCommands(view, schema, { highlightColor: options?.highlightColor });\n const blocks = createBlockCommands(view, schema);\n const lists = createListCommands(view, schema);\n const content = createContentCommands(view, schema);\n const editorCmds = createEditorCommands(view, schema, callbacks);\n\n return {\n // Formatting marks\n bold: formatting.bold,\n italic: formatting.italic,\n underline: formatting.underline,\n strikethrough: formatting.strikethrough,\n subscript: formatting.subscript,\n superscript: formatting.superscript,\n code: formatting.code,\n highlight: formatting.highlight,\n clearFormatting: editorCmds.clearFormatting,\n\n // Block types\n heading: blocks.heading,\n paragraph: blocks.paragraph,\n codeBlock: blocks.codeBlock,\n blockquote: blocks.blockquote,\n insertHorizontalRule: blocks.insertHorizontalRule,\n textAlign: blocks.textAlign,\n\n // Formatting styles\n fontFamily: formatting.fontFamily,\n fontSize: formatting.fontSize,\n foregroundColor: formatting.foregroundColor,\n backgroundColor: formatting.backgroundColor,\n\n // Lists\n bulletList: lists.bulletList,\n orderedList: lists.orderedList,\n checkList: lists.checkList,\n\n // Content\n insertLink: content.insertLink,\n updateLink: content.updateLink,\n removeLink: content.removeLink,\n openLink: content.openLink,\n insertImage: content.insertImage,\n\n // Table\n table: (rows?: number, cols?: number) => insertTable(view, schema, rows || 3, cols || 3, options?.defaultCellWidth),\n\n // Features\n print: editorCmds.print,\n uploadImages: editorCmds.uploadImages,\n uploadDocuments: editorCmds.uploadDocuments,\n\n // History\n undo: editorCmds.undo,\n redo: editorCmds.redo,\n\n // Selection highlight\n preserveSelection: () => preserveSelection(view),\n\n // Turn into (non-toggle: always sets the type)\n turnInto: {\n text: () => {\n setBlockType(schema.nodes.paragraph)(view.state, view.dispatch);\n view.focus();\n },\n heading1: () => {\n setBlockType(schema.nodes.heading, { level: 1 })(view.state, view.dispatch);\n view.focus();\n },\n heading2: () => {\n setBlockType(schema.nodes.heading, { level: 2 })(view.state, view.dispatch);\n view.focus();\n },\n heading3: () => {\n setBlockType(schema.nodes.heading, { level: 3 })(view.state, view.dispatch);\n view.focus();\n },\n bulletList: () => {\n wrapInListNormalized(view, schema, schema.nodes.bullet_list);\n view.focus();\n },\n orderedList: () => {\n wrapInListNormalized(view, schema, schema.nodes.ordered_list);\n view.focus();\n },\n checkList: () => {\n wrapInListNormalized(view, schema, schema.nodes.check_list);\n view.focus();\n },\n blockquote: () => {\n wrapInBlockquoteNormalized(view, schema);\n view.focus();\n },\n codeBlock: () => {\n setBlockType(schema.nodes.code_block)(view.state, view.dispatch);\n view.focus();\n }\n }\n };\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/serialization/placeholders.ts","../src/serialization/htmlSerializer.ts"],"names":[],"mappings":";;;AAGO,SAAS,mBAAA,CAAoB,SAAmB,MAAA,EAA0B;AAC7E,EAAA,MAAM,eAAe,CAAC,MAAA,CAAO,MAAM,wBAAA,EAA0B,MAAA,CAAO,MAAM,2BAA2B,CAAA;AACrG,EAAA,MAAM,OAAe,EAAC;AAEtB,EAAA,OAAA,CAAQ,OAAA,CAAQ,CAAC,KAAA,KAAU;AACvB,IAAA,IAAI,YAAA,CAAa,QAAA,CAAS,KAAA,CAAM,IAAI,CAAA,EAAG;AAEvC,IAAA,IAAI,KAAA,CAAM,UAAA,GAAa,CAAA,IAAK,CAAC,MAAM,MAAA,EAAQ;AACvC,MAAA,IAAA,CAAK,IAAA,CAAK,MAAM,IAAA,CAAK,mBAAA,CAAoB,MAAM,OAAA,EAAS,MAAM,CAAC,CAAC,CAAA;AAAA,IACpE,CAAA,MAAO;AACH,MAAA,IAAA,CAAK,KAAK,KAAK,CAAA;AAAA,IACnB;AAAA,EACJ,CAAC,CAAA;AAED,EAAA,OAAO,QAAA,CAAS,UAAU,IAAI,CAAA;AAClC;;;ACfA,IAAM,eAAA,uBAAsB,OAAA,EAA+B;AAE3D,SAAS,cAAc,MAAA,EAA+B;AAClD,EAAA,IAAI,UAAA,GAAa,eAAA,CAAgB,GAAA,CAAI,MAAM,CAAA;AAE3C,EAAA,IAAI,CAAC,UAAA,EAAY;AACb,IAAA,UAAA,GAAa,aAAA,CAAc,WAAW,MAAM,CAAA;AAC5C,IAAA,eAAA,CAAgB,GAAA,CAAI,QAAQ,UAAU,CAAA;AAAA,EAC1C;AAEA,EAAA,OAAO,UAAA;AACX;AAEO,SAAS,SAAA,CAAU,KAAW,MAAA,EAAwB;AACzD,EAAA,MAAM,UAAA,GAAa,cAAc,MAAM,CAAA;AACvC,EAAA,MAAM,WAAW,UAAA,CAAW,iBAAA,CAAkB,oBAAoB,GAAA,CAAI,OAAA,EAAS,MAAM,CAAC,CAAA;AACtF,EAAA,MAAM,SAAA,GAAY,QAAA,CAAS,aAAA,CAAc,KAAK,CAAA;AAE9C,EAAA,SAAA,CAAU,YAAY,QAAQ,CAAA;AAE9B,EAAA,OAAO,SAAA,CAAU,SAAA;AACrB;AAQO,SAAS,UAAA,CAAW,MAAY,MAAA,EAAwB;AAC3D,EAAA,MAAM,UAAA,GAAa,cAAc,MAAM,CAAA;AACvC,EAAA,MAAM,GAAA,GAAM,UAAA,CAAW,aAAA,CAAc,IAAI,CAAA;AACzC,EAAA,MAAM,SAAA,GAAY,QAAA,CAAS,aAAA,CAAc,KAAK,CAAA;AAE9C,EAAA,SAAA,CAAU,YAAY,GAAG,CAAA;AAEzB,EAAA,OAAO,SAAA,CAAU,SAAA;AACrB","file":"chunk-6ZN5XRH2.mjs","sourcesContent":["import { Fragment, type Node, type Schema } from 'prosemirror-model';\n\n// Drops transient upload-placeholder nodes so they never leak into emitted output.\nexport function withoutPlaceholders(content: Fragment, schema: Schema): Fragment {\n const placeholders = [schema.nodes.image_upload_placeholder, schema.nodes.document_upload_placeholder];\n const kept: Node[] = [];\n\n content.forEach((child) => {\n if (placeholders.includes(child.type)) return;\n\n if (child.childCount > 0 && !child.isText) {\n kept.push(child.copy(withoutPlaceholders(child.content, schema)));\n } else {\n kept.push(child);\n }\n });\n\n return Fragment.fromArray(kept);\n}\n","import { DOMSerializer, type Node, type Schema } from 'prosemirror-model';\nimport { withoutPlaceholders } from './placeholders';\n\nconst serializerCache = new WeakMap<Schema, DOMSerializer>();\n\nfunction getSerializer(schema: Schema): DOMSerializer {\n let serializer = serializerCache.get(schema);\n\n if (!serializer) {\n serializer = DOMSerializer.fromSchema(schema);\n serializerCache.set(schema, serializer);\n }\n\n return serializer;\n}\n\nexport function docToHtml(doc: Node, schema: Schema): string {\n const serializer = getSerializer(schema);\n const fragment = serializer.serializeFragment(withoutPlaceholders(doc.content, schema));\n const container = document.createElement('div');\n\n container.appendChild(fragment);\n\n return container.innerHTML;\n}\n\n/**\n * Serialize a single node to HTML via the schema's own toDOM. Used as a lossless\n * fallback when a target format (e.g. Markdown) cannot represent the node —\n * embedding raw HTML preserves its structure and attrs rather than flattening\n * it to plain text.\n */\nexport function nodeToHtml(node: Node, schema: Schema): string {\n const serializer = getSerializer(schema);\n const dom = serializer.serializeNode(node);\n const container = document.createElement('div');\n\n container.appendChild(dom);\n\n return container.innerHTML;\n}\n"]}
|