@primeui/texteditor-core 0.0.1-alpha.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/LICENSE +23 -0
- package/README.md +1 -0
- package/dist/chunk-22B454VC.mjs +83 -0
- package/dist/chunk-22B454VC.mjs.map +1 -0
- package/dist/chunk-3RKMABZR.mjs +320 -0
- package/dist/chunk-3RKMABZR.mjs.map +1 -0
- package/dist/chunk-6GY64GPU.mjs +18 -0
- package/dist/chunk-6GY64GPU.mjs.map +1 -0
- package/dist/chunk-6YDCG63C.mjs +833 -0
- package/dist/chunk-6YDCG63C.mjs.map +1 -0
- package/dist/chunk-6ZN5XRH2.mjs +45 -0
- package/dist/chunk-6ZN5XRH2.mjs.map +1 -0
- package/dist/chunk-72T5I4O4.mjs +76 -0
- package/dist/chunk-72T5I4O4.mjs.map +1 -0
- package/dist/chunk-7QCHSEN2.mjs +16 -0
- package/dist/chunk-7QCHSEN2.mjs.map +1 -0
- package/dist/chunk-AJOKUIQD.mjs +33 -0
- package/dist/chunk-AJOKUIQD.mjs.map +1 -0
- package/dist/chunk-AUTGNC2Q.mjs +197 -0
- package/dist/chunk-AUTGNC2Q.mjs.map +1 -0
- package/dist/chunk-CRAB2MFE.mjs +19 -0
- package/dist/chunk-CRAB2MFE.mjs.map +1 -0
- package/dist/chunk-DXPG5XMX.mjs +18 -0
- package/dist/chunk-DXPG5XMX.mjs.map +1 -0
- package/dist/chunk-E2KXUP3F.mjs +9 -0
- package/dist/chunk-E2KXUP3F.mjs.map +1 -0
- package/dist/chunk-EA2YI7LA.mjs +23 -0
- package/dist/chunk-EA2YI7LA.mjs.map +1 -0
- package/dist/chunk-F7BJWPT6.mjs +401 -0
- package/dist/chunk-F7BJWPT6.mjs.map +1 -0
- package/dist/chunk-FFCQLWS5.mjs +32 -0
- package/dist/chunk-FFCQLWS5.mjs.map +1 -0
- package/dist/chunk-GG56GLXC.mjs +42 -0
- package/dist/chunk-GG56GLXC.mjs.map +1 -0
- package/dist/chunk-GGPBV4BM.mjs +37 -0
- package/dist/chunk-GGPBV4BM.mjs.map +1 -0
- package/dist/chunk-H3RFOYCT.mjs +27 -0
- package/dist/chunk-H3RFOYCT.mjs.map +1 -0
- package/dist/chunk-IUQKSDKG.mjs +23 -0
- package/dist/chunk-IUQKSDKG.mjs.map +1 -0
- package/dist/chunk-J5LGTIGS.mjs +9 -0
- package/dist/chunk-J5LGTIGS.mjs.map +1 -0
- package/dist/chunk-KNZAMA6H.mjs +198 -0
- package/dist/chunk-KNZAMA6H.mjs.map +1 -0
- package/dist/chunk-MNKMKFLQ.mjs +27 -0
- package/dist/chunk-MNKMKFLQ.mjs.map +1 -0
- package/dist/chunk-MWT5PK3Z.mjs +52 -0
- package/dist/chunk-MWT5PK3Z.mjs.map +1 -0
- package/dist/chunk-NWRVBNBW.mjs +65 -0
- package/dist/chunk-NWRVBNBW.mjs.map +1 -0
- package/dist/chunk-OGEMGWLR.mjs +180 -0
- package/dist/chunk-OGEMGWLR.mjs.map +1 -0
- package/dist/chunk-PRFYR67X.mjs +60 -0
- package/dist/chunk-PRFYR67X.mjs.map +1 -0
- package/dist/chunk-PT2O4RV7.mjs +143 -0
- package/dist/chunk-PT2O4RV7.mjs.map +1 -0
- package/dist/chunk-PT5V6UYE.mjs +10 -0
- package/dist/chunk-PT5V6UYE.mjs.map +1 -0
- package/dist/chunk-RH45QRSV.mjs +26 -0
- package/dist/chunk-RH45QRSV.mjs.map +1 -0
- package/dist/chunk-RQ2HHNI6.mjs +55 -0
- package/dist/chunk-RQ2HHNI6.mjs.map +1 -0
- package/dist/chunk-TB7ZSSR2.mjs +6 -0
- package/dist/chunk-TB7ZSSR2.mjs.map +1 -0
- package/dist/chunk-TBQVZVKA.mjs +1891 -0
- package/dist/chunk-TBQVZVKA.mjs.map +1 -0
- package/dist/chunk-VWGQMUPD.mjs +182 -0
- package/dist/chunk-VWGQMUPD.mjs.map +1 -0
- package/dist/chunk-XKY2VYPW.mjs +26 -0
- package/dist/chunk-XKY2VYPW.mjs.map +1 -0
- package/dist/chunk-XSVIGDQR.mjs +22 -0
- package/dist/chunk-XSVIGDQR.mjs.map +1 -0
- package/dist/chunk-YHMP6AN3.mjs +231 -0
- package/dist/chunk-YHMP6AN3.mjs.map +1 -0
- package/dist/commands/index.d.mts +13 -0
- package/dist/commands/index.mjs +13 -0
- package/dist/commands/index.mjs.map +1 -0
- package/dist/createTextEditor.d.mts +7 -0
- package/dist/createTextEditor.mjs +31 -0
- package/dist/createTextEditor.mjs.map +1 -0
- package/dist/index.d.mts +17 -0
- package/dist/index.mjs +45 -0
- package/dist/index.mjs.map +1 -0
- package/dist/plugins/columnWidthPin.d.mts +5 -0
- package/dist/plugins/columnWidthPin.mjs +4 -0
- package/dist/plugins/columnWidthPin.mjs.map +1 -0
- package/dist/plugins/contextToolbar.d.mts +9 -0
- package/dist/plugins/contextToolbar.mjs +5 -0
- package/dist/plugins/contextToolbar.mjs.map +1 -0
- package/dist/plugins/defineTextEditorPlugin.d.mts +20 -0
- package/dist/plugins/defineTextEditorPlugin.mjs +4 -0
- package/dist/plugins/defineTextEditorPlugin.mjs.map +1 -0
- package/dist/plugins/inputRules.d.mts +14 -0
- package/dist/plugins/inputRules.mjs +8 -0
- package/dist/plugins/inputRules.mjs.map +1 -0
- package/dist/plugins/keymap.d.mts +16 -0
- package/dist/plugins/keymap.mjs +6 -0
- package/dist/plugins/keymap.mjs.map +1 -0
- package/dist/plugins/mention.d.mts +24 -0
- package/dist/plugins/mention.mjs +5 -0
- package/dist/plugins/mention.mjs.map +1 -0
- package/dist/plugins/mentionController.d.mts +16 -0
- package/dist/plugins/mentionController.mjs +4 -0
- package/dist/plugins/mentionController.mjs.map +1 -0
- package/dist/plugins/placeholder.d.mts +9 -0
- package/dist/plugins/placeholder.mjs +5 -0
- package/dist/plugins/placeholder.mjs.map +1 -0
- package/dist/plugins/registry.d.mts +7 -0
- package/dist/plugins/registry.mjs +4 -0
- package/dist/plugins/registry.mjs.map +1 -0
- package/dist/plugins/selectionHighlight.d.mts +14 -0
- package/dist/plugins/selectionHighlight.mjs +5 -0
- package/dist/plugins/selectionHighlight.mjs.map +1 -0
- package/dist/plugins/slashCommands.d.mts +28 -0
- package/dist/plugins/slashCommands.mjs +5 -0
- package/dist/plugins/slashCommands.mjs.map +1 -0
- package/dist/plugins/tableOverlay.d.mts +15 -0
- package/dist/plugins/tableOverlay.mjs +6 -0
- package/dist/plugins/tableOverlay.mjs.map +1 -0
- package/dist/plugins/trailingNode.d.mts +6 -0
- package/dist/plugins/trailingNode.mjs +4 -0
- package/dist/plugins/trailingNode.mjs.map +1 -0
- package/dist/position-DbkbTrFL.d.mts +50 -0
- package/dist/schema/index.d.mts +89 -0
- package/dist/schema/index.mjs +8 -0
- package/dist/schema/index.mjs.map +1 -0
- package/dist/serialization/index.d.mts +8 -0
- package/dist/serialization/index.mjs +5 -0
- package/dist/serialization/index.mjs.map +1 -0
- package/dist/texteditor.classes.d.mts +34 -0
- package/dist/texteditor.classes.mjs +4 -0
- package/dist/texteditor.classes.mjs.map +1 -0
- package/dist/texteditor.constants.d.mts +36 -0
- package/dist/texteditor.constants.mjs +4 -0
- package/dist/texteditor.constants.mjs.map +1 -0
- package/dist/texteditor.props.d.mts +5 -0
- package/dist/texteditor.props.mjs +4 -0
- package/dist/texteditor.props.mjs.map +1 -0
- package/dist/texteditor.refs.d.mts +5 -0
- package/dist/texteditor.refs.mjs +4 -0
- package/dist/texteditor.refs.mjs.map +1 -0
- package/dist/texteditor.state.d.mts +5 -0
- package/dist/texteditor.state.mjs +4 -0
- package/dist/texteditor.state.mjs.map +1 -0
- package/dist/ui/focus.d.mts +5 -0
- package/dist/ui/focus.mjs +4 -0
- package/dist/ui/focus.mjs.map +1 -0
- package/dist/ui/index.d.mts +6 -0
- package/dist/ui/index.mjs +9 -0
- package/dist/ui/index.mjs.map +1 -0
- package/dist/ui/keyboard.d.mts +4 -0
- package/dist/ui/keyboard.mjs +4 -0
- package/dist/ui/keyboard.mjs.map +1 -0
- package/dist/ui/menu.d.mts +10 -0
- package/dist/ui/menu.mjs +4 -0
- package/dist/ui/menu.mjs.map +1 -0
- package/dist/ui/positioning.d.mts +30 -0
- package/dist/ui/positioning.mjs +5 -0
- package/dist/ui/positioning.mjs.map +1 -0
- package/dist/ui/scroll.d.mts +6 -0
- package/dist/ui/scroll.mjs +4 -0
- package/dist/ui/scroll.mjs.map +1 -0
- package/dist/utils/index.d.mts +18 -0
- package/dist/utils/index.mjs +18 -0
- package/dist/utils/index.mjs.map +1 -0
- package/package.json +73 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// src/ui/keyboard.ts
|
|
2
|
+
function computeArrowNavIndex(currentIdx, itemCount, dir) {
|
|
3
|
+
if (itemCount === 0) return -1;
|
|
4
|
+
if (dir === "down") {
|
|
5
|
+
return currentIdx < 0 ? 0 : (currentIdx + 1) % itemCount;
|
|
6
|
+
}
|
|
7
|
+
return currentIdx < 0 ? itemCount - 1 : (currentIdx - 1 + itemCount) % itemCount;
|
|
8
|
+
}
|
|
9
|
+
function computeFocusTrapTarget(itemCount, focusedIdx, shift) {
|
|
10
|
+
if (itemCount === 0) return -1;
|
|
11
|
+
if (shift) {
|
|
12
|
+
return focusedIdx <= 0 ? itemCount - 1 : focusedIdx - 1;
|
|
13
|
+
}
|
|
14
|
+
return focusedIdx === -1 || focusedIdx === itemCount - 1 ? 0 : focusedIdx + 1;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export { computeArrowNavIndex, computeFocusTrapTarget };
|
|
18
|
+
//# sourceMappingURL=chunk-CRAB2MFE.mjs.map
|
|
19
|
+
//# sourceMappingURL=chunk-CRAB2MFE.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-CRAB2MFE.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"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// src/ui/scroll.ts
|
|
2
|
+
function computeEdgeScrollSpeed(clientY, rect, threshold, maxSpeed) {
|
|
3
|
+
const fromTop = clientY - rect.top;
|
|
4
|
+
const fromBottom = rect.bottom - clientY;
|
|
5
|
+
if (fromTop < threshold) {
|
|
6
|
+
const ratio = Math.max(0, Math.min(1, (threshold - fromTop) / threshold));
|
|
7
|
+
return -Math.ceil(ratio * maxSpeed);
|
|
8
|
+
}
|
|
9
|
+
if (fromBottom < threshold) {
|
|
10
|
+
const ratio = Math.max(0, Math.min(1, (threshold - fromBottom) / threshold));
|
|
11
|
+
return Math.ceil(ratio * maxSpeed);
|
|
12
|
+
}
|
|
13
|
+
return 0;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export { computeEdgeScrollSpeed };
|
|
17
|
+
//# sourceMappingURL=chunk-DXPG5XMX.mjs.map
|
|
18
|
+
//# sourceMappingURL=chunk-DXPG5XMX.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ui/scroll.ts"],"names":[],"mappings":";AAAO,SAAS,sBAAA,CAAuB,OAAA,EAAiB,IAAA,EAAuC,SAAA,EAAmB,QAAA,EAA0B;AACxI,EAAA,MAAM,OAAA,GAAU,UAAU,IAAA,CAAK,GAAA;AAC/B,EAAA,MAAM,UAAA,GAAa,KAAK,MAAA,GAAS,OAAA;AAEjC,EAAA,IAAI,UAAU,SAAA,EAAW;AACrB,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,IAAI,CAAA,EAAA,CAAI,SAAA,GAAY,OAAA,IAAW,SAAS,CAAC,CAAA;AAExE,IAAA,OAAO,CAAC,IAAA,CAAK,IAAA,CAAK,KAAA,GAAQ,QAAQ,CAAA;AAAA,EACtC;AAEA,EAAA,IAAI,aAAa,SAAA,EAAW;AACxB,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,IAAI,CAAA,EAAA,CAAI,SAAA,GAAY,UAAA,IAAc,SAAS,CAAC,CAAA;AAE3E,IAAA,OAAO,IAAA,CAAK,IAAA,CAAK,KAAA,GAAQ,QAAQ,CAAA;AAAA,EACrC;AAEA,EAAA,OAAO,CAAA;AACX","file":"chunk-DXPG5XMX.mjs","sourcesContent":["export function computeEdgeScrollSpeed(clientY: number, rect: { top: number; bottom: number }, threshold: number, maxSpeed: number): number {\n const fromTop = clientY - rect.top;\n const fromBottom = rect.bottom - clientY;\n\n if (fromTop < threshold) {\n const ratio = Math.max(0, Math.min(1, (threshold - fromTop) / threshold));\n\n return -Math.ceil(ratio * maxSpeed);\n }\n\n if (fromBottom < threshold) {\n const ratio = Math.max(0, Math.min(1, (threshold - fromBottom) / threshold));\n\n return Math.ceil(ratio * maxSpeed);\n }\n\n return 0;\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-E2KXUP3F.mjs","sourcesContent":["import type { TextEditorRefs } from '@primeui/texteditor-types';\n\nexport const defaultTextEditorRefs: TextEditorRefs = {\n element: undefined,\n fileInputElement: undefined\n};\n"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { PluginKey, Plugin } from 'prosemirror-state';
|
|
2
|
+
|
|
3
|
+
// src/plugins/trailingNode.ts
|
|
4
|
+
var trailingNodeKey = new PluginKey("trailingNode");
|
|
5
|
+
function createTrailingNodePlugin(schema) {
|
|
6
|
+
const paragraphType = schema.nodes.paragraph;
|
|
7
|
+
return new Plugin({
|
|
8
|
+
key: trailingNodeKey,
|
|
9
|
+
appendTransaction(transactions, _oldState, newState) {
|
|
10
|
+
if (!transactions.some((tr) => tr.docChanged)) return null;
|
|
11
|
+
const { doc } = newState;
|
|
12
|
+
const lastNode = doc.lastChild;
|
|
13
|
+
if (!lastNode || lastNode.type !== paragraphType) {
|
|
14
|
+
return newState.tr.insert(doc.content.size, paragraphType.create());
|
|
15
|
+
}
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export { createTrailingNodePlugin };
|
|
22
|
+
//# sourceMappingURL=chunk-EA2YI7LA.mjs.map
|
|
23
|
+
//# sourceMappingURL=chunk-EA2YI7LA.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-EA2YI7LA.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"]}
|
|
@@ -0,0 +1,401 @@
|
|
|
1
|
+
import { sanitizeCssValue } from './chunk-7QCHSEN2.mjs';
|
|
2
|
+
import { sanitizeImageUrl, sanitizeTextAttr } from './chunk-MNKMKFLQ.mjs';
|
|
3
|
+
import { textEditorClasses } from './chunk-GG56GLXC.mjs';
|
|
4
|
+
import { __export } from './chunk-J5LGTIGS.mjs';
|
|
5
|
+
|
|
6
|
+
// src/schema/nodes.ts
|
|
7
|
+
var nodes_exports = {};
|
|
8
|
+
__export(nodes_exports, {
|
|
9
|
+
blockquote: () => blockquote,
|
|
10
|
+
bullet_list: () => bullet_list,
|
|
11
|
+
check_list: () => check_list,
|
|
12
|
+
check_list_item: () => check_list_item,
|
|
13
|
+
code_block: () => code_block,
|
|
14
|
+
doc: () => doc,
|
|
15
|
+
document_upload_placeholder: () => document_upload_placeholder,
|
|
16
|
+
hard_break: () => hard_break,
|
|
17
|
+
heading: () => heading,
|
|
18
|
+
horizontal_rule: () => horizontal_rule,
|
|
19
|
+
image: () => image,
|
|
20
|
+
image_upload_placeholder: () => image_upload_placeholder,
|
|
21
|
+
list_item: () => list_item,
|
|
22
|
+
mention: () => mention,
|
|
23
|
+
ordered_list: () => ordered_list,
|
|
24
|
+
paragraph: () => paragraph,
|
|
25
|
+
parseDimension: () => parseDimension,
|
|
26
|
+
table: () => table,
|
|
27
|
+
table_cell: () => table_cell,
|
|
28
|
+
table_header: () => table_header,
|
|
29
|
+
table_row: () => table_row,
|
|
30
|
+
text: () => text
|
|
31
|
+
});
|
|
32
|
+
function stripMarkupFromJson(value) {
|
|
33
|
+
if (typeof value === "string") return value.replace(/[<>]/g, "");
|
|
34
|
+
if (Array.isArray(value)) return value.map(stripMarkupFromJson);
|
|
35
|
+
if (value && typeof value === "object") {
|
|
36
|
+
return Object.fromEntries(Object.entries(value).map(([k, v]) => [k, stripMarkupFromJson(v)]));
|
|
37
|
+
}
|
|
38
|
+
return value;
|
|
39
|
+
}
|
|
40
|
+
function parseColwidth(raw) {
|
|
41
|
+
if (!raw) return null;
|
|
42
|
+
const widths = raw.split(",").map(Number).filter(Number.isFinite);
|
|
43
|
+
return widths.length > 0 ? widths : null;
|
|
44
|
+
}
|
|
45
|
+
var MENTION_DATA_MAX_LENGTH = 64 * 1024;
|
|
46
|
+
function parseDimension(raw) {
|
|
47
|
+
if (!raw) return null;
|
|
48
|
+
const n = Number(raw);
|
|
49
|
+
return Number.isFinite(n) && n >= 0 ? String(n) : null;
|
|
50
|
+
}
|
|
51
|
+
var doc = {
|
|
52
|
+
content: "block+"
|
|
53
|
+
};
|
|
54
|
+
var text = {
|
|
55
|
+
group: "inline"
|
|
56
|
+
};
|
|
57
|
+
var paragraph = {
|
|
58
|
+
content: "inline*",
|
|
59
|
+
group: "block",
|
|
60
|
+
attrs: {
|
|
61
|
+
textAlign: { default: null }
|
|
62
|
+
},
|
|
63
|
+
parseDOM: [
|
|
64
|
+
{
|
|
65
|
+
tag: "p",
|
|
66
|
+
getAttrs(node) {
|
|
67
|
+
return { textAlign: node.style.textAlign || null };
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
],
|
|
71
|
+
toDOM(node) {
|
|
72
|
+
const attrs = {};
|
|
73
|
+
const align = ["left", "center", "right", "justify"].includes(node.attrs.textAlign) ? node.attrs.textAlign : null;
|
|
74
|
+
if (align) attrs.style = `text-align: ${align}`;
|
|
75
|
+
return ["p", attrs, 0];
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
var heading = {
|
|
79
|
+
content: "inline*",
|
|
80
|
+
group: "block",
|
|
81
|
+
attrs: {
|
|
82
|
+
level: { default: 1 },
|
|
83
|
+
textAlign: { default: null }
|
|
84
|
+
},
|
|
85
|
+
defining: true,
|
|
86
|
+
parseDOM: [1, 2, 3, 4, 5, 6].map((level) => ({
|
|
87
|
+
tag: `h${level}`,
|
|
88
|
+
attrs: { level },
|
|
89
|
+
getAttrs(node) {
|
|
90
|
+
return { level, textAlign: node.style.textAlign || null };
|
|
91
|
+
}
|
|
92
|
+
})),
|
|
93
|
+
toDOM(node) {
|
|
94
|
+
const attrs = {};
|
|
95
|
+
const align = ["left", "center", "right", "justify"].includes(node.attrs.textAlign) ? node.attrs.textAlign : null;
|
|
96
|
+
if (align) attrs.style = `text-align: ${align}`;
|
|
97
|
+
return [`h${node.attrs.level}`, attrs, 0];
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
var blockquote = {
|
|
101
|
+
content: "block+",
|
|
102
|
+
group: "block",
|
|
103
|
+
defining: true,
|
|
104
|
+
parseDOM: [{ tag: "blockquote" }],
|
|
105
|
+
toDOM() {
|
|
106
|
+
return ["blockquote", 0];
|
|
107
|
+
}
|
|
108
|
+
};
|
|
109
|
+
var code_block = {
|
|
110
|
+
content: "text*",
|
|
111
|
+
marks: "",
|
|
112
|
+
group: "block",
|
|
113
|
+
code: true,
|
|
114
|
+
defining: true,
|
|
115
|
+
attrs: { language: { default: null } },
|
|
116
|
+
parseDOM: [
|
|
117
|
+
{
|
|
118
|
+
tag: "pre",
|
|
119
|
+
preserveWhitespace: "full",
|
|
120
|
+
getAttrs(node) {
|
|
121
|
+
const el = node;
|
|
122
|
+
const code = el.querySelector("code") ?? el;
|
|
123
|
+
const cls = code.getAttribute("class") || el.getAttribute("class") || "";
|
|
124
|
+
const match = cls.match(/language-([\w-]+)/);
|
|
125
|
+
return { language: match ? match[1] : el.getAttribute("data-language") || null };
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
],
|
|
129
|
+
toDOM(node) {
|
|
130
|
+
const lang = node.attrs.language;
|
|
131
|
+
return lang ? ["pre", { "data-language": lang }, ["code", { class: `language-${lang}` }, 0]] : ["pre", ["code", 0]];
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
var horizontal_rule = {
|
|
135
|
+
group: "block",
|
|
136
|
+
parseDOM: [{ tag: "hr" }],
|
|
137
|
+
toDOM() {
|
|
138
|
+
return ["hr"];
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
var hard_break = {
|
|
142
|
+
inline: true,
|
|
143
|
+
group: "inline",
|
|
144
|
+
selectable: false,
|
|
145
|
+
parseDOM: [{ tag: "br" }],
|
|
146
|
+
toDOM() {
|
|
147
|
+
return ["br"];
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
var image = {
|
|
151
|
+
inline: true,
|
|
152
|
+
group: "inline",
|
|
153
|
+
draggable: true,
|
|
154
|
+
attrs: {
|
|
155
|
+
src: {},
|
|
156
|
+
alt: { default: null },
|
|
157
|
+
width: { default: null },
|
|
158
|
+
height: { default: null }
|
|
159
|
+
},
|
|
160
|
+
parseDOM: [
|
|
161
|
+
{
|
|
162
|
+
tag: "img[src]",
|
|
163
|
+
getAttrs(node) {
|
|
164
|
+
const el = node;
|
|
165
|
+
const src = sanitizeImageUrl(el.getAttribute("src"));
|
|
166
|
+
if (src == null) return false;
|
|
167
|
+
return {
|
|
168
|
+
src,
|
|
169
|
+
alt: sanitizeTextAttr(el.getAttribute("alt")),
|
|
170
|
+
width: parseDimension(el.getAttribute("width")),
|
|
171
|
+
height: parseDimension(el.getAttribute("height"))
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
],
|
|
176
|
+
toDOM(node) {
|
|
177
|
+
const src = sanitizeImageUrl(node.attrs.src);
|
|
178
|
+
const attrs = { src: src ?? "" };
|
|
179
|
+
if (node.attrs.alt) attrs.alt = node.attrs.alt;
|
|
180
|
+
if (node.attrs.width) attrs.width = node.attrs.width;
|
|
181
|
+
if (node.attrs.height) attrs.height = node.attrs.height;
|
|
182
|
+
return ["img", attrs];
|
|
183
|
+
}
|
|
184
|
+
};
|
|
185
|
+
var mention = {
|
|
186
|
+
inline: true,
|
|
187
|
+
group: "inline",
|
|
188
|
+
atom: true,
|
|
189
|
+
attrs: {
|
|
190
|
+
id: { default: null },
|
|
191
|
+
label: {},
|
|
192
|
+
data: { default: null }
|
|
193
|
+
},
|
|
194
|
+
parseDOM: [
|
|
195
|
+
{
|
|
196
|
+
tag: "span[data-p-mention]",
|
|
197
|
+
getAttrs(node) {
|
|
198
|
+
const el = node;
|
|
199
|
+
const rawData = el.getAttribute("data-p-mention-data");
|
|
200
|
+
let data = null;
|
|
201
|
+
if (rawData && rawData.length <= MENTION_DATA_MAX_LENGTH) {
|
|
202
|
+
try {
|
|
203
|
+
data = stripMarkupFromJson(JSON.parse(rawData));
|
|
204
|
+
} catch {
|
|
205
|
+
data = null;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
return {
|
|
209
|
+
id: sanitizeTextAttr(el.getAttribute("data-p-mention-id")),
|
|
210
|
+
label: sanitizeTextAttr(el.textContent),
|
|
211
|
+
data
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
],
|
|
216
|
+
toDOM(node) {
|
|
217
|
+
const attrs = { class: textEditorClasses.mention, "data-p-mention": "", "data-p-mention-id": node.attrs.id || "" };
|
|
218
|
+
if (node.attrs.data != null) attrs["data-p-mention-data"] = JSON.stringify(node.attrs.data);
|
|
219
|
+
return ["span", attrs, node.attrs.label];
|
|
220
|
+
}
|
|
221
|
+
};
|
|
222
|
+
var image_upload_placeholder = {
|
|
223
|
+
group: "block",
|
|
224
|
+
atom: true,
|
|
225
|
+
selectable: false,
|
|
226
|
+
parseDOM: [{ tag: "div[data-p-image-upload]" }],
|
|
227
|
+
toDOM() {
|
|
228
|
+
return ["div", { "data-p-image-upload": "", class: textEditorClasses.imageUploadPlaceholder }];
|
|
229
|
+
}
|
|
230
|
+
};
|
|
231
|
+
var document_upload_placeholder = {
|
|
232
|
+
group: "block",
|
|
233
|
+
atom: true,
|
|
234
|
+
selectable: false,
|
|
235
|
+
parseDOM: [{ tag: "div[data-p-document-upload]" }],
|
|
236
|
+
toDOM() {
|
|
237
|
+
return ["div", { "data-p-document-upload": "", class: textEditorClasses.documentUploadPlaceholder }];
|
|
238
|
+
}
|
|
239
|
+
};
|
|
240
|
+
var bullet_list = {
|
|
241
|
+
content: "list_item+",
|
|
242
|
+
group: "block",
|
|
243
|
+
parseDOM: [{ tag: "ul", getAttrs: (node) => !node.hasAttribute("data-p-checked-list") && null }],
|
|
244
|
+
toDOM() {
|
|
245
|
+
return ["ul", 0];
|
|
246
|
+
}
|
|
247
|
+
};
|
|
248
|
+
var ordered_list = {
|
|
249
|
+
content: "list_item+",
|
|
250
|
+
group: "block",
|
|
251
|
+
attrs: { start: { default: 1 } },
|
|
252
|
+
parseDOM: [
|
|
253
|
+
{
|
|
254
|
+
tag: "ol",
|
|
255
|
+
getAttrs(node) {
|
|
256
|
+
return { start: node.start || 1 };
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
],
|
|
260
|
+
toDOM(node) {
|
|
261
|
+
return node.attrs.start === 1 ? ["ol", 0] : ["ol", { start: node.attrs.start }, 0];
|
|
262
|
+
}
|
|
263
|
+
};
|
|
264
|
+
var list_item = {
|
|
265
|
+
content: "paragraph block*",
|
|
266
|
+
parseDOM: [{ tag: "li", getAttrs: (node) => !node.hasAttribute("data-p-checked") && null }],
|
|
267
|
+
toDOM() {
|
|
268
|
+
return ["li", 0];
|
|
269
|
+
},
|
|
270
|
+
defining: true
|
|
271
|
+
};
|
|
272
|
+
var check_list = {
|
|
273
|
+
content: "check_list_item+",
|
|
274
|
+
group: "block",
|
|
275
|
+
parseDOM: [{ tag: "ul[data-p-checked-list]" }],
|
|
276
|
+
toDOM() {
|
|
277
|
+
return ["ul", { "data-p-checked-list": "" }, 0];
|
|
278
|
+
}
|
|
279
|
+
};
|
|
280
|
+
var check_list_item = {
|
|
281
|
+
content: "paragraph block*",
|
|
282
|
+
attrs: {
|
|
283
|
+
checked: { default: false }
|
|
284
|
+
},
|
|
285
|
+
parseDOM: [
|
|
286
|
+
{
|
|
287
|
+
tag: "li[data-p-checked]",
|
|
288
|
+
getAttrs(node) {
|
|
289
|
+
return { checked: node.getAttribute("data-p-checked") === "true" };
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
],
|
|
293
|
+
toDOM(node) {
|
|
294
|
+
return ["li", { "data-p-checked": node.attrs.checked ? "true" : "false" }, 0];
|
|
295
|
+
}
|
|
296
|
+
};
|
|
297
|
+
var table = {
|
|
298
|
+
content: "table_row+",
|
|
299
|
+
group: "block",
|
|
300
|
+
tableRole: "table",
|
|
301
|
+
isolating: true,
|
|
302
|
+
parseDOM: [{ tag: "table" }],
|
|
303
|
+
toDOM(node) {
|
|
304
|
+
const cols = [];
|
|
305
|
+
const firstRow = node.firstChild;
|
|
306
|
+
if (firstRow) {
|
|
307
|
+
firstRow.forEach((cell) => {
|
|
308
|
+
const span = cell.attrs.colspan ?? 1;
|
|
309
|
+
const widths = cell.attrs.colwidth;
|
|
310
|
+
for (let i = 0; i < span; i++) {
|
|
311
|
+
const w = widths?.[i];
|
|
312
|
+
cols.push(w ? ["col", { style: `width: ${w}px` }] : ["col", {}]);
|
|
313
|
+
}
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
return cols.length ? ["table", ["colgroup", ...cols], ["tbody", 0]] : ["table", ["tbody", 0]];
|
|
317
|
+
}
|
|
318
|
+
};
|
|
319
|
+
var table_row = {
|
|
320
|
+
content: "(table_cell | table_header)*",
|
|
321
|
+
tableRole: "row",
|
|
322
|
+
parseDOM: [{ tag: "tr" }],
|
|
323
|
+
toDOM() {
|
|
324
|
+
return ["tr", 0];
|
|
325
|
+
}
|
|
326
|
+
};
|
|
327
|
+
var table_cell = {
|
|
328
|
+
content: "block+",
|
|
329
|
+
attrs: {
|
|
330
|
+
colspan: { default: 1 },
|
|
331
|
+
rowspan: { default: 1 },
|
|
332
|
+
colwidth: { default: null },
|
|
333
|
+
backgroundColor: { default: null }
|
|
334
|
+
},
|
|
335
|
+
tableRole: "cell",
|
|
336
|
+
isolating: true,
|
|
337
|
+
parseDOM: [
|
|
338
|
+
{
|
|
339
|
+
tag: "td",
|
|
340
|
+
getAttrs(node) {
|
|
341
|
+
const el = node;
|
|
342
|
+
return {
|
|
343
|
+
colspan: el.colSpan || 1,
|
|
344
|
+
rowspan: el.rowSpan || 1,
|
|
345
|
+
colwidth: parseColwidth(el.getAttribute("data-colwidth")),
|
|
346
|
+
backgroundColor: sanitizeCssValue(el.style.backgroundColor)
|
|
347
|
+
};
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
],
|
|
351
|
+
toDOM(node) {
|
|
352
|
+
const attrs = {};
|
|
353
|
+
if (node.attrs.colspan !== 1) attrs.colspan = node.attrs.colspan;
|
|
354
|
+
if (node.attrs.rowspan !== 1) attrs.rowspan = node.attrs.rowspan;
|
|
355
|
+
if (node.attrs.colwidth) attrs["data-colwidth"] = node.attrs.colwidth.join(",");
|
|
356
|
+
const bg = sanitizeCssValue(node.attrs.backgroundColor);
|
|
357
|
+
if (bg) attrs.style = `background-color: ${bg}`;
|
|
358
|
+
return ["td", attrs, 0];
|
|
359
|
+
}
|
|
360
|
+
};
|
|
361
|
+
var table_header = {
|
|
362
|
+
content: "block+",
|
|
363
|
+
attrs: {
|
|
364
|
+
colspan: { default: 1 },
|
|
365
|
+
rowspan: { default: 1 },
|
|
366
|
+
colwidth: { default: null },
|
|
367
|
+
backgroundColor: { default: null },
|
|
368
|
+
scope: { default: "col" }
|
|
369
|
+
},
|
|
370
|
+
tableRole: "header_cell",
|
|
371
|
+
isolating: true,
|
|
372
|
+
parseDOM: [
|
|
373
|
+
{
|
|
374
|
+
tag: "th",
|
|
375
|
+
getAttrs(node) {
|
|
376
|
+
const el = node;
|
|
377
|
+
const rawScope = el.getAttribute("scope");
|
|
378
|
+
return {
|
|
379
|
+
colspan: el.colSpan || 1,
|
|
380
|
+
rowspan: el.rowSpan || 1,
|
|
381
|
+
colwidth: parseColwidth(el.getAttribute("data-colwidth")),
|
|
382
|
+
backgroundColor: sanitizeCssValue(el.style.backgroundColor),
|
|
383
|
+
scope: rawScope === "row" || rawScope === "col" ? rawScope : "col"
|
|
384
|
+
};
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
],
|
|
388
|
+
toDOM(node) {
|
|
389
|
+
const attrs = { scope: node.attrs.scope === "row" ? "row" : "col" };
|
|
390
|
+
if (node.attrs.colspan !== 1) attrs.colspan = node.attrs.colspan;
|
|
391
|
+
if (node.attrs.rowspan !== 1) attrs.rowspan = node.attrs.rowspan;
|
|
392
|
+
if (node.attrs.colwidth) attrs["data-colwidth"] = node.attrs.colwidth.join(",");
|
|
393
|
+
const bg = sanitizeCssValue(node.attrs.backgroundColor);
|
|
394
|
+
if (bg) attrs.style = `background-color: ${bg}`;
|
|
395
|
+
return ["th", attrs, 0];
|
|
396
|
+
}
|
|
397
|
+
};
|
|
398
|
+
|
|
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-F7BJWPT6.mjs.map
|
|
401
|
+
//# sourceMappingURL=chunk-F7BJWPT6.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/schema/nodes.ts"],"names":[],"mappings":"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","file":"chunk-F7BJWPT6.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"]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// src/ui/positioning.ts
|
|
2
|
+
function computePopoverPosition(anchor, popoverSize, viewport, opts) {
|
|
3
|
+
let top = anchor.bottom + opts.margin;
|
|
4
|
+
if (top + popoverSize.height > viewport.height - opts.margin) {
|
|
5
|
+
top = anchor.top - popoverSize.height - opts.margin;
|
|
6
|
+
}
|
|
7
|
+
if (top < opts.margin) top = opts.margin;
|
|
8
|
+
const physicalLeft = opts.isRtl ? anchor.left - popoverSize.width : anchor.left;
|
|
9
|
+
const left = clampWidth(physicalLeft, popoverSize.width, opts.margin, viewport.width);
|
|
10
|
+
return { top, left };
|
|
11
|
+
}
|
|
12
|
+
function computeSubmenuPosition(trigger, popoverSize, viewport, opts) {
|
|
13
|
+
let top = trigger.top;
|
|
14
|
+
if (top + popoverSize.height > viewport.height - opts.margin) {
|
|
15
|
+
top = viewport.height - popoverSize.height - opts.margin;
|
|
16
|
+
}
|
|
17
|
+
if (top < opts.margin) top = opts.margin;
|
|
18
|
+
const endLeft = opts.isRtl ? trigger.left - popoverSize.width - opts.margin : trigger.right + opts.margin;
|
|
19
|
+
const startLeft = opts.isRtl ? trigger.right + opts.margin : trigger.left - popoverSize.width - opts.margin;
|
|
20
|
+
const overflowsEnd = endLeft + popoverSize.width > viewport.width - opts.margin || endLeft < opts.margin;
|
|
21
|
+
const left = overflowsEnd ? startLeft : endLeft;
|
|
22
|
+
return { top, left };
|
|
23
|
+
}
|
|
24
|
+
function clampWidth(left, elWidth, margin, viewportWidth) {
|
|
25
|
+
if (left < margin) return margin;
|
|
26
|
+
if (left + elWidth > viewportWidth - margin) return viewportWidth - elWidth - margin;
|
|
27
|
+
return left;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export { computePopoverPosition, computeSubmenuPosition };
|
|
31
|
+
//# sourceMappingURL=chunk-FFCQLWS5.mjs.map
|
|
32
|
+
//# sourceMappingURL=chunk-FFCQLWS5.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ui/positioning.ts"],"names":[],"mappings":";AAwBO,SAAS,sBAAA,CAAuB,MAAA,EAAoB,WAAA,EAAmB,QAAA,EAAoB,IAAA,EAA0D;AACxJ,EAAA,IAAI,GAAA,GAAM,MAAA,CAAO,MAAA,GAAS,IAAA,CAAK,MAAA;AAE/B,EAAA,IAAI,MAAM,WAAA,CAAY,MAAA,GAAS,QAAA,CAAS,MAAA,GAAS,KAAK,MAAA,EAAQ;AAC1D,IAAA,GAAA,GAAM,MAAA,CAAO,GAAA,GAAM,WAAA,CAAY,MAAA,GAAS,IAAA,CAAK,MAAA;AAAA,EACjD;AAEA,EAAA,IAAI,GAAA,GAAM,IAAA,CAAK,MAAA,EAAQ,GAAA,GAAM,IAAA,CAAK,MAAA;AAElC,EAAA,MAAM,eAAe,IAAA,CAAK,KAAA,GAAQ,OAAO,IAAA,GAAO,WAAA,CAAY,QAAQ,MAAA,CAAO,IAAA;AAC3E,EAAA,MAAM,IAAA,GAAO,WAAW,YAAA,EAAc,WAAA,CAAY,OAAO,IAAA,CAAK,MAAA,EAAQ,SAAS,KAAK,CAAA;AAEpF,EAAA,OAAO,EAAE,KAAK,IAAA,EAAK;AACvB;AAEO,SAAS,sBAAA,CAAuB,OAAA,EAAqB,WAAA,EAAmB,QAAA,EAAoB,IAAA,EAA0D;AACzJ,EAAA,IAAI,MAAM,OAAA,CAAQ,GAAA;AAElB,EAAA,IAAI,MAAM,WAAA,CAAY,MAAA,GAAS,QAAA,CAAS,MAAA,GAAS,KAAK,MAAA,EAAQ;AAC1D,IAAA,GAAA,GAAM,QAAA,CAAS,MAAA,GAAS,WAAA,CAAY,MAAA,GAAS,IAAA,CAAK,MAAA;AAAA,EACtD;AAEA,EAAA,IAAI,GAAA,GAAM,IAAA,CAAK,MAAA,EAAQ,GAAA,GAAM,IAAA,CAAK,MAAA;AAElC,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,KAAA,GAAQ,OAAA,CAAQ,IAAA,GAAO,WAAA,CAAY,KAAA,GAAQ,IAAA,CAAK,MAAA,GAAS,OAAA,CAAQ,KAAA,GAAQ,IAAA,CAAK,MAAA;AACnG,EAAA,MAAM,SAAA,GAAY,IAAA,CAAK,KAAA,GAAQ,OAAA,CAAQ,KAAA,GAAQ,IAAA,CAAK,MAAA,GAAS,OAAA,CAAQ,IAAA,GAAO,WAAA,CAAY,KAAA,GAAQ,IAAA,CAAK,MAAA;AACrG,EAAA,MAAM,YAAA,GAAe,UAAU,WAAA,CAAY,KAAA,GAAQ,SAAS,KAAA,GAAQ,IAAA,CAAK,MAAA,IAAU,OAAA,GAAU,IAAA,CAAK,MAAA;AAClG,EAAA,MAAM,IAAA,GAAO,eAAe,SAAA,GAAY,OAAA;AAExC,EAAA,OAAO,EAAE,KAAK,IAAA,EAAK;AACvB;AAEA,SAAS,UAAA,CAAW,IAAA,EAAc,OAAA,EAAiB,MAAA,EAAgB,aAAA,EAA+B;AAC9F,EAAA,IAAI,IAAA,GAAO,QAAQ,OAAO,MAAA;AAC1B,EAAA,IAAI,OAAO,OAAA,GAAU,aAAA,GAAgB,MAAA,EAAQ,OAAO,gBAAgB,OAAA,GAAU,MAAA;AAE9E,EAAA,OAAO,IAAA;AACX","file":"chunk-FFCQLWS5.mjs","sourcesContent":["import { clampToViewport } from '../utils/position';\n\nexport interface Size {\n width: number;\n height: number;\n}\n\nexport interface Viewport {\n width: number;\n height: number;\n}\n\nexport interface AnchorRect {\n top: number;\n bottom: number;\n left: number;\n right: number;\n}\n\nexport interface PopoverPositionOpts {\n margin: number;\n isRtl: boolean;\n}\n\nexport function computePopoverPosition(anchor: AnchorRect, popoverSize: Size, viewport: Viewport, opts: PopoverPositionOpts): { top: number; left: number } {\n let top = anchor.bottom + opts.margin;\n\n if (top + popoverSize.height > viewport.height - opts.margin) {\n top = anchor.top - popoverSize.height - opts.margin;\n }\n\n if (top < opts.margin) top = opts.margin;\n\n const physicalLeft = opts.isRtl ? anchor.left - popoverSize.width : anchor.left;\n const left = clampWidth(physicalLeft, popoverSize.width, opts.margin, viewport.width);\n\n return { top, left };\n}\n\nexport function computeSubmenuPosition(trigger: AnchorRect, popoverSize: Size, viewport: Viewport, opts: PopoverPositionOpts): { top: number; left: number } {\n let top = trigger.top;\n\n if (top + popoverSize.height > viewport.height - opts.margin) {\n top = viewport.height - popoverSize.height - opts.margin;\n }\n\n if (top < opts.margin) top = opts.margin;\n\n const endLeft = opts.isRtl ? trigger.left - popoverSize.width - opts.margin : trigger.right + opts.margin;\n const startLeft = opts.isRtl ? trigger.right + opts.margin : trigger.left - popoverSize.width - opts.margin;\n const overflowsEnd = endLeft + popoverSize.width > viewport.width - opts.margin || endLeft < opts.margin;\n const left = overflowsEnd ? startLeft : endLeft;\n\n return { top, left };\n}\n\nfunction clampWidth(left: number, elWidth: number, margin: number, viewportWidth: number): number {\n if (left < margin) return margin;\n if (left + elWidth > viewportWidth - margin) return viewportWidth - elWidth - margin;\n\n return left;\n}\n\nexport { clampToViewport };\n"]}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// src/texteditor.classes.ts
|
|
2
|
+
var textEditorClasses = {
|
|
3
|
+
root: "p-text-editor",
|
|
4
|
+
toolbar: "p-text-editor-toolbar",
|
|
5
|
+
body: "p-text-editor-body",
|
|
6
|
+
content: "p-text-editor-content",
|
|
7
|
+
// Block mode
|
|
8
|
+
block: "p-text-editor-block",
|
|
9
|
+
blockContent: "p-text-editor-block-content",
|
|
10
|
+
blockControls: "p-text-editor-block-controls",
|
|
11
|
+
blockDropIndicator: "p-text-editor-block-drop-indicator",
|
|
12
|
+
blockPlaceholder: "p-text-editor-block-placeholder",
|
|
13
|
+
// Navigator
|
|
14
|
+
navigator: "p-text-editor-navigator",
|
|
15
|
+
navigatorBar: "p-text-editor-navigator-bar",
|
|
16
|
+
navigatorPopover: "p-text-editor-navigator-popover",
|
|
17
|
+
// Overlays
|
|
18
|
+
contextToolbar: "p-text-editor-context-toolbar",
|
|
19
|
+
popoverMenu: "p-text-editor-popover-menu",
|
|
20
|
+
popoverSubmenu: "p-text-editor-popover-submenu",
|
|
21
|
+
placeholder: "p-text-editor-placeholder",
|
|
22
|
+
// Table
|
|
23
|
+
tableSelectionOutline: "p-text-editor-table-selection-outline",
|
|
24
|
+
tableTrigger: "p-text-editor-table-trigger",
|
|
25
|
+
tableTriggerCell: "p-text-editor-table-trigger-cell",
|
|
26
|
+
tableTriggerCol: "p-text-editor-table-trigger-col",
|
|
27
|
+
tableTriggerRow: "p-text-editor-table-trigger-row",
|
|
28
|
+
tableAdd: "p-text-editor-table-add",
|
|
29
|
+
tableAddCol: "p-text-editor-table-add-col",
|
|
30
|
+
tableAddRow: "p-text-editor-table-add-row",
|
|
31
|
+
// Inline decorations
|
|
32
|
+
mentionTyping: "p-text-editor-mention-typing",
|
|
33
|
+
mention: "p-text-editor-mention",
|
|
34
|
+
slashTyping: "p-text-editor-slash-typing",
|
|
35
|
+
selection: "p-text-editor-selection",
|
|
36
|
+
imageUploadPlaceholder: "p-text-editor-image-upload-placeholder",
|
|
37
|
+
documentUploadPlaceholder: "p-text-editor-document-upload-placeholder"
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export { textEditorClasses };
|
|
41
|
+
//# sourceMappingURL=chunk-GG56GLXC.mjs.map
|
|
42
|
+
//# sourceMappingURL=chunk-GG56GLXC.mjs.map
|
|
@@ -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-GG56GLXC.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"]}
|