@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/texteditor.classes.ts"],"names":[],"mappings":";AAAO,IAAM,iBAAA,GAAoB;AAAA,EAC7B,IAAA,EAAM,eAAA;AAAA,EACN,OAAA,EAAS,uBAAA;AAAA,EACT,IAAA,EAAM,oBAAA;AAAA,EACN,OAAA,EAAS,uBAAA;AAAA;AAAA,EAGT,KAAA,EAAO,qBAAA;AAAA,EACP,YAAA,EAAc,6BAAA;AAAA,EACd,aAAA,EAAe,8BAAA;AAAA,EACf,kBAAA,EAAoB,oCAAA;AAAA,EACpB,gBAAA,EAAkB,iCAAA;AAAA;AAAA,EAGlB,SAAA,EAAW,yBAAA;AAAA,EACX,YAAA,EAAc,6BAAA;AAAA,EACd,gBAAA,EAAkB,iCAAA;AAAA;AAAA,EAGlB,cAAA,EAAgB,+BAAA;AAAA,EAChB,WAAA,EAAa,4BAAA;AAAA,EACb,cAAA,EAAgB,+BAAA;AAAA,EAChB,WAAA,EAAa,2BAAA;AAAA;AAAA,EAGb,qBAAA,EAAuB,uCAAA;AAAA,EACvB,YAAA,EAAc,6BAAA;AAAA,EACd,gBAAA,EAAkB,kCAAA;AAAA,EAClB,eAAA,EAAiB,iCAAA;AAAA,EACjB,eAAA,EAAiB,iCAAA;AAAA,EACjB,QAAA,EAAU,yBAAA;AAAA,EACV,WAAA,EAAa,6BAAA;AAAA,EACb,WAAA,EAAa,6BAAA;AAAA;AAAA,EAGb,aAAA,EAAe,8BAAA;AAAA,EACf,OAAA,EAAS,uBAAA;AAAA,EACT,WAAA,EAAa,4BAAA;AAAA,EACb,SAAA,EAAW,yBAAA;AAAA,EACX,sBAAA,EAAwB,wCAAA;AAAA,EACxB,yBAAA,EAA2B;AAC/B","file":"chunk-25Y5HLDY.mjs","sourcesContent":["export const textEditorClasses = {\n root: 'p-text-editor',\n toolbar: 'p-text-editor-toolbar',\n body: 'p-text-editor-body',\n content: 'p-text-editor-content',\n\n // Block mode\n block: 'p-text-editor-block',\n blockContent: 'p-text-editor-block-content',\n blockControls: 'p-text-editor-block-controls',\n blockDropIndicator: 'p-text-editor-block-drop-indicator',\n blockPlaceholder: 'p-text-editor-block-placeholder',\n\n // Navigator\n navigator: 'p-text-editor-navigator',\n navigatorBar: 'p-text-editor-navigator-bar',\n navigatorPopover: 'p-text-editor-navigator-popover',\n\n // Overlays\n contextToolbar: 'p-text-editor-context-toolbar',\n popoverMenu: 'p-text-editor-popover-menu',\n popoverSubmenu: 'p-text-editor-popover-submenu',\n placeholder: 'p-text-editor-placeholder',\n\n // Table\n tableSelectionOutline: 'p-text-editor-table-selection-outline',\n tableTrigger: 'p-text-editor-table-trigger',\n tableTriggerCell: 'p-text-editor-table-trigger-cell',\n tableTriggerCol: 'p-text-editor-table-trigger-col',\n tableTriggerRow: 'p-text-editor-table-trigger-row',\n tableAdd: 'p-text-editor-table-add',\n tableAddCol: 'p-text-editor-table-add-col',\n tableAddRow: 'p-text-editor-table-add-row',\n\n // Inline decorations\n mentionTyping: 'p-text-editor-mention-typing',\n mention: 'p-text-editor-mention',\n slashTyping: 'p-text-editor-slash-typing',\n selection: 'p-text-editor-selection',\n imageUploadPlaceholder: 'p-text-editor-image-upload-placeholder',\n documentUploadPlaceholder: 'p-text-editor-document-upload-placeholder'\n};\n"]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { sanitizeTextAttr } from './chunk-MMU3VGMT.mjs';
|
|
2
|
+
import { textEditorClasses } from './chunk-25Y5HLDY.mjs';
|
|
2
3
|
import { PluginKey, Plugin } from 'prosemirror-state';
|
|
3
4
|
import { DecorationSet, Decoration } from 'prosemirror-view';
|
|
4
5
|
|
|
@@ -129,8 +130,8 @@ function insertMention(view, schema, data, options) {
|
|
|
129
130
|
}
|
|
130
131
|
const id = data && typeof data === "object" && "id" in data ? String(data.id) : null;
|
|
131
132
|
const mentionNode = schema.nodes.mention.create({
|
|
132
|
-
id,
|
|
133
|
-
label,
|
|
133
|
+
id: sanitizeTextAttr(id),
|
|
134
|
+
label: sanitizeTextAttr(label) ?? "",
|
|
134
135
|
data
|
|
135
136
|
});
|
|
136
137
|
const tr = view.state.tr.replaceWith(triggerPos, from, mentionNode).insertText("\xA0");
|
|
@@ -139,5 +140,5 @@ function insertMention(view, schema, data, options) {
|
|
|
139
140
|
}
|
|
140
141
|
|
|
141
142
|
export { createMentionPlugin, insertMention, mentionPluginKey };
|
|
142
|
-
//# sourceMappingURL=chunk-
|
|
143
|
-
//# sourceMappingURL=chunk-
|
|
143
|
+
//# sourceMappingURL=chunk-4BI7WWVV.mjs.map
|
|
144
|
+
//# sourceMappingURL=chunk-4BI7WWVV.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/plugins/mention.ts"],"names":[],"mappings":"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","file":"chunk-4BI7WWVV.mjs","sourcesContent":["import type { CaretPosition } from '@primeui/texteditor-types';\nimport type { Node as PMNode, Schema } from 'prosemirror-model';\nimport { Plugin, PluginKey } from 'prosemirror-state';\nimport type { EditorView } from 'prosemirror-view';\nimport { Decoration, DecorationSet } from 'prosemirror-view';\nimport { textEditorClasses as classes } from '../texteditor.classes';\nimport { sanitizeTextAttr } from '../utils/url';\n\nexport const mentionPluginKey = new PluginKey('mention');\n\nexport interface MentionUpdate {\n active: boolean;\n text: string;\n position: CaretPosition | null;\n}\n\ninterface MentionPluginCallbacks {\n onUpdate: (update: MentionUpdate) => void;\n}\n\nfunction getCaretCoords(view: EditorView, pos: number): CaretPosition {\n const coords = view.coordsAtPos(pos);\n\n return {\n top: coords.top,\n left: coords.left,\n bottom: coords.bottom,\n height: coords.bottom - coords.top,\n width: 0\n };\n}\n\n/**\n * Scan backwards from cursor to find '@' preceded by whitespace or start of block.\n * Returns the document position of '@' if found, or -1.\n */\nfunction findMentionTrigger(doc: PMNode, cursorPos: number): number {\n const $pos = doc.resolve(cursorPos);\n const parentOffset = $pos.parentOffset;\n const parentText = $pos.parent.textBetween(0, parentOffset, undefined, '\\ufffc');\n\n // Scan backwards from cursor to find '@'\n for (let i = parentText.length - 1; i >= 0; i--) {\n const char = parentText[i];\n\n // Found a space before finding '@' — no mention\n if (char === ' ' || char === '\\n' || char === '\\u00A0') return -1;\n\n if (char === '@') {\n // '@' must be at start of text or preceded by whitespace\n if (i === 0 || parentText[i - 1] === ' ' || parentText[i - 1] === '\\n' || parentText[i - 1] === '\\u00A0') {\n // Convert parent-relative offset to document position\n return $pos.start() + i;\n }\n\n return -1;\n }\n }\n\n return -1;\n}\n\nexport function createMentionPlugin(_schema: Schema, callbacks: MentionPluginCallbacks) {\n let activated = false;\n\n return new Plugin({\n key: mentionPluginKey,\n props: {\n handleDOMEvents: {\n keydown(view, event) {\n if (event.key === 'Escape' && activated) {\n activated = false;\n // Notify directly — the view.update hook early-returns on !activated and can't emit it.\n callbacks.onUpdate({ active: false, text: '', position: null });\n view.dispatch(view.state.tr);\n }\n\n return false;\n },\n blur(view) {\n if (activated) {\n activated = false;\n callbacks.onUpdate({ active: false, text: '', position: null });\n view.dispatch(view.state.tr);\n }\n\n return false;\n }\n },\n handleTextInput(_view, _from, _to, text) {\n if (text.endsWith('@')) {\n activated = true;\n }\n\n return false;\n },\n handleKeyDown(view, event) {\n if (event.key !== 'Backspace') return false;\n\n const { $from, empty } = view.state.selection;\n\n if (!empty) return false;\n\n const parent = $from.parent;\n const offset = $from.parentOffset;\n\n if (offset < 2) return false;\n\n // Check if character before cursor is whitespace\n const charBefore = parent.textBetween(offset - 1, offset, undefined, '\\ufffc');\n\n if (charBefore !== ' ' && charBefore !== '\\u00A0') return false;\n\n // Check if node before the whitespace is a mention\n const $beforeSpace = view.state.doc.resolve($from.pos - 1);\n const mentionNode = $beforeSpace.nodeBefore;\n\n if (!mentionNode || mentionNode.type.name !== 'mention') return false;\n\n // Delete both the whitespace and the mention in one operation\n const tr = view.state.tr.delete($from.pos - 1 - mentionNode.nodeSize, $from.pos);\n\n view.dispatch(tr);\n\n return true;\n },\n decorations(state) {\n if (!activated) return DecorationSet.empty;\n\n const { from } = state.selection;\n const triggerPos = findMentionTrigger(state.doc, from);\n\n if (triggerPos < 0) return DecorationSet.empty;\n\n const deco = Decoration.inline(triggerPos, from, {\n class: classes.mentionTyping,\n 'data-mention-query': 'true'\n });\n\n return DecorationSet.create(state.doc, [deco]);\n }\n },\n view() {\n return {\n update(view) {\n if (!activated) return;\n\n const { from, to } = view.state.selection;\n\n // Deactivate on range selection\n if (from !== to) {\n activated = false;\n callbacks.onUpdate({ active: false, text: '', position: null });\n\n return;\n }\n\n const triggerPos = findMentionTrigger(view.state.doc, from);\n\n if (triggerPos >= 0) {\n const text = from > triggerPos + 1 ? view.state.doc.textBetween(triggerPos + 1, from, undefined, '\\ufffc') : '';\n\n callbacks.onUpdate({\n active: true,\n text,\n position: getCaretCoords(view, triggerPos)\n });\n } else {\n activated = false;\n callbacks.onUpdate({ active: false, text: '', position: null });\n }\n }\n };\n }\n });\n}\n\n/**\n * Insert a mention node, replacing the '@query' text.\n */\nexport function insertMention(view: EditorView, schema: Schema, data: unknown, options?: { filterField?: string; template?: (data: unknown) => string }) {\n const { from } = view.state.selection;\n const triggerPos = findMentionTrigger(view.state.doc, from);\n\n if (triggerPos < 0) return;\n\n // Determine the label\n let label = '';\n\n if (options?.template) {\n label = options.template(data);\n } else if (options?.filterField && data && typeof data === 'object') {\n label = String((data as Record<string, unknown>)[options.filterField] || '');\n } else if (data && typeof data === 'object' && 'name' in data) {\n label = String((data as Record<string, unknown>).name || '');\n } else {\n label = String(data);\n }\n\n const id = data && typeof data === 'object' && 'id' in data ? String((data as Record<string, unknown>).id) : null;\n\n const mentionNode = schema.nodes.mention.create({\n id: sanitizeTextAttr(id),\n label: sanitizeTextAttr(label) ?? '',\n data\n });\n\n // Replace from '@' position to cursor\n const tr = view.state.tr.replaceWith(triggerPos, from, mentionNode).insertText('\\u00A0'); // Non-breaking space after mention\n\n view.dispatch(tr);\n view.focus();\n}\n"]}
|
|
@@ -72,5 +72,5 @@ function getSelectionPosition(view) {
|
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
export { getMarkAttrs, getParentNodeOfType, getSelectionPosition, isMarkActive, isNodeActive };
|
|
75
|
-
//# sourceMappingURL=chunk-
|
|
76
|
-
//# sourceMappingURL=chunk-
|
|
75
|
+
//# sourceMappingURL=chunk-4C4R23A3.mjs.map
|
|
76
|
+
//# sourceMappingURL=chunk-4C4R23A3.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/state/selection.ts"],"names":[],"mappings":"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","file":"chunk-4C4R23A3.mjs","sourcesContent":["import type { EditorState } from 'prosemirror-state';\nimport type { EditorView } from 'prosemirror-view';\nimport type { MarkType, NodeType } from 'prosemirror-model';\nimport type { CaretPosition } from '@primeui/texteditor-types';\n\nexport function isMarkActive(state: EditorState, markType: MarkType): boolean {\n const { from, $from, to, empty } = state.selection;\n\n if (empty) {\n if (state.storedMarks) return !!markType.isInSet(state.storedMarks);\n\n // At a boundary, $from.marks() reflects the char before the cursor, so a\n // cursor at the left edge of a code span misses it. Also check the mark\n // on the character immediately after the cursor.\n if (markType.isInSet($from.marks())) return true;\n\n const after = $from.nodeAfter;\n\n return !!(after && markType.isInSet(after.marks));\n }\n\n // Active only when the mark fully covers the selection.\n let hasText = false;\n let covered = true;\n\n state.doc.nodesBetween(from, to, (node) => {\n if (!node.isText) return;\n hasText = true;\n if (!markType.isInSet(node.marks)) covered = false;\n });\n\n return hasText && covered;\n}\n\nexport function getMarkAttrs(state: EditorState, markType: MarkType): Record<string, unknown> | null {\n const { from, $from, to, empty } = state.selection;\n\n if (empty) {\n const mark = markType.isInSet(state.storedMarks || $from.marks()) || (!state.storedMarks && $from.nodeAfter ? markType.isInSet($from.nodeAfter.marks) : null);\n\n return mark ? mark.attrs : null;\n }\n\n // Report an attr only when uniform across the selection; mixed -> null.\n let seen = false;\n const merged: Record<string, unknown> = {};\n\n state.doc.nodesBetween(from, to, (node) => {\n if (!node.isText) return;\n\n const attrs = (markType.isInSet(node.marks)?.attrs ?? {}) as Record<string, unknown>;\n const keys = new Set([...Object.keys(merged), ...Object.keys(attrs)]);\n\n if (!seen) {\n seen = true;\n Object.assign(merged, attrs);\n\n return;\n }\n\n for (const key of keys) {\n if (merged[key] !== attrs[key]) merged[key] = null;\n }\n });\n\n return seen ? merged : null;\n}\n\nexport function getParentNodeOfType(state: EditorState, nodeType: NodeType): { node: ReturnType<typeof state.doc.nodeAt>; pos: number; depth: number } | null {\n const { $from } = state.selection;\n\n for (let depth = $from.depth; depth > 0; depth--) {\n const node = $from.node(depth);\n\n if (node.type === nodeType) {\n return { node, pos: $from.before(depth), depth };\n }\n }\n\n return null;\n}\n\nexport function isNodeActive(state: EditorState, nodeType: NodeType, attrs?: Record<string, unknown>): boolean {\n const result = getParentNodeOfType(state, nodeType);\n\n if (!result) return false;\n\n if (attrs) {\n return Object.entries(attrs).every(([key, val]) => result.node?.attrs[key] === val);\n }\n\n return true;\n}\n\nexport function getSelectionPosition(view: EditorView): CaretPosition | null {\n const { from, to } = view.state.selection;\n\n if (from === to) return null;\n\n const start = view.coordsAtPos(from);\n const end = view.coordsAtPos(to);\n\n return {\n top: Math.min(start.top, end.top),\n left: start.left,\n bottom: Math.max(start.bottom, end.bottom),\n height: Math.max(start.bottom, end.bottom) - Math.min(start.top, end.top),\n width: Math.abs(end.left - start.left)\n };\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/texteditor.state.ts"],"names":[],"mappings":";AAEO,IAAM,sBAAA,GAA0C;AAAA,EACnD,WAAA,EAAa,IAAA;AAAA,EACb,gBAAA,EAAkB,KAAA;AAAA,EAClB,sBAAA,EAAwB;AAC5B","file":"chunk-4NWX3EPS.mjs","sourcesContent":["import type { TextEditorState } from '@primeui/texteditor-types';\n\nexport const defaultTextEditorState: TextEditorState = {\n formatState: null,\n isMentionEnabled: false,\n isSlashCommandsEnabled: false\n};\n"]}
|
|
@@ -22,5 +22,5 @@ function defineTextEditorPlugin(name, install, opts) {
|
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
export { defineTextEditorPlugin };
|
|
25
|
-
//# sourceMappingURL=chunk-
|
|
26
|
-
//# sourceMappingURL=chunk-
|
|
25
|
+
//# sourceMappingURL=chunk-75IVOL6Q.mjs.map
|
|
26
|
+
//# sourceMappingURL=chunk-75IVOL6Q.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/plugins/defineTextEditorPlugin.ts"],"names":["plugin"],"mappings":";;;AAoBO,SAAS,sBAAA,CAA2C,IAAA,EAAc,OAAA,EAAiF,IAAA,EAAgD;AACtM,EAAA,MAAM,MAAA,GAAS,YAAA,CAAmE,IAAA,EAAM,CAAC,GAAA,KAAQ;AAC7F,IAAA,MAAM,GAAA,GAAyC;AAAA,MAC3C,eAAA,EAAiB,MAAM,GAAA,CAAI,eAAA,EAAgB;AAAA,MAC3C,kBAAkB,CAAC,OAAA,EAAiB,WAAqB,GAAA,CAAI,gBAAA,CAAiB,SAAS,MAAM,CAAA;AAAA,MAC7F,gBAAA,EAAkB,MAAM,GAAA,CAAI,gBAAA,EAAiB;AAAA,MAC7C,OAAA,EAAS,MAAM,GAAA,CAAI,OAAA,EAAQ;AAAA,MAC3B,QAAA,EAAU,MAAM,GAAA,CAAI,QAAA,EAAS;AAAA,MAC7B,yBAAA,EAA2B,CAACA,OAAAA,KAAW,GAAA,CAAI,0BAA0BA,OAAM,CAAA;AAAA,MAC3E,UAAA,EAAY,CAAC,OAAA,KAAY,GAAA,CAAI,WAAW,OAAO,CAAA;AAAA,MAC/C,SAAS,GAAA,CAAI,OAAA;AAAA,MACb,aAAa,GAAA,CAAI;AAAA,KACrB;AAEA,IAAA,OAAO,QAAQ,GAAG,CAAA;AAAA,EACtB,CAAC,CAAA;AAED,EAAA,IAAI,IAAA,EAAM,MAAA,EAAS,MAAA,CAAwC,SAAS,IAAA,CAAK,MAAA;AACzE,EAAA,IAAI,IAAA,EAAM,kBAAA,EAAqB,MAAA,CAAkG,qBAAqB,IAAA,CAAK,kBAAA;AAE3J,EAAA,OAAO,MAAA;AACX","file":"chunk-75IVOL6Q.mjs","sourcesContent":["import { definePlugin } from '@primeui/core';\nimport type { TextEditorInstance, TextEditorPluginContext, TextEditorPluginExpose } from '@primeui/texteditor-types';\nimport type { Plugin as PMPlugin } from 'prosemirror-state';\nimport type { Schema } from 'prosemirror-model';\nimport type { SchemaExtension } from '../schema';\n\nexport interface TextEditorPluginDefineOptions<TOptions = unknown> {\n /** Nodes/marks contributed to the per-instance schema. */\n schema?: SchemaExtension;\n /**\n * ProseMirror plugins added to the INITIAL editor state (e.g. Yjs ySyncPlugin\n * for collaboration). Receives the assembled schema and the plugin's own\n * options, so config-dependent plugins (provider URL, awareness, limits) can\n * be built here rather than via the install-time registerProseMirrorPlugin.\n */\n prosemirrorPlugins?: (schema: Schema, options?: TOptions) => PMPlugin[];\n}\n\n// Defines a TextEditor plugin. `opts.schema` contributes nodes/marks; `opts.prosemirrorPlugins`\n// contributes ProseMirror plugins to the initial state (required for collaboration/Yjs).\nexport function defineTextEditorPlugin<TOptions = unknown>(name: string, install: (context: TextEditorPluginContext<TOptions>) => TextEditorPluginExpose, opts?: TextEditorPluginDefineOptions<TOptions>) {\n const plugin = definePlugin<TOptions, TextEditorPluginExpose, TextEditorInstance>(name, (ctx) => {\n const api: TextEditorPluginContext<TOptions> = {\n getSelectedText: () => ctx.getSelectedText(),\n replaceSelection: (content: string, asHtml?: boolean) => ctx.replaceSelection(content, asHtml),\n getEditorElement: () => ctx.getEditorElement(),\n getView: () => ctx.getView(),\n getState: () => ctx.getState(),\n registerProseMirrorPlugin: (plugin) => ctx.registerProseMirrorPlugin(plugin),\n runCommand: (command) => ctx.runCommand(command),\n options: ctx.options,\n onUnmounted: ctx.onUnmounted\n };\n\n return install(api);\n });\n\n if (opts?.schema) (plugin as { schema?: SchemaExtension }).schema = opts.schema;\n if (opts?.prosemirrorPlugins) (plugin as { prosemirrorPlugins?: TextEditorPluginDefineOptions<TOptions>['prosemirrorPlugins'] }).prosemirrorPlugins = opts.prosemirrorPlugins;\n\n return plugin;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/css.ts"],"names":[],"mappings":";AAEO,SAAS,iBAAiB,KAAA,EAAiD;AAC9E,EAAA,IAAI,KAAA,IAAS,MAAM,OAAO,IAAA;AAE1B,EAAA,MAAM,CAAA,GAAI,MAAM,IAAA,EAAK;AAErB,EAAA,IAAI,CAAA,KAAM,IAAI,OAAO,IAAA;AAIrB,EAAA,IAAI,SAAA,CAAU,IAAA,CAAK,CAAC,CAAA,EAAG,OAAO,IAAA;AAE9B,EAAA,MAAM,KAAA,GAAQ,EAAE,WAAA,EAAY;AAE5B,EAAA,IACI,KAAA,CAAM,QAAA,CAAS,MAAM,CAAA,IACrB,MAAM,QAAA,CAAS,YAAY,CAAA,IAC3B,KAAA,CAAM,SAAS,aAAa,CAAA,IAC5B,KAAA,CAAM,QAAA,CAAS,UAAU,CAAA,IACzB,KAAA,CAAM,QAAA,CAAS,cAAc,KAC7B,KAAA,CAAM,QAAA,CAAS,SAAS,CAAA,IACxB,MAAM,QAAA,CAAS,IAAI,CAAA,IACnB,KAAA,CAAM,SAAS,GAAG,CAAA,IAClB,KAAA,CAAM,QAAA,CAAS,GAAG,CAAA,EACpB;AACE,IAAA,OAAO,IAAA;AAAA,EACX;AAEA,EAAA,OAAO,CAAA;AACX","file":"chunk-C2TRJCIH.mjs","sourcesContent":["// Rejects a CSS value that could inject extra declarations, trigger requests,\n// or break out of the style attribute / serialized markup (mXSS hardening).\nexport function sanitizeCssValue(value: string | null | undefined): string | null {\n if (value == null) return null;\n\n const v = value.trim();\n\n if (v === '') return null;\n\n // Markup/template breakout chars (angle brackets, backtick, backslash).\n // Quotes are allowed: they are legitimate CSS string delimiters (e.g. font-family).\n if (/[<>`\\\\]/.test(v)) return null;\n\n const lower = v.toLowerCase();\n\n if (\n lower.includes('url(') ||\n lower.includes('expression') ||\n lower.includes('javascript:') ||\n lower.includes('behavior') ||\n lower.includes('-moz-binding') ||\n lower.includes('@import') ||\n lower.includes('/*') ||\n lower.includes('}') ||\n lower.includes(';')\n ) {\n return null;\n }\n\n return v;\n}\n"]}
|
|
@@ -29,5 +29,5 @@ var defaultTextEditorProps = {
|
|
|
29
29
|
};
|
|
30
30
|
|
|
31
31
|
export { defaultTextEditorProps };
|
|
32
|
-
//# sourceMappingURL=chunk-
|
|
33
|
-
//# sourceMappingURL=chunk-
|
|
32
|
+
//# sourceMappingURL=chunk-C6CEVLOL.mjs.map
|
|
33
|
+
//# sourceMappingURL=chunk-C6CEVLOL.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/texteditor.props.ts"],"names":[],"mappings":";AAEO,IAAM,sBAAA,GAA0C;AAAA,EACnD,KAAA,EAAO,IAAA;AAAA,EACP,IAAA,EAAM,IAAA;AAAA,EACN,WAAA,EAAa,IAAA;AAAA,EACb,SAAA,EAAW,MAAA;AAAA,EACX,cAAA,EAAgB,MAAA;AAAA,EAChB,gBAAA,EAAkB,IAAA;AAAA,EAClB,oBAAA,EAAsB,IAAA;AAAA,EACtB,iBAAA,EAAmB,MAAA;AAAA,EACnB,oBAAA,EAAsB,MAAA;AAAA,EACtB,iBAAA,EAAmB,IAAA;AAAA,EACnB,gBAAA,EAAkB,IAAA;AAAA,EAClB,oBAAA,EAAsB,IAAA;AAAA,EACtB,mBAAA,EAAqB,IAAA;AAAA,EACrB,SAAA,EAAW,KAAA;AAAA,EACX,QAAA,EAAU,KAAA;AAAA,EACV,mBAAA,EAAqB,IAAA;AAAA,EACrB,mBAAA,EAAqB,IAAA;AAAA,EACrB,uBAAA,EAAyB,IAAA;AAAA,EACzB,qBAAA,EAAuB,IAAA;AAAA,EACvB,aAAA,EAAe,MAAA;AAAA,EACf,kBAAA,EAAoB,MAAA;AAAA,EACpB,qBAAA,EAAuB,MAAA;AAAA,EACvB,cAAA,EAAgB,MAAA;AAAA,EAChB,kBAAA,EAAoB,MAAA;AAAA,EACpB,eAAA,EAAiB,MAAA;AAAA,EACjB,OAAA,EAAS;AACb","file":"chunk-C6CEVLOL.mjs","sourcesContent":["import type { TextEditorProps } from '@primeui/texteditor-types';\n\nexport const defaultTextEditorProps: TextEditorProps = {\n value: null,\n mode: null,\n placeholder: null,\n ariaLabel: undefined,\n ariaLabelledby: undefined,\n slashPlaceholder: null,\n checklistPlaceholder: null,\n allowedImageTypes: undefined,\n allowedDocumentTypes: undefined,\n imageMaxFileCount: null,\n imageMaxFileSize: null,\n documentMaxFileCount: null,\n documentMaxFileSize: null,\n navigator: false,\n markdown: false,\n valueChangeDebounce: null,\n minTableColumnWidth: null,\n defaultTableColumnWidth: null,\n defaultHighlightColor: null,\n uploadHandler: undefined,\n imageUploadHandler: undefined,\n documentUploadHandler: undefined,\n mentionHandler: undefined,\n mentionFilterField: undefined,\n mentionTemplate: undefined,\n plugins: undefined\n};\n"]}
|
|
@@ -23,5 +23,5 @@ var TEXT_EDITOR_ALLOWED_TYPES = {
|
|
|
23
23
|
};
|
|
24
24
|
|
|
25
25
|
export { TEXT_EDITOR_ALLOWED_TYPES, TEXT_EDITOR_FILE_SIZE };
|
|
26
|
-
//# sourceMappingURL=chunk-
|
|
27
|
-
//# sourceMappingURL=chunk-
|
|
26
|
+
//# sourceMappingURL=chunk-DAVC2Z22.mjs.map
|
|
27
|
+
//# sourceMappingURL=chunk-DAVC2Z22.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/texteditor.constants.ts"],"names":[],"mappings":";AAOA,IAAM,EAAA,GAAK,IAAA;AACX,IAAM,KAAK,EAAA,GAAK,IAAA;AAMT,IAAM,qBAAA,GAAwB;AAAA,EACjC,QAAQ,CAAA,GAAI,EAAA;AAAA,EACZ,QAAQ,CAAA,GAAI,EAAA;AAAA,EACZ,UAAU,CAAA,GAAI,EAAA;AAAA,EACd,SAAS,CAAA,GAAI,EAAA;AAAA,EACb,SAAS,CAAA,GAAI,EAAA;AAAA,EACb,QAAQ,CAAA,GAAI,EAAA;AAAA,EACZ,UAAU,CAAA,GAAI,EAAA;AAAA,EACd,UAAU,CAAA,GAAI,EAAA;AAAA,EACd,SAAS,CAAA,GAAI,EAAA;AAAA,EACb,QAAQ,EAAA,GAAK,EAAA;AAAA,EACb,gBAAgB,EAAA,GAAK,EAAA;AAAA,EACrB,UAAU,EAAA,GAAK;AACnB;AAMO,IAAM,yBAAA,GAA4B;AAAA,EACrC,UAAA,EAAY,SAAA;AAAA,EACZ,aAAA,EAAe,2CAAA;AAAA,EACf,gBAAA,EAAkB,sDAAA;AAAA,EAClB,kBAAA,EAAoB;AACxB","file":"chunk-DAVC2Z22.mjs","sourcesContent":["/**\n * Public, named constants — exported from `@primeui/texteditor-core` and\n * re-exported by every framework adapter. Demos and customer code should\n * use these instead of inline magic numbers so call sites stay readable\n * and the units of measure are obvious from the identifier.\n */\n\nconst KB = 1024;\nconst MB = KB * 1024;\n\n/**\n * File-size constants in bytes. Use these for `:maxFileSize` on\n * `<TextEditor.ImageUpload>` and `<TextEditor.DocumentUpload>`.\n */\nexport const TEXT_EDITOR_FILE_SIZE = {\n ONE_MB: 1 * MB,\n TWO_MB: 2 * MB,\n THREE_MB: 3 * MB,\n FOUR_MB: 4 * MB,\n FIVE_MB: 5 * MB,\n SIX_MB: 6 * MB,\n SEVEN_MB: 7 * MB,\n EIGHT_MB: 8 * MB,\n NINE_MB: 9 * MB,\n TEN_MB: 10 * MB,\n TWENTY_FIVE_MB: 25 * MB,\n FIFTY_MB: 50 * MB\n} as const;\n\n/**\n * Default upload allow-lists. Override these per-instance via\n * `:allowedTypes` when the application has stricter or laxer rules.\n */\nexport const TEXT_EDITOR_ALLOWED_TYPES = {\n IMAGES_ANY: 'image/*',\n IMAGES_COMMON: 'image/jpeg,image/png,image/gif,image/webp',\n DOCUMENTS_OFFICE: '.pdf,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.txt,.csv,.zip',\n DOCUMENTS_PDF_ONLY: '.pdf'\n} as const;\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { textEditorClasses } from './chunk-
|
|
1
|
+
import { textEditorClasses } from './chunk-25Y5HLDY.mjs';
|
|
2
2
|
import { Plugin } from 'prosemirror-state';
|
|
3
3
|
import { DecorationSet, Decoration } from 'prosemirror-view';
|
|
4
4
|
|
|
@@ -61,5 +61,5 @@ function createPlaceholderPlugin(options) {
|
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
export { createPlaceholderPlugin };
|
|
64
|
-
//# sourceMappingURL=chunk-
|
|
65
|
-
//# sourceMappingURL=chunk-
|
|
64
|
+
//# sourceMappingURL=chunk-F2THMQFM.mjs.map
|
|
65
|
+
//# sourceMappingURL=chunk-F2THMQFM.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/plugins/placeholder.ts"],"names":[],"mappings":"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","file":"chunk-F2THMQFM.mjs","sourcesContent":["import { Plugin } from 'prosemirror-state';\nimport { Decoration, DecorationSet } from 'prosemirror-view';\nimport { textEditorClasses as classes } from '../texteditor.classes';\n\ninterface PlaceholderOptions {\n text: () => string | null | undefined;\n blockMode?: boolean;\n}\n\nexport function createPlaceholderPlugin(options: PlaceholderOptions) {\n return new Plugin({\n props: {\n decorations(state) {\n const text = options.text();\n\n if (!text) return DecorationSet.empty;\n\n const { doc, selection } = state;\n\n if (options.blockMode) {\n // Block mode: show placeholder widget inside the focused empty block\n const decorations: Decoration[] = [];\n const { $from } = selection;\n\n // Find the position inside the empty textblock to place the widget\n const addPlaceholderWidget = (insidePos: number) => {\n const widget = Decoration.widget(\n insidePos,\n () => {\n const span = document.createElement('span');\n\n span.className = classes.blockPlaceholder;\n span.textContent = text!;\n\n return span;\n },\n { side: -1 }\n );\n\n decorations.push(widget);\n };\n\n const compoundTypes = ['bullet_list', 'ordered_list', 'blockquote'];\n\n doc.forEach((node, pos) => {\n // Only show on the focused block\n const isFocused = $from.pos >= pos && $from.pos <= pos + node.nodeSize;\n\n if (!isFocused) return;\n\n if (node.isTextblock && node.content.size === 0) {\n // Direct textblock (paragraph, heading, code_block)\n addPlaceholderWidget(pos + 1);\n } else if (compoundTypes.includes(node.type.name) && node.firstChild) {\n // Lists/blockquote — find the innermost empty textblock\n let child = node.firstChild;\n let childPos = pos + 1;\n\n while (child && !child.isTextblock) {\n childPos += 1;\n child = child.firstChild!;\n }\n\n if (child?.isTextblock && child.content.size === 0) {\n addPlaceholderWidget(childPos + 1);\n }\n }\n });\n\n return decorations.length > 0 ? DecorationSet.create(doc, decorations) : DecorationSet.empty;\n }\n\n // Simple mode: only show when document is empty (single empty paragraph)\n if (doc.childCount > 1) return DecorationSet.empty;\n\n const firstChild = doc.firstChild;\n\n if (!firstChild || firstChild.type.name !== 'paragraph' || firstChild.content.size > 0) {\n return DecorationSet.empty;\n }\n\n const decoration = Decoration.node(0, firstChild.nodeSize, {\n class: classes.placeholder,\n 'data-placeholder': text\n });\n\n return DecorationSet.create(doc, [decoration]);\n }\n }\n });\n}\n"]}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
import { createMentionPlugin, insertMention } from './chunk-
|
|
2
|
-
import { createEditorKeymap, keymap, baseKeymap } from './chunk-
|
|
3
|
-
import { createMarkdownInputRules } from './chunk-
|
|
4
|
-
import { createContextToolbarPlugin } from './chunk-
|
|
5
|
-
import { createColumnWidthPinPlugin } from './chunk-
|
|
6
|
-
import { createTrailingNodePlugin } from './chunk-
|
|
7
|
-
import { createTableOverlayPlugin } from './chunk-
|
|
8
|
-
import { createSlashPlugin, executeSlashCommand } from './chunk-
|
|
9
|
-
import { addProseMirrorPlugin, removeProseMirrorPlugin } from './chunk-
|
|
10
|
-
import { createPlaceholderPlugin } from './chunk-
|
|
11
|
-
import { createMentionController } from './chunk-
|
|
12
|
-
import { defaultTextEditorProps } from './chunk-
|
|
13
|
-
import { defaultTextEditorRefs } from './chunk-
|
|
14
|
-
import { defaultTextEditorState } from './chunk-
|
|
15
|
-
import { htmlExceedsMaxDepth, htmlToSlice, htmlToDoc, htmlToInertFragment } from './chunk-
|
|
16
|
-
import { createEditorSchema } from './chunk-
|
|
17
|
-
import { selectRow, selectColumn, createCommands, createTableCellCommands, createTableRowCommands, createTableColumnCommands } from './chunk-
|
|
18
|
-
import { getSelectionPosition, getMarkAttrs, isNodeActive, isMarkActive } from './chunk-
|
|
19
|
-
import { createSelectionHighlightPlugin, preserveSelection } from './chunk-
|
|
20
|
-
import { docToHtml, withoutPlaceholders, nodeToHtml } from './chunk-
|
|
21
|
-
import { sanitizeImageUrl, sanitizeUrl } from './chunk-
|
|
22
|
-
import { textEditorClasses } from './chunk-
|
|
1
|
+
import { createMentionPlugin, insertMention } from './chunk-4BI7WWVV.mjs';
|
|
2
|
+
import { createEditorKeymap, keymap, baseKeymap } from './chunk-QZUFYVD5.mjs';
|
|
3
|
+
import { createMarkdownInputRules } from './chunk-LHZDU6AA.mjs';
|
|
4
|
+
import { createContextToolbarPlugin } from './chunk-PSOP5GNT.mjs';
|
|
5
|
+
import { createColumnWidthPinPlugin } from './chunk-SFUE4QBU.mjs';
|
|
6
|
+
import { createTrailingNodePlugin } from './chunk-XOMJOYJG.mjs';
|
|
7
|
+
import { createTableOverlayPlugin } from './chunk-KA3KNPLZ.mjs';
|
|
8
|
+
import { createSlashPlugin, executeSlashCommand } from './chunk-NZCWIEXE.mjs';
|
|
9
|
+
import { addProseMirrorPlugin, removeProseMirrorPlugin } from './chunk-MSPB65AH.mjs';
|
|
10
|
+
import { createPlaceholderPlugin } from './chunk-F2THMQFM.mjs';
|
|
11
|
+
import { createMentionController } from './chunk-UN74246B.mjs';
|
|
12
|
+
import { defaultTextEditorProps } from './chunk-C6CEVLOL.mjs';
|
|
13
|
+
import { defaultTextEditorRefs } from './chunk-VXO6D7N5.mjs';
|
|
14
|
+
import { defaultTextEditorState } from './chunk-4NWX3EPS.mjs';
|
|
15
|
+
import { htmlExceedsMaxDepth, htmlToSlice, htmlToDoc, htmlToInertFragment } from './chunk-LYB4TGKX.mjs';
|
|
16
|
+
import { createEditorSchema } from './chunk-QMEKZ64Z.mjs';
|
|
17
|
+
import { selectRow, selectColumn, createCommands, createTableCellCommands, createTableRowCommands, createTableColumnCommands } from './chunk-MMY4F74E.mjs';
|
|
18
|
+
import { getSelectionPosition, getMarkAttrs, isNodeActive, isMarkActive } from './chunk-4C4R23A3.mjs';
|
|
19
|
+
import { createSelectionHighlightPlugin, preserveSelection } from './chunk-XO4UUELZ.mjs';
|
|
20
|
+
import { docToHtml, withoutPlaceholders, nodeToHtml } from './chunk-UORFAHNO.mjs';
|
|
21
|
+
import { sanitizeImageUrl, sanitizeUrl } from './chunk-MMU3VGMT.mjs';
|
|
22
|
+
import { textEditorClasses } from './chunk-25Y5HLDY.mjs';
|
|
23
23
|
import { defineComponent } from '@primeui/core';
|
|
24
24
|
import { dropCursor } from 'prosemirror-dropcursor';
|
|
25
25
|
import { gapCursor } from 'prosemirror-gapcursor';
|
|
@@ -217,22 +217,28 @@ function createBlockTableNodeView(node, view, getPos, options) {
|
|
|
217
217
|
contentWrapper.className = textEditorClasses.blockContent;
|
|
218
218
|
contentWrapper.appendChild(tableNV.dom);
|
|
219
219
|
dom.appendChild(contentWrapper);
|
|
220
|
-
|
|
220
|
+
const onMouseEnter = () => {
|
|
221
221
|
const pos = getPos();
|
|
222
222
|
if (pos != null) options.onBlockHoverChange(posToBlockIndex(view.state.doc, pos), dom);
|
|
223
|
-
}
|
|
224
|
-
|
|
223
|
+
};
|
|
224
|
+
const onMouseLeave = (event) => {
|
|
225
225
|
const related = event.relatedTarget;
|
|
226
226
|
if (related?.closest(`.${textEditorClasses.blockControls}`)) return;
|
|
227
227
|
if (related?.closest(`.${textEditorClasses.block}`)) return;
|
|
228
228
|
if (related?.closest(`.${textEditorClasses.popoverMenu}`)) return;
|
|
229
229
|
options.onBlockHoverChange(-1, null);
|
|
230
|
-
}
|
|
230
|
+
};
|
|
231
|
+
dom.addEventListener("mouseenter", onMouseEnter);
|
|
232
|
+
dom.addEventListener("mouseleave", onMouseLeave);
|
|
231
233
|
return {
|
|
232
234
|
dom,
|
|
233
235
|
contentDOM: tableNV.contentDOM,
|
|
234
236
|
update: tableNV.update?.bind(tableNV),
|
|
235
|
-
ignoreMutation: tableNV.ignoreMutation?.bind(tableNV)
|
|
237
|
+
ignoreMutation: tableNV.ignoreMutation?.bind(tableNV),
|
|
238
|
+
destroy() {
|
|
239
|
+
dom.removeEventListener("mouseenter", onMouseEnter);
|
|
240
|
+
dom.removeEventListener("mouseleave", onMouseLeave);
|
|
241
|
+
}
|
|
236
242
|
};
|
|
237
243
|
}
|
|
238
244
|
|
|
@@ -246,7 +252,7 @@ function checkListItemNodeView(node, view, getPos) {
|
|
|
246
252
|
checkbox.type = "checkbox";
|
|
247
253
|
checkbox.checked = node.attrs.checked;
|
|
248
254
|
checkbox.setAttribute("aria-label", node.textContent || "To-do item");
|
|
249
|
-
|
|
255
|
+
const onChange = () => {
|
|
250
256
|
const pos = getPos();
|
|
251
257
|
if (pos == null) return;
|
|
252
258
|
const tr = view.state.tr.setNodeMarkup(pos, null, {
|
|
@@ -254,7 +260,8 @@ function checkListItemNodeView(node, view, getPos) {
|
|
|
254
260
|
checked: checkbox.checked
|
|
255
261
|
});
|
|
256
262
|
view.dispatch(tr);
|
|
257
|
-
}
|
|
263
|
+
};
|
|
264
|
+
checkbox.addEventListener("change", onChange);
|
|
258
265
|
const span = document.createElement("span");
|
|
259
266
|
label.appendChild(checkbox);
|
|
260
267
|
label.appendChild(span);
|
|
@@ -270,6 +277,9 @@ function checkListItemNodeView(node, view, getPos) {
|
|
|
270
277
|
checkbox.checked = updatedNode.attrs.checked;
|
|
271
278
|
checkbox.setAttribute("aria-label", updatedNode.textContent || "To-do item");
|
|
272
279
|
return true;
|
|
280
|
+
},
|
|
281
|
+
destroy() {
|
|
282
|
+
checkbox.removeEventListener("change", onChange);
|
|
273
283
|
}
|
|
274
284
|
};
|
|
275
285
|
}
|
|
@@ -1564,6 +1574,8 @@ function useTextEditorLogic(instance) {
|
|
|
1564
1574
|
onUnmounted(() => {
|
|
1565
1575
|
flushValueChange();
|
|
1566
1576
|
navigatorModule.cancel();
|
|
1577
|
+
uploadModule.dismissImageUpload();
|
|
1578
|
+
uploadModule.dismissDocumentUpload();
|
|
1567
1579
|
pendingMouseUpRemover?.();
|
|
1568
1580
|
pendingMouseUpRemover = null;
|
|
1569
1581
|
if (view) {
|
|
@@ -1887,5 +1899,5 @@ var createTextEditor = defineComponent("TextEditor", ({ getCurrentInstance, defi
|
|
|
1887
1899
|
});
|
|
1888
1900
|
|
|
1889
1901
|
export { createTextEditor };
|
|
1890
|
-
//# sourceMappingURL=chunk-
|
|
1891
|
-
//# sourceMappingURL=chunk-
|
|
1902
|
+
//# sourceMappingURL=chunk-F4KBJIZJ.mjs.map
|
|
1903
|
+
//# sourceMappingURL=chunk-F4KBJIZJ.mjs.map
|