@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/plugins/keymap.ts"],"names":[],"mappings":"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","file":"chunk-QZUFYVD5.mjs","sourcesContent":["import { keymap } from 'prosemirror-keymap';\nimport { undo, redo } from 'prosemirror-history';\nimport { toggleMark, selectAll, baseKeymap, setBlockType, wrapIn, lift } from 'prosemirror-commands';\nimport type { Command } from 'prosemirror-state';\nimport { splitListItem, liftListItem, sinkListItem, wrapInList } from 'prosemirror-schema-list';\nimport { goToNextCell } from 'prosemirror-tables';\nimport { TextSelection, AllSelection } from 'prosemirror-state';\nimport type { Node as PMNode, NodeType, Schema } from 'prosemirror-model';\nimport { isNodeActive } from '../state/selection';\nimport { DEFAULT_HIGHLIGHT_COLOR } from '../commands/constants';\n\n// Heading <-> paragraph toggle by level (same level toggles off, different switches).\nfunction toggleHeadingCmd(schema: Schema, level: number): Command {\n return (state, dispatch) => {\n const active = isNodeActive(state, schema.nodes.heading, { level });\n\n return active ? setBlockType(schema.nodes.paragraph)(state, dispatch) : setBlockType(schema.nodes.heading, { level })(state, dispatch);\n };\n}\n\n// Toggle a list on/off: wrap when not active, lift when already in that list.\nfunction toggleListCmd(schema: Schema, listType: NodeType): Command {\n return (state, dispatch) => {\n if (isNodeActive(state, listType)) {\n return liftListItem(schema.nodes.list_item)(state, dispatch) || liftListItem(schema.nodes.check_list_item)(state, dispatch);\n }\n\n return wrapInList(listType)(state, dispatch);\n };\n}\n\nfunction toggleBlockquoteCmd(schema: Schema): Command {\n return (state, dispatch) => (isNodeActive(state, schema.nodes.blockquote) ? lift(state, dispatch) : wrapIn(schema.nodes.blockquote)(state, dispatch));\n}\n\nfunction toggleCodeBlockCmd(schema: Schema): Command {\n return (state, dispatch) => {\n const active = isNodeActive(state, schema.nodes.code_block);\n\n return setBlockType(active ? schema.nodes.paragraph : schema.nodes.code_block)(state, dispatch);\n };\n}\n\n// Toggle a default highlight (textStyle backgroundColor) over the selection.\nfunction toggleHighlightCmd(schema: Schema): Command {\n return (state, dispatch) => {\n const textStyle = schema.marks.textStyle;\n\n if (!textStyle || state.selection.empty) return false;\n\n const { from, to } = state.selection;\n let active = false;\n\n state.doc.nodesBetween(from, to, (node) => {\n const mark = textStyle.isInSet(node.marks);\n\n if (mark?.attrs.backgroundColor) active = true;\n });\n\n if (dispatch) {\n const tr = state.tr;\n\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (!node.isText) return;\n\n const mark = textStyle.isInSet(node.marks);\n const next = { ...(mark?.attrs ?? {}), backgroundColor: active ? null : DEFAULT_HIGHLIGHT_COLOR };\n const start = Math.max(pos, from);\n const end = Math.min(pos + node.nodeSize, to);\n\n tr.removeMark(start, end, textStyle);\n\n if (Object.values(next).some((v) => v != null)) tr.addMark(start, end, textStyle.create(next));\n });\n\n dispatch(tr);\n }\n\n return true;\n };\n}\n\nfunction setAlignCmd(alignment: string | null): Command {\n return (state, dispatch) => {\n const { from, to } = state.selection;\n const tr = state.tr;\n let changed = false;\n\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (node.type.spec.attrs?.textAlign !== undefined) {\n tr.setNodeMarkup(pos, null, { ...node.attrs, textAlign: alignment });\n changed = true;\n }\n });\n\n if (!changed) return false;\n if (dispatch) dispatch(tr);\n\n return true;\n };\n}\n\nfunction forAnyListItem(schema: Schema, fn: (nodeType: NodeType) => Command): Command {\n const listItemCmd = fn(schema.nodes.list_item);\n const checkListItemCmd = fn(schema.nodes.check_list_item);\n\n return (state, dispatch) => listItemCmd(state, dispatch) || checkListItemCmd(state, dispatch);\n}\n\nfunction isUploadPlaceholder(schema: Schema, node: PMNode | null): boolean {\n return !!node && (node.type === schema.nodes.image_upload_placeholder || node.type === schema.nodes.document_upload_placeholder);\n}\n\n// Upload placeholders are non-selectable atoms (they own a dismiss control), so\n// they can't be selected and deleted normally. Let Backspace/Delete remove the\n// placeholder adjacent to a collapsed caret, matching normal node deletion.\nfunction deleteAdjacentPlaceholder(schema: Schema, dir: -1 | 1): Command {\n return (state, dispatch) => {\n const { $from, empty } = state.selection;\n\n if (!empty) return false;\n\n const target = dir < 0 ? $from.nodeBefore : $from.nodeAfter;\n const atBoundary = dir < 0 ? $from.parentOffset === 0 : $from.parentOffset === $from.parent.content.size;\n\n // Same-block sibling (e.g. inline) — only act when truly adjacent.\n let pos = -1;\n\n if (isUploadPlaceholder(schema, target)) {\n pos = dir < 0 ? $from.pos - target!.nodeSize : $from.pos;\n } else if (atBoundary) {\n const side = dir < 0 ? $from.before() - 1 : $from.after();\n const node = side >= 0 ? state.doc.nodeAt(side) : null;\n\n if (isUploadPlaceholder(schema, node)) pos = side;\n }\n\n if (pos < 0) return false;\n\n if (dispatch) {\n const node = state.doc.nodeAt(pos)!;\n\n dispatch(state.tr.delete(pos, pos + node.nodeSize).scrollIntoView());\n }\n\n return true;\n };\n}\n\n/**\n * Backspace on an empty list item: delete it and move cursor to end of previous item.\n * If cursor is at start of first list item, lift it out of the list.\n */\nfunction listItemBackspace(schema: Schema): Command {\n const listItemTypes = [schema.nodes.list_item, schema.nodes.check_list_item];\n\n return (state, dispatch) => {\n const { $from, empty } = state.selection;\n\n if (!empty) return false;\n\n // Find the list item we're in\n let listItemDepth = -1;\n\n for (let depth = $from.depth; depth > 0; depth--) {\n if (listItemTypes.includes($from.node(depth).type)) {\n listItemDepth = depth;\n break;\n }\n }\n\n if (listItemDepth === -1) return false;\n\n // Check if cursor is at the very start of the list item's content.\n // Structure is <li><p>text</p></li>, so cursor at start of text\n // is at $from.start(listItemDepth) + 1 (inside the <p>).\n // We check: parentOffset is 0 (start of paragraph) AND\n // the paragraph is the first child of the list item.\n const listItem = $from.node(listItemDepth);\n\n if ($from.parentOffset !== 0) return false;\n\n // Ensure we're in the first child of the list item\n if ($from.index(listItemDepth) !== 0) return false;\n\n const listDepth = listItemDepth - 1;\n const list = $from.node(listDepth);\n const indexInList = $from.index(listDepth);\n const isItemEmpty = listItem.textContent.length === 0;\n\n if (indexInList > 0) {\n // Merge this item into the previous one, preserving all of its blocks.\n if (dispatch) {\n const itemStart = $from.before(listItemDepth);\n const itemEnd = $from.after(listItemDepth);\n\n const prevItem = list.child(indexInList - 1);\n const prevItemStart = itemStart - prevItem.nodeSize;\n let lastChildOffset = 0;\n\n prevItem.forEach((child, offset) => {\n lastChildOffset = offset + child.nodeSize;\n });\n\n const joinPos = prevItemStart + 1 + lastChildOffset - 1;\n\n const tr = state.tr;\n const firstBlock = listItem.firstChild;\n const firstInline = firstBlock?.content;\n const trailingBlocks: PMNode[] = [];\n\n listItem.forEach((child, _o, i) => {\n if (i > 0) trailingBlocks.push(child);\n });\n\n tr.delete(itemStart, itemEnd);\n\n if (trailingBlocks.length > 0) {\n let at = joinPos + 1;\n\n for (const block of trailingBlocks) {\n tr.insert(at, block);\n at += block.nodeSize;\n }\n }\n\n if (firstInline && firstInline.size > 0) {\n tr.insert(joinPos, firstInline);\n }\n\n dispatch(tr.scrollIntoView());\n }\n\n return true;\n }\n\n if (isItemEmpty && list.childCount === 1) {\n // Empty first and only item: replace entire list with empty paragraph\n if (dispatch) {\n const listStart = $from.before(listDepth);\n const listEnd = $from.after(listDepth);\n\n dispatch(state.tr.replaceWith(listStart, listEnd, schema.nodes.paragraph.create()).scrollIntoView());\n }\n\n return true;\n }\n\n // First item: lift out of list\n return forAnyListItem(schema, liftListItem)(state, dispatch);\n };\n}\n\n/**\n * Notion-like select: first Mod-a selects current block, second Mod-a selects all.\n */\nfunction blockSelectAll(): Command {\n return (state, dispatch) => {\n if (state.selection instanceof AllSelection) return false;\n\n const { $from } = state.selection;\n const depth = $from.depth; // the textblock the caret is in\n const blockStart = $from.start(depth);\n const blockEnd = $from.end(depth);\n const { from, to } = state.selection;\n\n if (from === blockStart && to === blockEnd) {\n return selectAll(state, dispatch);\n }\n\n if (dispatch) {\n dispatch(state.tr.setSelection(TextSelection.create(state.doc, blockStart, blockEnd)));\n }\n\n return true;\n };\n}\n\ninterface EditorKeymapOptions {\n blockMode?: boolean;\n}\n\nexport function createEditorKeymap(schema: Schema, options?: EditorKeymapOptions) {\n const bindings: Record<string, Command> = {\n 'Mod-b': toggleMark(schema.marks.bold),\n 'Mod-i': toggleMark(schema.marks.italic),\n 'Mod-u': toggleMark(schema.marks.underline),\n 'Mod-Shift-s': toggleMark(schema.marks.strikethrough),\n 'Mod-e': toggleMark(schema.marks.code),\n 'Mod-Shift-h': toggleHighlightCmd(schema),\n 'Mod-,': toggleMark(schema.marks.subscript),\n 'Mod-.': toggleMark(schema.marks.superscript),\n 'Mod-z': undo,\n 'Mod-y': redo,\n 'Mod-Shift-z': redo,\n 'Mod-Alt-0': setBlockType(schema.nodes.paragraph),\n 'Mod-Alt-1': toggleHeadingCmd(schema, 1),\n 'Mod-Alt-2': toggleHeadingCmd(schema, 2),\n 'Mod-Alt-3': toggleHeadingCmd(schema, 3),\n 'Mod-Alt-4': toggleHeadingCmd(schema, 4),\n 'Mod-Alt-5': toggleHeadingCmd(schema, 5),\n 'Mod-Alt-6': toggleHeadingCmd(schema, 6),\n 'Mod-Shift-7': toggleListCmd(schema, schema.nodes.ordered_list),\n 'Mod-Shift-8': toggleListCmd(schema, schema.nodes.bullet_list),\n 'Mod-Shift-9': toggleListCmd(schema, schema.nodes.check_list),\n 'Mod-Shift-b': toggleBlockquoteCmd(schema),\n 'Mod-Alt-c': toggleCodeBlockCmd(schema),\n 'Mod-Shift-l': setAlignCmd(null),\n 'Mod-Shift-e': setAlignCmd('center'),\n 'Mod-Shift-r': setAlignCmd('right'),\n 'Mod-Shift-j': setAlignCmd('justify'),\n Enter: forAnyListItem(schema, splitListItem),\n Backspace: (state, dispatch) => deleteAdjacentPlaceholder(schema, -1)(state, dispatch) || listItemBackspace(schema)(state, dispatch),\n Delete: deleteAdjacentPlaceholder(schema, 1),\n Tab: (state, dispatch) => goToNextCell(1)(state, dispatch) || forAnyListItem(schema, sinkListItem)(state, dispatch),\n 'Shift-Tab': (state, dispatch) => goToNextCell(-1)(state, dispatch) || forAnyListItem(schema, liftListItem)(state, dispatch)\n };\n\n if (options?.blockMode) {\n bindings['Mod-a'] = blockSelectAll();\n }\n\n return keymap(bindings);\n}\n\nexport { baseKeymap, keymap, blockSelectAll };\n"]}
|
|
@@ -79,5 +79,5 @@ function clampToViewport(left, elWidth, margin) {
|
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
export { clampToViewport, computeBlockControlsStyle, computeDropIndicatorStyle, computeDropTargetIndex, inlineStartAbsolute, inlineStartFixed, setInlineStart };
|
|
82
|
-
//# sourceMappingURL=chunk-
|
|
83
|
-
//# sourceMappingURL=chunk-
|
|
82
|
+
//# sourceMappingURL=chunk-RE46J3VH.mjs.map
|
|
83
|
+
//# sourceMappingURL=chunk-RE46J3VH.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/position.ts"],"names":[],"mappings":"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","file":"chunk-RE46J3VH.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"]}
|
|
@@ -48,5 +48,5 @@ function pinTable(table, tablePos, view, tr) {
|
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
export { createColumnWidthPinPlugin };
|
|
51
|
-
//# sourceMappingURL=chunk-
|
|
52
|
-
//# sourceMappingURL=chunk-
|
|
51
|
+
//# sourceMappingURL=chunk-SFUE4QBU.mjs.map
|
|
52
|
+
//# sourceMappingURL=chunk-SFUE4QBU.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/plugins/columnWidthPin.ts"],"names":["tr"],"mappings":";;;;AAOO,SAAS,0BAAA,GAA6B;AACzC,EAAA,IAAI,IAAA,GAA0B,IAAA;AAE9B,EAAA,OAAO,IAAI,MAAA,CAAO;AAAA,IACd,KAAK,UAAA,EAAY;AACb,MAAA,IAAA,GAAO,UAAA;AAEP,MAAA,OAAO;AAAA,QACH,OAAA,GAAU;AACN,UAAA,IAAA,GAAO,IAAA;AAAA,QACX;AAAA,OACJ;AAAA,IACJ,CAAA;AAAA,IACA,iBAAA,CAAkB,YAAA,EAAc,SAAA,EAAW,QAAA,EAAU;AAEjD,MAAA,MAAM,aAAA,GAAgB,aAAa,IAAA,CAAK,CAACA,QAAOA,GAAAA,CAAG,OAAA,CAAQ,uBAAuB,CAAA,EAAG,WAAW,CAAA;AAEhG,MAAA,IAAI,CAAC,aAAA,IAAiB,CAAC,IAAA,EAAM,OAAO,IAAA;AAEpC,MAAA,MAAM,SAAA,GAAY,cAAA,CAAe,QAAA,CAAS,MAAM,CAAA,CAAE,KAAA;AAClD,MAAA,MAAM,KAAK,QAAA,CAAS,EAAA;AACpB,MAAA,IAAI,OAAA,GAAU,KAAA;AAEd,MAAA,QAAA,CAAS,GAAA,CAAI,WAAA,CAAY,CAAC,IAAA,EAAM,GAAA,KAAQ;AACpC,QAAA,IAAI,IAAA,CAAK,IAAA,KAAS,SAAA,EAAW,OAAO,KAAA;AAEpC,QAAA,IAAI,SAAS,IAAA,EAAM,GAAA,EAAK,IAAA,EAAO,EAAE,GAAG,OAAA,GAAU,IAAA;AAE9C,QAAA,OAAO,KAAA;AAAA,MACX,CAAC,CAAA;AAED,MAAA,OAAO,UAAU,EAAA,GAAK,IAAA;AAAA,IAC1B;AAAA,GACH,CAAA;AACL;AAGA,SAAS,QAAA,CAAS,KAAA,EAAa,QAAA,EAAkB,IAAA,EAAkB,EAAA,EAA0B;AACzF,EAAA,MAAM,GAAA,GAAM,QAAA,CAAS,GAAA,CAAI,KAAK,CAAA;AAC9B,EAAA,MAAM,QAAQ,QAAA,GAAW,CAAA;AACzB,EAAA,IAAI,OAAA,GAAU,KAAA;AAEd,EAAA,KAAA,IAAS,GAAA,GAAM,CAAA,EAAG,GAAA,GAAM,GAAA,CAAI,OAAO,GAAA,EAAA,EAAO;AACtC,IAAA,MAAM,OAAA,GAAU,GAAA,CAAI,GAAA,CAAI,GAAG,CAAA;AAC3B,IAAA,MAAM,IAAA,GAAO,KAAA,CAAM,MAAA,CAAO,OAAO,CAAA;AAEjC,IAAA,IAAI,CAAC,IAAA,IAAA,CAAS,IAAA,CAAK,KAAA,CAAM,OAAA,IAAW,OAAO,CAAA,EAAG;AAC9C,IAAA,IAAI,KAAK,KAAA,CAAM,QAAA,IAAY,KAAK,KAAA,CAAM,QAAA,CAAS,CAAC,CAAA,EAAG;AAEnD,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,OAAA,CAAQ,KAAA,GAAQ,OAAO,CAAA;AACxC,IAAA,MAAM,KAAA,GAAQ,GAAA,EAAK,qBAAA,EAAsB,CAAE,KAAA;AAE3C,IAAA,IAAI,KAAA,IAAS,QAAQ,CAAA,EAAG;AACpB,MAAA,EAAA,CAAG,gBAAA,CAAiB,QAAQ,OAAA,EAAS,UAAA,EAAY,CAAC,IAAA,CAAK,KAAA,CAAM,KAAK,CAAC,CAAC,CAAA;AACpE,MAAA,OAAA,GAAU,IAAA;AAAA,IACd;AAAA,EACJ;AAEA,EAAA,OAAO,OAAA;AACX","file":"chunk-SFUE4QBU.mjs","sourcesContent":["import type { Node } from 'prosemirror-model';\nimport { Plugin, type Transaction } from 'prosemirror-state';\nimport type { EditorView } from 'prosemirror-view';\nimport { columnResizingPluginKey, TableMap, tableNodeTypes } from 'prosemirror-tables';\n\n// On resize start, pin every unsized column to its rendered width so only the\n// dragged column changes (otherwise unsized columns jump to defaultCellMinWidth).\nexport function createColumnWidthPinPlugin() {\n let view: EditorView | null = null;\n\n return new Plugin({\n view(editorView) {\n view = editorView;\n\n return {\n destroy() {\n view = null;\n }\n };\n },\n appendTransaction(transactions, _oldState, newState) {\n // The columnResizing plugin sets `setDragging` meta on mousedown.\n const startedResize = transactions.some((tr) => tr.getMeta(columnResizingPluginKey)?.setDragging);\n\n if (!startedResize || !view) return null;\n\n const tableType = tableNodeTypes(newState.schema).table;\n const tr = newState.tr;\n let changed = false;\n\n newState.doc.descendants((node, pos) => {\n if (node.type !== tableType) return false;\n\n if (pinTable(node, pos, view!, tr)) changed = true;\n\n return false; // tables don't nest\n });\n\n return changed ? tr : null;\n }\n });\n}\n\n/** Pin each unsized, single-column cell of a table to its rendered width. */\nfunction pinTable(table: Node, tablePos: number, view: EditorView, tr: Transaction): boolean {\n const map = TableMap.get(table);\n const start = tablePos + 1;\n let changed = false;\n\n for (let col = 0; col < map.width; col++) {\n const cellRel = map.map[col]; // first row's cell in this column\n const cell = table.nodeAt(cellRel);\n\n if (!cell || (cell.attrs.colspan ?? 1) !== 1) continue;\n if (cell.attrs.colwidth && cell.attrs.colwidth[0]) continue;\n\n const dom = view.nodeDOM(start + cellRel) as HTMLElement | null;\n const width = dom?.getBoundingClientRect().width;\n\n if (width && width > 0) {\n tr.setNodeAttribute(start + cellRel, 'colwidth', [Math.round(width)]);\n changed = true;\n }\n }\n\n return changed;\n}\n"]}
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
var DEFAULT_HIGHLIGHT_COLOR = "rgba(242, 201, 76, 0.4)";
|
|
3
3
|
|
|
4
4
|
export { DEFAULT_HIGHLIGHT_COLOR };
|
|
5
|
-
//# sourceMappingURL=chunk-
|
|
6
|
-
//# sourceMappingURL=chunk-
|
|
5
|
+
//# sourceMappingURL=chunk-UHENKXGQ.mjs.map
|
|
6
|
+
//# sourceMappingURL=chunk-UHENKXGQ.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/commands/constants.ts"],"names":[],"mappings":";AAGO,IAAM,uBAAA,GAA0B","file":"chunk-UHENKXGQ.mjs","sourcesContent":["// Default one-click highlight color (a soft yellow). The single source of truth\n// for the highlight command, keymap shortcut, and the \"==\" markdown input rule.\n// Overridable per-editor via the `defaultHighlightColor` prop.\nexport const DEFAULT_HIGHLIGHT_COLOR = 'rgba(242, 201, 76, 0.4)';\n"]}
|
|
@@ -33,5 +33,5 @@ function createMentionController(opts) {
|
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
export { createMentionController };
|
|
36
|
-
//# sourceMappingURL=chunk-
|
|
37
|
-
//# sourceMappingURL=chunk-
|
|
36
|
+
//# sourceMappingURL=chunk-UN74246B.mjs.map
|
|
37
|
+
//# sourceMappingURL=chunk-UN74246B.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/plugins/mentionController.ts"],"names":[],"mappings":";AAaO,SAAS,wBAAwB,IAAA,EAAgC;AACpE,EAAA,IAAI,QAAmB,EAAC;AACxB,EAAA,IAAI,MAAA,GAAS,KAAA;AACb,EAAA,IAAI,KAAA,GAAQ,CAAA;AAEZ,EAAA,OAAO;AAAA,IACH,MAAM,SAAS,MAAA,EAAsC;AACjD,MAAA,MAAM,IAAI,EAAE,KAAA;AAEZ,MAAA,IAAI,CAAC,OAAO,MAAA,EAAQ;AAChB,QAAA,MAAA,GAAS,KAAA;AACT,QAAA,KAAA,GAAQ,EAAC;AACT,QAAA,IAAA,CAAK,KAAK,MAAM,CAAA;AAEhB,QAAA;AAAA,MACJ;AAEA,MAAA,IAAI,CAAC,MAAA,EAAQ;AACT,QAAA,MAAM,OAAA,GAAU,KAAK,UAAA,EAAW;AAEhC,QAAA,IAAI,OAAA,EAAS;AACT,UAAA,MAAM,OAAA,GAAU,MAAM,OAAA,EAAQ;AAE9B,UAAA,IAAI,MAAM,KAAA,EAAO;AAEjB,UAAA,KAAA,GAAQ,OAAA;AAAA,QACZ;AAEA,QAAA,MAAA,GAAS,IAAA;AAAA,MACb;AAEA,MAAA,MAAM,KAAA,GAAQ,KAAK,cAAA,EAAe;AAClC,MAAA,MAAM,WAAW,MAAA,CAAO,IAAA,GAClB,KAAA,CAAM,MAAA,CAAO,CAAC,IAAA,KAAS;AACnB,QAAA,IAAI,CAAC,IAAA,IAAQ,OAAO,IAAA,KAAS,UAAU,OAAO,KAAA;AAE9C,QAAA,OAAO,MAAA,CAAQ,IAAA,CAAiC,KAAK,CAAA,IAAK,EAAE,CAAA,CACvD,WAAA,EAAY,CACZ,QAAA,CAAS,MAAA,CAAO,IAAA,CAAK,WAAA,EAAa,CAAA;AAAA,MAC3C,CAAC,CAAA,GACD,KAAA;AAEN,MAAA,IAAI,MAAM,KAAA,EAAO;AAEjB,MAAA,IAAA,CAAK,KAAK,EAAE,GAAG,MAAA,EAAQ,KAAA,EAAO,UAAU,CAAA;AAAA,IAC5C;AAAA,GACJ;AACJ","file":"chunk-UN74246B.mjs","sourcesContent":["export interface MentionUpdate {\n active: boolean;\n text: string;\n}\n\nexport interface MentionControllerOptions {\n getHandler: () => (() => unknown[] | Promise<unknown[]>) | undefined;\n getFilterField: () => string;\n emit: (update: MentionUpdate & { items?: unknown[] }) => void;\n}\n\n// Race-safe mention state machine: fetches items once per @-session, drops stale\n// fetches, and never leaves the list permanently empty after a superseded fetch.\nexport function createMentionController(opts: MentionControllerOptions) {\n let items: unknown[] = [];\n let active = false;\n let token = 0;\n\n return {\n async onUpdate(update: MentionUpdate): Promise<void> {\n const t = ++token;\n\n if (!update.active) {\n active = false;\n items = [];\n opts.emit(update);\n\n return;\n }\n\n if (!active) {\n const handler = opts.getHandler();\n\n if (handler) {\n const fetched = await handler();\n\n if (t !== token) return;\n\n items = fetched;\n }\n\n active = true;\n }\n\n const field = opts.getFilterField();\n const filtered = update.text\n ? items.filter((item) => {\n if (!item || typeof item !== 'object') return false;\n\n return String((item as Record<string, unknown>)[field] || '')\n .toLowerCase()\n .includes(update.text.toLowerCase());\n })\n : items;\n\n if (t !== token) return;\n\n opts.emit({ ...update, items: filtered });\n }\n };\n}\n"]}
|
|
@@ -41,5 +41,5 @@ function nodeToHtml(node, schema) {
|
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
export { docToHtml, nodeToHtml, withoutPlaceholders };
|
|
44
|
-
//# sourceMappingURL=chunk-
|
|
45
|
-
//# sourceMappingURL=chunk-
|
|
44
|
+
//# sourceMappingURL=chunk-UORFAHNO.mjs.map
|
|
45
|
+
//# sourceMappingURL=chunk-UORFAHNO.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
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-UORFAHNO.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"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/texteditor.refs.ts"],"names":[],"mappings":";AAEO,IAAM,qBAAA,GAAwC;AAAA,EACjD,OAAA,EAAS,MAAA;AAAA,EACT,gBAAA,EAAkB;AACtB","file":"chunk-VXO6D7N5.mjs","sourcesContent":["import type { TextEditorRefs } from '@primeui/texteditor-types';\n\nexport const defaultTextEditorRefs: TextEditorRefs = {\n element: undefined,\n fileInputElement: undefined\n};\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { textEditorClasses } from './chunk-
|
|
1
|
+
import { textEditorClasses } from './chunk-25Y5HLDY.mjs';
|
|
2
2
|
import { PluginKey, Plugin } from 'prosemirror-state';
|
|
3
3
|
import { DecorationSet, Decoration } from 'prosemirror-view';
|
|
4
4
|
|
|
@@ -51,5 +51,5 @@ function preserveSelection(view) {
|
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
export { createSelectionHighlightPlugin, preserveSelection, selectionHighlightKey };
|
|
54
|
-
//# sourceMappingURL=chunk-
|
|
55
|
-
//# sourceMappingURL=chunk-
|
|
54
|
+
//# sourceMappingURL=chunk-XO4UUELZ.mjs.map
|
|
55
|
+
//# sourceMappingURL=chunk-XO4UUELZ.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/plugins/selectionHighlight.ts"],"names":["from","to"],"mappings":";;;;AAKO,IAAM,qBAAA,GAAwB,IAAI,SAAA,CAAU,oBAAoB;AASvE,IAAM,WAAA,GAA8B,EAAE,MAAA,EAAQ,KAAA,EAAO,IAAA,EAAM,IAAI,EAAA,EAAI,EAAA,EAAI,WAAA,EAAa,aAAA,CAAc,KAAA,EAAM;AAEjG,SAAS,8BAAA,GAAiC;AAC7C,EAAA,OAAO,IAAI,MAAA,CAAO;AAAA,IACd,GAAA,EAAK,qBAAA;AAAA,IACL,KAAA,EAAO;AAAA,MACH,IAAA,GAAuB;AACnB,QAAA,OAAO,WAAA;AAAA,MACX,CAAA;AAAA,MACA,KAAA,CAAM,EAAA,EAAI,IAAA,EAAM,SAAA,EAAW,QAAA,EAA0B;AACjD,QAAA,MAAM,IAAA,GAAO,EAAA,CAAG,OAAA,CAAQ,qBAAqB,CAAA;AAE7C,QAAA,IAAI,MAAM,IAAA,EAAM;AACZ,UAAA,MAAM,EAAE,IAAA,EAAAA,KAAAA,EAAM,EAAA,EAAAC,KAAG,GAAI,IAAA;AAErB,UAAA,IAAID,KAAAA,KAASC,KAAI,OAAO,WAAA;AAExB,UAAA,MAAM,IAAA,GAAO,UAAA,CAAW,MAAA,CAAOD,KAAAA,EAAMC,GAAAA,EAAI;AAAA,YACrC,OAAO,iBAAA,CAAQ;AAAA,WAClB,CAAA;AAED,UAAA,OAAO,EAAE,MAAA,EAAQ,IAAA,EAAM,IAAA,EAAAD,OAAM,EAAA,EAAAC,GAAAA,EAAI,WAAA,EAAa,aAAA,CAAc,OAAO,EAAA,CAAG,GAAA,EAAK,CAAC,IAAI,CAAC,CAAA,EAAE;AAAA,QACvF;AAEA,QAAA,IAAI,CAAC,IAAA,CAAK,MAAA,EAAQ,OAAO,IAAA;AAGzB,QAAA,MAAM,EAAE,IAAA,EAAM,EAAA,EAAG,GAAI,QAAA,CAAS,SAAA;AAE9B,QAAA,IAAI,SAAS,EAAA,EAAI;AACb,UAAA,OAAO,WAAA;AAAA,QACX;AAGA,QAAA,IAAI,GAAG,UAAA,EAAY;AACf,UAAA,MAAM,UAAA,GAAa,EAAA,CAAG,OAAA,CAAQ,GAAA,CAAI,KAAK,IAAI,CAAA;AAC3C,UAAA,MAAM,QAAA,GAAW,EAAA,CAAG,OAAA,CAAQ,GAAA,CAAI,KAAK,EAAE,CAAA;AAEvC,UAAA,MAAM,IAAA,GAAO,UAAA,CAAW,MAAA,CAAO,UAAA,EAAY,QAAA,EAAU;AAAA,YACjD,OAAO,iBAAA,CAAQ;AAAA,WAClB,CAAA;AAED,UAAA,OAAO,EAAE,MAAA,EAAQ,IAAA,EAAM,IAAA,EAAM,YAAY,EAAA,EAAI,QAAA,EAAU,WAAA,EAAa,aAAA,CAAc,OAAO,EAAA,CAAG,GAAA,EAAK,CAAC,IAAI,CAAC,CAAA,EAAE;AAAA,QAC7G;AAEA,QAAA,OAAO,IAAA;AAAA,MACX;AAAA,KACJ;AAAA,IACA,KAAA,EAAO;AAAA,MACH,YAAY,KAAA,EAAO;AACf,QAAA,OAAO,qBAAA,CAAsB,QAAA,CAAS,KAAK,CAAA,EAAG,eAAe,aAAA,CAAc,KAAA;AAAA,MAC/E;AAAA;AACJ,GACH,CAAA;AACL;AAEO,SAAS,kBAAkB,IAAA,EAAkB;AAChD,EAAA,MAAM,EAAE,IAAA,EAAM,EAAA,EAAG,GAAI,KAAK,KAAA,CAAM,SAAA;AAEhC,EAAA,IAAI,SAAS,EAAA,EAAI;AAEjB,EAAA,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,KAAA,CAAM,EAAA,CAAG,OAAA,CAAQ,qBAAA,EAAuB,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,EAAA,EAAI,CAAC,CAAA;AACxF","file":"chunk-XO4UUELZ.mjs","sourcesContent":["import { Plugin, PluginKey } from 'prosemirror-state';\nimport type { EditorView } from 'prosemirror-view';\nimport { Decoration, DecorationSet } from 'prosemirror-view';\nimport { textEditorClasses as classes } from '../texteditor.classes';\n\nexport const selectionHighlightKey = new PluginKey('selectionHighlight');\n\ninterface HighlightState {\n active: boolean;\n from: number;\n to: number;\n decorations: DecorationSet;\n}\n\nconst EMPTY_STATE: HighlightState = { active: false, from: -1, to: -1, decorations: DecorationSet.empty };\n\nexport function createSelectionHighlightPlugin() {\n return new Plugin({\n key: selectionHighlightKey,\n state: {\n init(): HighlightState {\n return EMPTY_STATE;\n },\n apply(tr, prev, _oldState, newState): HighlightState {\n const meta = tr.getMeta(selectionHighlightKey);\n\n if (meta?.show) {\n const { from, to } = meta;\n\n if (from === to) return EMPTY_STATE;\n\n const deco = Decoration.inline(from, to, {\n class: classes.selection\n });\n\n return { active: true, from, to, decorations: DecorationSet.create(tr.doc, [deco]) };\n }\n\n if (!prev.active) return prev;\n\n // Auto-clear: if selection collapsed (user clicked), remove decoration\n const { from, to } = newState.selection;\n\n if (from === to) {\n return EMPTY_STATE;\n }\n\n // Remap on doc change\n if (tr.docChanged) {\n const mappedFrom = tr.mapping.map(prev.from);\n const mappedTo = tr.mapping.map(prev.to);\n\n const deco = Decoration.inline(mappedFrom, mappedTo, {\n class: classes.selection\n });\n\n return { active: true, from: mappedFrom, to: mappedTo, decorations: DecorationSet.create(tr.doc, [deco]) };\n }\n\n return prev;\n }\n },\n props: {\n decorations(state) {\n return selectionHighlightKey.getState(state)?.decorations ?? DecorationSet.empty;\n }\n }\n });\n}\n\nexport function preserveSelection(view: EditorView) {\n const { from, to } = view.state.selection;\n\n if (from === to) return;\n\n view.dispatch(view.state.tr.setMeta(selectionHighlightKey, { show: true, from, to }));\n}\n"]}
|
|
@@ -19,5 +19,5 @@ function createTrailingNodePlugin(schema) {
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
export { createTrailingNodePlugin };
|
|
22
|
-
//# sourceMappingURL=chunk-
|
|
23
|
-
//# sourceMappingURL=chunk-
|
|
22
|
+
//# sourceMappingURL=chunk-XOMJOYJG.mjs.map
|
|
23
|
+
//# sourceMappingURL=chunk-XOMJOYJG.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/plugins/trailingNode.ts"],"names":[],"mappings":";;;AAGA,IAAM,eAAA,GAAkB,IAAI,SAAA,CAAU,cAAc,CAAA;AAE7C,SAAS,yBAAyB,MAAA,EAAgB;AACrD,EAAA,MAAM,aAAA,GAAgB,OAAO,KAAA,CAAM,SAAA;AAEnC,EAAA,OAAO,IAAI,MAAA,CAAO;AAAA,IACd,GAAA,EAAK,eAAA;AAAA,IACL,iBAAA,CAAkB,YAAA,EAAc,SAAA,EAAW,QAAA,EAAU;AACjD,MAAA,IAAI,CAAC,aAAa,IAAA,CAAK,CAAC,OAAO,EAAA,CAAG,UAAU,GAAG,OAAO,IAAA;AAEtD,MAAA,MAAM,EAAE,KAAI,GAAI,QAAA;AAChB,MAAA,MAAM,WAAW,GAAA,CAAI,SAAA;AAErB,MAAA,IAAI,CAAC,QAAA,IAAY,QAAA,CAAS,IAAA,KAAS,aAAA,EAAe;AAC9C,QAAA,OAAO,QAAA,CAAS,GAAG,MAAA,CAAO,GAAA,CAAI,QAAQ,IAAA,EAAM,aAAA,CAAc,QAAQ,CAAA;AAAA,MACtE;AAEA,MAAA,OAAO,IAAA;AAAA,IACX;AAAA,GACH,CAAA;AACL","file":"chunk-XOMJOYJG.mjs","sourcesContent":["import { Plugin, PluginKey } from 'prosemirror-state';\nimport type { Schema } from 'prosemirror-model';\n\nconst trailingNodeKey = new PluginKey('trailingNode');\n\nexport function createTrailingNodePlugin(schema: Schema) {\n const paragraphType = schema.nodes.paragraph;\n\n return new Plugin({\n key: trailingNodeKey,\n appendTransaction(transactions, _oldState, newState) {\n if (!transactions.some((tr) => tr.docChanged)) return null;\n\n const { doc } = newState;\n const lastNode = doc.lastChild;\n\n if (!lastNode || lastNode.type !== paragraphType) {\n return newState.tr.insert(doc.content.size, paragraphType.create());\n }\n\n return null;\n }\n });\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isNodeActive, getParentNodeOfType } from './chunk-
|
|
1
|
+
import { isNodeActive, getParentNodeOfType } from './chunk-4C4R23A3.mjs';
|
|
2
2
|
import { setBlockType, wrapIn } from 'prosemirror-commands';
|
|
3
3
|
import { wrapInList, liftListItem } from 'prosemirror-schema-list';
|
|
4
4
|
import { Fragment } from 'prosemirror-model';
|
|
@@ -178,5 +178,5 @@ function createBlockCommands(view, schema) {
|
|
|
178
178
|
}
|
|
179
179
|
|
|
180
180
|
export { clearTypographyMarks, createBlockCommands, wrapInBlockquoteNormalized, wrapInListNormalized };
|
|
181
|
-
//# sourceMappingURL=chunk-
|
|
182
|
-
//# sourceMappingURL=chunk-
|
|
181
|
+
//# sourceMappingURL=chunk-YXOJODMQ.mjs.map
|
|
182
|
+
//# sourceMappingURL=chunk-YXOJODMQ.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/commands/normalize.ts","../../src/commands/blocks.ts"],"names":["setBlockType","tr","caret"],"mappings":"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","file":"chunk-YXOJODMQ.mjs","sourcesContent":["import type { EditorView } from 'prosemirror-view';\nimport type { NodeType, Schema } from 'prosemirror-model';\nimport { setBlockType, wrapIn } from 'prosemirror-commands';\nimport { liftListItem, wrapInList } from 'prosemirror-schema-list';\n\n// The list_item type wrapping the caret, if any (plain or check list).\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 type = $from.node(depth).type;\n\n if (type === schema.nodes.list_item || type === schema.nodes.check_list_item) return type;\n }\n\n return null;\n}\n\n// Wrap the current block in a list, normalizing first when the block can't be\n// wrapped directly (headings, code blocks): convert to a paragraph, then wrap.\nexport function wrapInListNormalized(view: EditorView, schema: Schema, listType: NodeType): void {\n if (wrapInList(listType)(view.state, view.dispatch)) return;\n\n if (setBlockType(schema.nodes.paragraph)(view.state, view.dispatch)) {\n wrapInList(listType)(view.state, view.dispatch);\n }\n}\n\n// Wrap the current block in a blockquote. When the caret is inside a list item\n// (where a blockquote can't be a direct child), lift the item out first.\nexport function wrapInBlockquoteNormalized(view: EditorView, schema: Schema): void {\n if (wrapIn(schema.nodes.blockquote)(view.state, view.dispatch)) return;\n\n const itemType = currentListItemType(view, schema);\n\n if (itemType && liftListItem(itemType)(view.state, view.dispatch)) {\n wrapIn(schema.nodes.blockquote)(view.state, view.dispatch);\n }\n}\n","import type { EditorView } from 'prosemirror-view';\nimport type { Node as PMNode, NodeType, Schema } from 'prosemirror-model';\nimport { Fragment } from 'prosemirror-model';\nimport { liftTarget } from 'prosemirror-transform';\nimport { TextSelection, type Transaction } from 'prosemirror-state';\nimport { setBlockType } from 'prosemirror-commands';\nimport { getParentNodeOfType, isNodeActive } from '../state/selection';\nimport { wrapInBlockquoteNormalized } from './normalize';\n\nfunction setTextAlign(view: EditorView, alignment: string) {\n const { from, to } = view.state.selection;\n const tr = view.state.tr;\n\n view.state.doc.nodesBetween(from, to, (node, pos) => {\n if (node.type.spec.attrs?.textAlign !== undefined) {\n tr.setNodeMarkup(pos, null, { ...node.attrs, textAlign: alignment === 'left' ? null : alignment });\n }\n });\n\n if (tr.docChanged) {\n view.dispatch(tr);\n view.focus();\n }\n}\n\n// Strip explicit font-size/font-family from a range so a heading owns its own\n// typography (a heading is a semantic level, not a manual point size).\nexport function clearTypographyMarks(tr: Transaction, schema: Schema, from: number, to: number) {\n const textStyle = schema.marks.textStyle;\n\n if (!textStyle) return tr;\n\n tr.doc.nodesBetween(from, to, (node, pos) => {\n if (!node.isText) return;\n\n const mark = textStyle.isInSet(node.marks);\n\n if (!mark || (mark.attrs.fontSize == null && mark.attrs.fontFamily == null)) return;\n\n const start = Math.max(pos, from);\n const end = Math.min(pos + node.nodeSize, to);\n const next = { ...mark.attrs, fontSize: null, fontFamily: null };\n\n tr.removeMark(start, end, textStyle);\n\n if (Object.values(next).some((v) => v != null)) tr.addMark(start, end, textStyle.create(next));\n });\n\n return tr;\n}\n\nfunction toggleBlockType(view: EditorView, nodeType: NodeType, attrs?: Record<string, unknown>) {\n const { state } = view;\n const isActive = isNodeActive(state, nodeType, attrs);\n\n if (isActive) {\n setBlockType(state.schema.nodes.paragraph)(state, view.dispatch);\n view.focus();\n\n return;\n }\n\n setBlockType(nodeType, attrs)(state, (tr) => {\n if (nodeType === state.schema.nodes.heading) {\n const { $from, $to } = tr.selection;\n const from = $from.start();\n const to = $to.end();\n\n clearTypographyMarks(tr, state.schema, from, to);\n }\n\n view.dispatch(tr);\n });\n view.focus();\n}\n\n// Toggle code block, preserving lines: join blocks on enter, split newlines on leave.\n// A paragraph's text, with hard breaks rendered as newlines — so a paragraph\n// (which stores line breaks as <br>) round-trips cleanly to a code block (which\n// stores them as \"\\n\" in a single text node).\nfunction blockTextWithNewlines(node: PMNode, schema: Schema): string {\n let out = '';\n\n node.content.forEach((child) => {\n if (child.type === schema.nodes.hard_break) out += '\\n';\n else if (child.isText) out += child.text ?? '';\n });\n\n return out;\n}\n\n// Build inline content for a paragraph from code text, turning each \"\\n\" into a\n// hard break so multi-line code stays one block when converted back.\nfunction inlineFromCodeText(text: string, schema: Schema): Fragment {\n const parts = text.split('\\n');\n const nodes: PMNode[] = [];\n\n parts.forEach((line, i) => {\n if (i > 0) nodes.push(schema.nodes.hard_break.create());\n if (line) nodes.push(schema.text(line));\n });\n\n return Fragment.fromArray(nodes);\n}\n\nfunction toggleCodeBlock(view: EditorView, schema: Schema) {\n const { state } = view;\n const codeBlock = schema.nodes.code_block;\n const paragraph = schema.nodes.paragraph;\n const { from, to, $from } = state.selection;\n\n // Leave: the selection touches a code block -> convert it to ONE paragraph,\n // preserving line breaks as hard breaks (so it can round-trip back).\n let blockPos = -1;\n let block: PMNode | null = $from.parent.type === codeBlock ? $from.parent : null;\n\n if (block) {\n blockPos = $from.before();\n } else {\n state.doc.nodesBetween(from, to, (node, pos) => {\n if (block) return false;\n\n if (node.type === codeBlock) {\n block = node;\n blockPos = pos;\n }\n\n return false;\n });\n }\n\n if (block && blockPos >= 0) {\n const code = block as PMNode;\n const para = paragraph.create(null, inlineFromCodeText(code.textContent, schema));\n const tr = state.tr.replaceWith(blockPos, blockPos + code.nodeSize, para);\n const caret = Math.min(blockPos + 1 + $from.parentOffset, blockPos + 1 + para.content.size);\n\n tr.setSelection(TextSelection.create(tr.doc, caret));\n view.dispatch(tr.scrollIntoView());\n view.focus();\n\n return;\n }\n\n const range = $from.blockRange(state.selection.$to);\n\n if (!range) return;\n\n const lines: string[] = [];\n const caretIndex = $from.index(range.depth);\n let caretOffset = 0;\n\n for (let i = range.startIndex; i < range.endIndex; i++) {\n const child = range.parent.child(i);\n\n if (i < caretIndex) caretOffset += blockTextWithNewlines(child, schema).length + 1;\n else if (i === caretIndex) caretOffset += $from.parentOffset;\n\n lines.push(blockTextWithNewlines(child, schema));\n }\n\n const joined = lines.join('\\n');\n const newBlock = codeBlock.create(null, joined ? schema.text(joined) : undefined);\n const tr = state.tr.replaceWith(range.start, range.end, newBlock);\n const caret = Math.min(range.start + 1 + caretOffset, range.start + 1 + joined.length);\n\n tr.setSelection(TextSelection.create(tr.doc, caret));\n view.dispatch(tr.scrollIntoView());\n view.focus();\n}\n\n// Lift the WHOLE wrapping node out, not just the block the caret sits in.\n// prosemirror's `lift` only lifts the selected block range, so a collapsed\n// caret in one paragraph of a multi-paragraph blockquote would leave the\n// remaining paragraphs trapped in a leftover wrapper. Lifting the wrapper's\n// full content range unwraps every child together (matching Tiptap).\nfunction liftWholeNode(view: EditorView, nodeType: NodeType) {\n const { state } = view;\n const found = getParentNodeOfType(state, nodeType);\n\n if (!found) return;\n\n const inner = found.pos + 1;\n const $start = state.doc.resolve(inner);\n const $end = state.doc.resolve(found.pos + found.node!.nodeSize - 1);\n const range = $start.blockRange($end);\n\n if (!range) return;\n\n const target = liftTarget(range);\n\n if (target == null) return;\n\n view.dispatch(state.tr.lift(range, target).scrollIntoView());\n}\n\nfunction toggleBlockquote(view: EditorView, schema: Schema) {\n if (isNodeActive(view.state, schema.nodes.blockquote)) {\n liftWholeNode(view, schema.nodes.blockquote);\n } else {\n // wrapIn fails when the caret sits inside a list item; the normalizer\n // lifts the item out of its list first, then wraps.\n wrapInBlockquoteNormalized(view, schema);\n }\n\n view.focus();\n}\n\nexport function createBlockCommands(view: EditorView, schema: Schema) {\n return {\n heading: (level: number) => toggleBlockType(view, schema.nodes.heading, { level }),\n paragraph: () => {\n setBlockType(schema.nodes.paragraph)(view.state, view.dispatch);\n view.focus();\n },\n codeBlock: () => toggleCodeBlock(view, schema),\n blockquote: () => toggleBlockquote(view, schema),\n insertHorizontalRule: () => {\n const tr = view.state.tr.replaceSelectionWith(schema.nodes.horizontal_rule.create());\n\n view.dispatch(tr.scrollIntoView());\n view.focus();\n },\n textAlign: (alignment: string) => setTextAlign(view, alignment)\n };\n}\n"]}
|
|
@@ -18,5 +18,5 @@ function setRovingTabindex(items, activeEl) {
|
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
export { isClickOutside, isMouseLeavingBlockArea, setRovingTabindex };
|
|
21
|
-
//# sourceMappingURL=chunk-
|
|
22
|
-
//# sourceMappingURL=chunk-
|
|
21
|
+
//# sourceMappingURL=chunk-Z7KBTB2P.mjs.map
|
|
22
|
+
//# sourceMappingURL=chunk-Z7KBTB2P.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/ui/focus.ts"],"names":[],"mappings":";AAAO,SAAS,cAAA,CAAe,MAAA,EAAc,SAAA,EAA+B,SAAA,EAA+B,eAAA,EAAkC;AACzI,EAAA,IAAI,SAAA,EAAW,QAAA,CAAS,MAAM,CAAA,EAAG,OAAO,KAAA;AACxC,EAAA,IAAI,SAAA,EAAW,QAAA,CAAS,MAAM,CAAA,EAAG,OAAO,KAAA;AAExC,EAAA,MAAM,EAAA,GAAK,MAAA;AAEX,EAAA,IAAI,EAAA,CAAG,OAAA,GAAU,eAAe,CAAA,EAAG,OAAO,KAAA;AAE1C,EAAA,OAAO,IAAA;AACX;AAEO,SAAS,uBAAA,CAAwB,eAA+B,cAAA,EAAiC;AACpG,EAAA,IAAI,CAAC,eAAe,OAAO,IAAA;AAE3B,EAAA,OAAO,CAAC,aAAA,CAAc,OAAA,CAAQ,CAAA,CAAA,EAAI,cAAc,CAAA,CAAE,CAAA;AACtD;AAEO,SAAS,iBAAA,CAAkB,OAAsB,QAAA,EAAoC;AACxF,EAAA,MAAM,MAAA,GAAS,YAAY,KAAA,CAAM,QAAA,CAAS,QAAQ,CAAA,GAAI,QAAA,GAAY,KAAA,CAAM,CAAC,CAAA,IAAK,IAAA;AAE9E,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACtB,IAAA,IAAA,CAAK,YAAA,CAAa,UAAA,EAAY,IAAA,KAAS,MAAA,GAAS,MAAM,IAAI,CAAA;AAAA,EAC9D;AACJ","file":"chunk-Z7KBTB2P.mjs","sourcesContent":["export function isClickOutside(target: Node, popoverEl: HTMLElement | null, triggerEl: HTMLElement | null, submenuSelector: string): boolean {\n if (popoverEl?.contains(target)) return false;\n if (triggerEl?.contains(target)) return false;\n\n const el = target as Element;\n\n if (el.closest?.(submenuSelector)) return false;\n\n return true;\n}\n\nexport function isMouseLeavingBlockArea(relatedTarget: Element | null, blockClassName: string): boolean {\n if (!relatedTarget) return true;\n\n return !relatedTarget.closest(`.${blockClassName}`);\n}\n\nexport function setRovingTabindex(items: HTMLElement[], activeEl: HTMLElement | null): void {\n const active = activeEl && items.includes(activeEl) ? activeEl : (items[0] ?? null);\n\n for (const item of items) {\n item.setAttribute('tabindex', item === active ? '0' : '-1');\n }\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { sanitizeCssValue } from './chunk-
|
|
2
|
-
import { sanitizeImageUrl, sanitizeTextAttr } from './chunk-
|
|
3
|
-
import { textEditorClasses } from './chunk-
|
|
4
|
-
import { __export } from './chunk-
|
|
1
|
+
import { sanitizeCssValue } from './chunk-C2TRJCIH.mjs';
|
|
2
|
+
import { sanitizeImageUrl, sanitizeTextAttr } from './chunk-MMU3VGMT.mjs';
|
|
3
|
+
import { textEditorClasses } from './chunk-25Y5HLDY.mjs';
|
|
4
|
+
import { __export } from './chunk-FLGC65SR.mjs';
|
|
5
5
|
|
|
6
6
|
// src/schema/nodes.ts
|
|
7
7
|
var nodes_exports = {};
|
|
@@ -397,5 +397,5 @@ var table_header = {
|
|
|
397
397
|
};
|
|
398
398
|
|
|
399
399
|
export { blockquote, bullet_list, check_list, check_list_item, code_block, doc, document_upload_placeholder, hard_break, heading, horizontal_rule, image, image_upload_placeholder, list_item, mention, nodes_exports, ordered_list, paragraph, parseDimension, table, table_cell, table_header, table_row, text };
|
|
400
|
-
//# sourceMappingURL=chunk-
|
|
401
|
-
//# sourceMappingURL=chunk-
|
|
400
|
+
//# sourceMappingURL=chunk-ZSXWDZMQ.mjs.map
|
|
401
|
+
//# sourceMappingURL=chunk-ZSXWDZMQ.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/schema/nodes.ts"],"names":[],"mappings":"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","file":"chunk-ZSXWDZMQ.mjs","sourcesContent":["import type { DOMOutputSpec, NodeSpec } from 'prosemirror-model';\nimport { textEditorClasses as classes } from '../texteditor.classes';\nimport { sanitizeImageUrl, sanitizeTextAttr } from '../utils/url';\nimport { sanitizeCssValue } from '../utils/css';\n\n// Recursively strip <> from string values in parsed mention data.\nfunction stripMarkupFromJson(value: unknown): unknown {\n if (typeof value === 'string') return value.replace(/[<>]/g, '');\n if (Array.isArray(value)) return value.map(stripMarkupFromJson);\n\n if (value && typeof value === 'object') {\n return Object.fromEntries(Object.entries(value as Record<string, unknown>).map(([k, v]) => [k, stripMarkupFromJson(v)]));\n }\n\n return value;\n}\n\n// Parse data-colwidth into finite numbers only; null if none valid.\nfunction parseColwidth(raw: string | null): number[] | null {\n if (!raw) return null;\n\n const widths = raw.split(',').map(Number).filter(Number.isFinite);\n\n return widths.length > 0 ? widths : null;\n}\n\n// Upper bound on a mention's serialized data payload (defense against DoS).\nconst MENTION_DATA_MAX_LENGTH = 64 * 1024;\n\n// Parse an image width/height into a non-negative finite number string; null otherwise.\nexport function parseDimension(raw: string | null): string | null {\n if (!raw) return null;\n\n const n = Number(raw);\n\n return Number.isFinite(n) && n >= 0 ? String(n) : null;\n}\n\nexport const doc: NodeSpec = {\n content: 'block+'\n};\n\nexport const text: NodeSpec = {\n group: 'inline'\n};\n\nexport const paragraph: NodeSpec = {\n content: 'inline*',\n group: 'block',\n attrs: {\n textAlign: { default: null }\n },\n parseDOM: [\n {\n tag: 'p',\n getAttrs(node) {\n return { textAlign: (node as HTMLElement).style.textAlign || null };\n }\n }\n ],\n toDOM(node) {\n const attrs: Record<string, string> = {};\n\n const align = ['left', 'center', 'right', 'justify'].includes(node.attrs.textAlign) ? node.attrs.textAlign : null;\n\n if (align) attrs.style = `text-align: ${align}`;\n\n return ['p', attrs, 0];\n }\n};\n\nexport const heading: NodeSpec = {\n content: 'inline*',\n group: 'block',\n attrs: {\n level: { default: 1 },\n textAlign: { default: null }\n },\n defining: true,\n parseDOM: [1, 2, 3, 4, 5, 6].map((level) => ({\n tag: `h${level}`,\n attrs: { level },\n getAttrs(node) {\n return { level, textAlign: (node as HTMLElement).style.textAlign || null };\n }\n })),\n toDOM(node) {\n const attrs: Record<string, string> = {};\n\n const align = ['left', 'center', 'right', 'justify'].includes(node.attrs.textAlign) ? node.attrs.textAlign : null;\n\n if (align) attrs.style = `text-align: ${align}`;\n\n return [`h${node.attrs.level}`, attrs, 0];\n }\n};\n\nexport const blockquote: NodeSpec = {\n content: 'block+',\n group: 'block',\n defining: true,\n parseDOM: [{ tag: 'blockquote' }],\n toDOM() {\n return ['blockquote', 0];\n }\n};\n\nexport const code_block: NodeSpec = {\n content: 'text*',\n marks: '',\n group: 'block',\n code: true,\n defining: true,\n attrs: { language: { default: null } },\n parseDOM: [\n {\n tag: 'pre',\n preserveWhitespace: 'full',\n getAttrs(node) {\n const el = node as HTMLElement;\n const code = el.querySelector('code') ?? el;\n const cls = code.getAttribute('class') || el.getAttribute('class') || '';\n const match = cls.match(/language-([\\w-]+)/);\n\n return { language: match ? match[1] : el.getAttribute('data-language') || null };\n }\n }\n ],\n toDOM(node) {\n const lang = node.attrs.language;\n\n return lang ? ['pre', { 'data-language': lang }, ['code', { class: `language-${lang}` }, 0]] : ['pre', ['code', 0]];\n }\n};\n\nexport const horizontal_rule: NodeSpec = {\n group: 'block',\n parseDOM: [{ tag: 'hr' }],\n toDOM() {\n return ['hr'];\n }\n};\n\nexport const hard_break: NodeSpec = {\n inline: true,\n group: 'inline',\n selectable: false,\n parseDOM: [{ tag: 'br' }],\n toDOM() {\n return ['br'];\n }\n};\n\nexport const image: NodeSpec = {\n inline: true,\n group: 'inline',\n draggable: true,\n attrs: {\n src: {},\n alt: { default: null },\n width: { default: null },\n height: { default: null }\n },\n parseDOM: [\n {\n tag: 'img[src]',\n getAttrs(node) {\n const el = node as HTMLImageElement;\n const src = sanitizeImageUrl(el.getAttribute('src'));\n\n if (src == null) return false;\n\n return {\n src,\n alt: sanitizeTextAttr(el.getAttribute('alt')),\n width: parseDimension(el.getAttribute('width')),\n height: parseDimension(el.getAttribute('height'))\n };\n }\n }\n ],\n toDOM(node) {\n const src = sanitizeImageUrl(node.attrs.src);\n const attrs: Record<string, string> = { src: src ?? '' };\n\n if (node.attrs.alt) attrs.alt = node.attrs.alt;\n if (node.attrs.width) attrs.width = node.attrs.width;\n if (node.attrs.height) attrs.height = node.attrs.height;\n\n return ['img', attrs];\n }\n};\n\nexport const mention: NodeSpec = {\n inline: true,\n group: 'inline',\n atom: true,\n attrs: {\n id: { default: null },\n label: {},\n data: { default: null }\n },\n parseDOM: [\n {\n tag: 'span[data-p-mention]',\n getAttrs(node) {\n const el = node as HTMLElement;\n const rawData = el.getAttribute('data-p-mention-data');\n let data: unknown = null;\n\n // Cap the payload so a hostile document can't DoS the parser with a huge JSON blob.\n if (rawData && rawData.length <= MENTION_DATA_MAX_LENGTH) {\n try {\n data = stripMarkupFromJson(JSON.parse(rawData));\n } catch {\n data = null;\n }\n }\n\n return {\n id: sanitizeTextAttr(el.getAttribute('data-p-mention-id')),\n label: sanitizeTextAttr(el.textContent),\n data\n };\n }\n }\n ],\n toDOM(node) {\n const attrs: Record<string, string> = { class: classes.mention, 'data-p-mention': '', 'data-p-mention-id': node.attrs.id || '' };\n\n if (node.attrs.data != null) attrs['data-p-mention-data'] = JSON.stringify(node.attrs.data);\n\n return ['span', attrs, node.attrs.label];\n }\n};\n\nexport const image_upload_placeholder: NodeSpec = {\n group: 'block',\n atom: true,\n selectable: false,\n parseDOM: [{ tag: 'div[data-p-image-upload]' }],\n toDOM() {\n return ['div', { 'data-p-image-upload': '', class: classes.imageUploadPlaceholder }];\n }\n};\n\nexport const document_upload_placeholder: NodeSpec = {\n group: 'block',\n atom: true,\n selectable: false,\n parseDOM: [{ tag: 'div[data-p-document-upload]' }],\n toDOM() {\n return ['div', { 'data-p-document-upload': '', class: classes.documentUploadPlaceholder }];\n }\n};\n\n// Lists\n\nexport const bullet_list: NodeSpec = {\n content: 'list_item+',\n group: 'block',\n parseDOM: [{ tag: 'ul', getAttrs: (node) => !(node as HTMLElement).hasAttribute('data-p-checked-list') && null }],\n toDOM() {\n return ['ul', 0];\n }\n};\n\nexport const ordered_list: NodeSpec = {\n content: 'list_item+',\n group: 'block',\n attrs: { start: { default: 1 } },\n parseDOM: [\n {\n tag: 'ol',\n getAttrs(node) {\n return { start: (node as HTMLOListElement).start || 1 };\n }\n }\n ],\n toDOM(node) {\n return node.attrs.start === 1 ? ['ol', 0] : ['ol', { start: node.attrs.start }, 0];\n }\n};\n\nexport const list_item: NodeSpec = {\n content: 'paragraph block*',\n parseDOM: [{ tag: 'li', getAttrs: (node) => !(node as HTMLElement).hasAttribute('data-p-checked') && null }],\n toDOM() {\n return ['li', 0];\n },\n defining: true\n};\n\nexport const check_list: NodeSpec = {\n content: 'check_list_item+',\n group: 'block',\n parseDOM: [{ tag: 'ul[data-p-checked-list]' }],\n toDOM() {\n return ['ul', { 'data-p-checked-list': '' }, 0];\n }\n};\n\nexport const check_list_item: NodeSpec = {\n content: 'paragraph block*',\n attrs: {\n checked: { default: false }\n },\n parseDOM: [\n {\n tag: 'li[data-p-checked]',\n getAttrs(node) {\n return { checked: (node as HTMLElement).getAttribute('data-p-checked') === 'true' };\n }\n }\n ],\n toDOM(node) {\n return ['li', { 'data-p-checked': node.attrs.checked ? 'true' : 'false' }, 0];\n }\n};\n\n// Tables\n\nexport const table: NodeSpec = {\n content: 'table_row+',\n group: 'block',\n tableRole: 'table',\n isolating: true,\n parseDOM: [{ tag: 'table' }],\n toDOM(node) {\n // Emit <colgroup> from the first row's widths so exported HTML keeps column sizes.\n const cols: DOMOutputSpec[] = [];\n const firstRow = node.firstChild;\n\n if (firstRow) {\n firstRow.forEach((cell) => {\n const span = cell.attrs.colspan ?? 1;\n const widths = cell.attrs.colwidth as number[] | null;\n\n for (let i = 0; i < span; i++) {\n const w = widths?.[i];\n\n cols.push(w ? ['col', { style: `width: ${w}px` }] : ['col', {}]);\n }\n });\n }\n\n return cols.length ? ['table', ['colgroup', ...cols], ['tbody', 0]] : ['table', ['tbody', 0]];\n }\n};\n\nexport const table_row: NodeSpec = {\n content: '(table_cell | table_header)*',\n tableRole: 'row',\n parseDOM: [{ tag: 'tr' }],\n toDOM() {\n return ['tr', 0];\n }\n};\n\nexport const table_cell: NodeSpec = {\n content: 'block+',\n attrs: {\n colspan: { default: 1 },\n rowspan: { default: 1 },\n colwidth: { default: null },\n backgroundColor: { default: null }\n },\n tableRole: 'cell',\n isolating: true,\n parseDOM: [\n {\n tag: 'td',\n getAttrs(node) {\n const el = node as HTMLTableCellElement;\n\n return {\n colspan: el.colSpan || 1,\n rowspan: el.rowSpan || 1,\n colwidth: parseColwidth(el.getAttribute('data-colwidth')),\n backgroundColor: sanitizeCssValue(el.style.backgroundColor)\n };\n }\n }\n ],\n toDOM(node) {\n const attrs: Record<string, string | number> = {};\n\n if (node.attrs.colspan !== 1) attrs.colspan = node.attrs.colspan;\n if (node.attrs.rowspan !== 1) attrs.rowspan = node.attrs.rowspan;\n if (node.attrs.colwidth) attrs['data-colwidth'] = node.attrs.colwidth.join(',');\n const bg = sanitizeCssValue(node.attrs.backgroundColor);\n\n if (bg) attrs.style = `background-color: ${bg}`;\n\n return ['td', attrs, 0];\n }\n};\n\nexport const table_header: NodeSpec = {\n content: 'block+',\n attrs: {\n colspan: { default: 1 },\n rowspan: { default: 1 },\n colwidth: { default: null },\n backgroundColor: { default: null },\n scope: { default: 'col' }\n },\n tableRole: 'header_cell',\n isolating: true,\n parseDOM: [\n {\n tag: 'th',\n getAttrs(node) {\n const el = node as HTMLTableCellElement;\n const rawScope = el.getAttribute('scope');\n\n return {\n colspan: el.colSpan || 1,\n rowspan: el.rowSpan || 1,\n colwidth: parseColwidth(el.getAttribute('data-colwidth')),\n backgroundColor: sanitizeCssValue(el.style.backgroundColor),\n scope: rawScope === 'row' || rawScope === 'col' ? rawScope : 'col'\n };\n }\n }\n ],\n toDOM(node) {\n const attrs: Record<string, string | number> = { scope: node.attrs.scope === 'row' ? 'row' : 'col' };\n\n if (node.attrs.colspan !== 1) attrs.colspan = node.attrs.colspan;\n if (node.attrs.rowspan !== 1) attrs.rowspan = node.attrs.rowspan;\n if (node.attrs.colwidth) attrs['data-colwidth'] = node.attrs.colwidth.join(',');\n const bg = sanitizeCssValue(node.attrs.backgroundColor);\n\n if (bg) attrs.style = `background-color: ${bg}`;\n\n return ['th', attrs, 0];\n }\n};\n"]}
|
|
@@ -15,5 +15,5 @@ function computeFocusTrapTarget(itemCount, focusedIdx, shift) {
|
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
export { computeArrowNavIndex, computeFocusTrapTarget };
|
|
18
|
-
//# sourceMappingURL=chunk-
|
|
19
|
-
//# sourceMappingURL=chunk-
|
|
18
|
+
//# sourceMappingURL=chunk-ZUZABDZC.mjs.map
|
|
19
|
+
//# sourceMappingURL=chunk-ZUZABDZC.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/ui/keyboard.ts"],"names":[],"mappings":";AAAO,SAAS,oBAAA,CAAqB,UAAA,EAAoB,SAAA,EAAmB,GAAA,EAA4B;AACpG,EAAA,IAAI,SAAA,KAAc,GAAG,OAAO,EAAA;AAE5B,EAAA,IAAI,QAAQ,MAAA,EAAQ;AAChB,IAAA,OAAO,UAAA,GAAa,CAAA,GAAI,CAAA,GAAA,CAAK,UAAA,GAAa,CAAA,IAAK,SAAA;AAAA,EACnD;AAEA,EAAA,OAAO,aAAa,CAAA,GAAI,SAAA,GAAY,CAAA,GAAA,CAAK,UAAA,GAAa,IAAI,SAAA,IAAa,SAAA;AAC3E;AAEO,SAAS,sBAAA,CAAuB,SAAA,EAAmB,UAAA,EAAoB,KAAA,EAAwB;AAClG,EAAA,IAAI,SAAA,KAAc,GAAG,OAAO,EAAA;AAE5B,EAAA,IAAI,KAAA,EAAO;AACP,IAAA,OAAO,UAAA,IAAc,CAAA,GAAI,SAAA,GAAY,CAAA,GAAI,UAAA,GAAa,CAAA;AAAA,EAC1D;AAEA,EAAA,OAAO,eAAe,EAAA,IAAM,UAAA,KAAe,SAAA,GAAY,CAAA,GAAI,IAAI,UAAA,GAAa,CAAA;AAChF","file":"chunk-ZUZABDZC.mjs","sourcesContent":["export function computeArrowNavIndex(currentIdx: number, itemCount: number, dir: 'up' | 'down'): number {\n if (itemCount === 0) return -1;\n\n if (dir === 'down') {\n return currentIdx < 0 ? 0 : (currentIdx + 1) % itemCount;\n }\n\n return currentIdx < 0 ? itemCount - 1 : (currentIdx - 1 + itemCount) % itemCount;\n}\n\nexport function computeFocusTrapTarget(itemCount: number, focusedIdx: number, shift: boolean): number {\n if (itemCount === 0) return -1;\n\n if (shift) {\n return focusedIdx <= 0 ? itemCount - 1 : focusedIdx - 1;\n }\n\n return focusedIdx === -1 || focusedIdx === itemCount - 1 ? 0 : focusedIdx + 1;\n}\n"]}
|
package/dist/commands/index.mjs
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
export { createCommands } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-
|
|
5
|
-
import '../chunk-
|
|
6
|
-
import '../chunk-
|
|
7
|
-
import '../chunk-
|
|
8
|
-
import '../chunk-
|
|
9
|
-
import '../chunk-
|
|
10
|
-
import '../chunk-
|
|
11
|
-
import '../chunk-
|
|
1
|
+
export { createCommands } from '../chunks/chunk-MMY4F74E.mjs';
|
|
2
|
+
import '../chunks/chunk-YXOJODMQ.mjs';
|
|
3
|
+
import '../chunks/chunk-UHENKXGQ.mjs';
|
|
4
|
+
import '../chunks/chunk-4C4R23A3.mjs';
|
|
5
|
+
import '../chunks/chunk-XO4UUELZ.mjs';
|
|
6
|
+
import '../chunks/chunk-UORFAHNO.mjs';
|
|
7
|
+
import '../chunks/chunk-ZSXWDZMQ.mjs';
|
|
8
|
+
import '../chunks/chunk-C2TRJCIH.mjs';
|
|
9
|
+
import '../chunks/chunk-MMU3VGMT.mjs';
|
|
10
|
+
import '../chunks/chunk-25Y5HLDY.mjs';
|
|
11
|
+
import '../chunks/chunk-FLGC65SR.mjs';
|
|
12
12
|
//# sourceMappingURL=index.mjs.map
|
|
13
13
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
export { createTextEditor } from './chunk-
|
|
2
|
-
import './chunk-
|
|
3
|
-
import './chunk-
|
|
4
|
-
import './chunk-
|
|
5
|
-
import './chunk-
|
|
6
|
-
import './chunk-
|
|
7
|
-
import './chunk-
|
|
8
|
-
import './chunk-
|
|
9
|
-
import './chunk-
|
|
10
|
-
import './chunk-
|
|
11
|
-
import './chunk-
|
|
12
|
-
import './chunk-
|
|
13
|
-
import './chunk-
|
|
14
|
-
import './chunk-
|
|
15
|
-
import './chunk-
|
|
16
|
-
import './chunk-
|
|
17
|
-
import './chunk-
|
|
18
|
-
import './chunk-
|
|
19
|
-
import './chunk-
|
|
20
|
-
import './chunk-
|
|
21
|
-
import './chunk-
|
|
22
|
-
import './chunk-
|
|
23
|
-
import './chunk-
|
|
24
|
-
import './chunk-
|
|
25
|
-
import './chunk-
|
|
26
|
-
import './chunk-
|
|
27
|
-
import './chunk-
|
|
28
|
-
import './chunk-
|
|
29
|
-
import './chunk-
|
|
1
|
+
export { createTextEditor } from './chunks/chunk-F4KBJIZJ.mjs';
|
|
2
|
+
import './chunks/chunk-4BI7WWVV.mjs';
|
|
3
|
+
import './chunks/chunk-QZUFYVD5.mjs';
|
|
4
|
+
import './chunks/chunk-LHZDU6AA.mjs';
|
|
5
|
+
import './chunks/chunk-PSOP5GNT.mjs';
|
|
6
|
+
import './chunks/chunk-SFUE4QBU.mjs';
|
|
7
|
+
import './chunks/chunk-XOMJOYJG.mjs';
|
|
8
|
+
import './chunks/chunk-KA3KNPLZ.mjs';
|
|
9
|
+
import './chunks/chunk-NZCWIEXE.mjs';
|
|
10
|
+
import './chunks/chunk-MSPB65AH.mjs';
|
|
11
|
+
import './chunks/chunk-F2THMQFM.mjs';
|
|
12
|
+
import './chunks/chunk-UN74246B.mjs';
|
|
13
|
+
import './chunks/chunk-C6CEVLOL.mjs';
|
|
14
|
+
import './chunks/chunk-VXO6D7N5.mjs';
|
|
15
|
+
import './chunks/chunk-4NWX3EPS.mjs';
|
|
16
|
+
import './chunks/chunk-RE46J3VH.mjs';
|
|
17
|
+
import './chunks/chunk-LYB4TGKX.mjs';
|
|
18
|
+
import './chunks/chunk-QMEKZ64Z.mjs';
|
|
19
|
+
import './chunks/chunk-MMY4F74E.mjs';
|
|
20
|
+
import './chunks/chunk-YXOJODMQ.mjs';
|
|
21
|
+
import './chunks/chunk-UHENKXGQ.mjs';
|
|
22
|
+
import './chunks/chunk-4C4R23A3.mjs';
|
|
23
|
+
import './chunks/chunk-XO4UUELZ.mjs';
|
|
24
|
+
import './chunks/chunk-UORFAHNO.mjs';
|
|
25
|
+
import './chunks/chunk-ZSXWDZMQ.mjs';
|
|
26
|
+
import './chunks/chunk-C2TRJCIH.mjs';
|
|
27
|
+
import './chunks/chunk-MMU3VGMT.mjs';
|
|
28
|
+
import './chunks/chunk-25Y5HLDY.mjs';
|
|
29
|
+
import './chunks/chunk-FLGC65SR.mjs';
|
|
30
30
|
//# sourceMappingURL=createTextEditor.mjs.map
|
|
31
31
|
//# sourceMappingURL=createTextEditor.mjs.map
|
package/dist/index.mjs
CHANGED
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
export { defineTextEditorPlugin } from './chunk-
|
|
2
|
-
export { TEXT_EDITOR_ALLOWED_TYPES, TEXT_EDITOR_FILE_SIZE } from './chunk-
|
|
3
|
-
export { createTextEditor } from './chunk-
|
|
4
|
-
import './chunk-
|
|
5
|
-
import './chunk-
|
|
6
|
-
import './chunk-
|
|
7
|
-
import './chunk-
|
|
8
|
-
import './chunk-
|
|
9
|
-
import './chunk-
|
|
10
|
-
import './chunk-
|
|
11
|
-
import './chunk-
|
|
12
|
-
import './chunk-
|
|
13
|
-
import './chunk-
|
|
14
|
-
import './chunk-
|
|
15
|
-
export { defaultTextEditorProps } from './chunk-
|
|
16
|
-
export { defaultTextEditorRefs } from './chunk-
|
|
17
|
-
export { defaultTextEditorState } from './chunk-
|
|
18
|
-
import './chunk-
|
|
19
|
-
import './chunk-
|
|
20
|
-
export { baseMarks, baseNodes, createEditorSchema, extendNodeSpec, getEditorSchema } from './chunk-
|
|
21
|
-
import './chunk-
|
|
22
|
-
import './chunk-
|
|
23
|
-
import './chunk-
|
|
24
|
-
import './chunk-
|
|
25
|
-
import './chunk-
|
|
26
|
-
import './chunk-
|
|
27
|
-
import './chunk-
|
|
28
|
-
import './chunk-
|
|
29
|
-
import './chunk-
|
|
30
|
-
export { textEditorClasses } from './chunk-
|
|
31
|
-
import './chunk-
|
|
1
|
+
export { defineTextEditorPlugin } from './chunks/chunk-75IVOL6Q.mjs';
|
|
2
|
+
export { TEXT_EDITOR_ALLOWED_TYPES, TEXT_EDITOR_FILE_SIZE } from './chunks/chunk-DAVC2Z22.mjs';
|
|
3
|
+
export { createTextEditor } from './chunks/chunk-F4KBJIZJ.mjs';
|
|
4
|
+
import './chunks/chunk-4BI7WWVV.mjs';
|
|
5
|
+
import './chunks/chunk-QZUFYVD5.mjs';
|
|
6
|
+
import './chunks/chunk-LHZDU6AA.mjs';
|
|
7
|
+
import './chunks/chunk-PSOP5GNT.mjs';
|
|
8
|
+
import './chunks/chunk-SFUE4QBU.mjs';
|
|
9
|
+
import './chunks/chunk-XOMJOYJG.mjs';
|
|
10
|
+
import './chunks/chunk-KA3KNPLZ.mjs';
|
|
11
|
+
import './chunks/chunk-NZCWIEXE.mjs';
|
|
12
|
+
import './chunks/chunk-MSPB65AH.mjs';
|
|
13
|
+
import './chunks/chunk-F2THMQFM.mjs';
|
|
14
|
+
import './chunks/chunk-UN74246B.mjs';
|
|
15
|
+
export { defaultTextEditorProps } from './chunks/chunk-C6CEVLOL.mjs';
|
|
16
|
+
export { defaultTextEditorRefs } from './chunks/chunk-VXO6D7N5.mjs';
|
|
17
|
+
export { defaultTextEditorState } from './chunks/chunk-4NWX3EPS.mjs';
|
|
18
|
+
import './chunks/chunk-RE46J3VH.mjs';
|
|
19
|
+
import './chunks/chunk-LYB4TGKX.mjs';
|
|
20
|
+
export { baseMarks, baseNodes, createEditorSchema, extendNodeSpec, getEditorSchema } from './chunks/chunk-QMEKZ64Z.mjs';
|
|
21
|
+
import './chunks/chunk-MMY4F74E.mjs';
|
|
22
|
+
import './chunks/chunk-YXOJODMQ.mjs';
|
|
23
|
+
import './chunks/chunk-UHENKXGQ.mjs';
|
|
24
|
+
import './chunks/chunk-4C4R23A3.mjs';
|
|
25
|
+
import './chunks/chunk-XO4UUELZ.mjs';
|
|
26
|
+
import './chunks/chunk-UORFAHNO.mjs';
|
|
27
|
+
import './chunks/chunk-ZSXWDZMQ.mjs';
|
|
28
|
+
import './chunks/chunk-C2TRJCIH.mjs';
|
|
29
|
+
import './chunks/chunk-MMU3VGMT.mjs';
|
|
30
|
+
export { textEditorClasses } from './chunks/chunk-25Y5HLDY.mjs';
|
|
31
|
+
import './chunks/chunk-FLGC65SR.mjs';
|
|
32
32
|
|
|
33
33
|
// src/logic/collectPluginCommands.ts
|
|
34
34
|
function collectPluginCommands(installed) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { createColumnWidthPinPlugin } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { createColumnWidthPinPlugin } from '../chunks/chunk-SFUE4QBU.mjs';
|
|
2
|
+
import '../chunks/chunk-FLGC65SR.mjs';
|
|
3
3
|
//# sourceMappingURL=columnWidthPin.mjs.map
|
|
4
4
|
//# sourceMappingURL=columnWidthPin.mjs.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { createContextToolbarPlugin } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
1
|
+
export { createContextToolbarPlugin } from '../chunks/chunk-PSOP5GNT.mjs';
|
|
2
|
+
import '../chunks/chunk-4C4R23A3.mjs';
|
|
3
|
+
import '../chunks/chunk-FLGC65SR.mjs';
|
|
4
4
|
//# sourceMappingURL=contextToolbar.mjs.map
|
|
5
5
|
//# sourceMappingURL=contextToolbar.mjs.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { defineTextEditorPlugin } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { defineTextEditorPlugin } from '../chunks/chunk-75IVOL6Q.mjs';
|
|
2
|
+
import '../chunks/chunk-FLGC65SR.mjs';
|
|
3
3
|
//# sourceMappingURL=defineTextEditorPlugin.mjs.map
|
|
4
4
|
//# sourceMappingURL=defineTextEditorPlugin.mjs.map
|