@phuong-tran-redoc/document-engine-core 0.0.29 → 0.0.31
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/package.json
CHANGED
|
@@ -122,6 +122,12 @@ export const StyledTableHeader = TableHeader.extend({
|
|
|
122
122
|
export const StyledTable = Table.extend({
|
|
123
123
|
// name: 'styledTable',
|
|
124
124
|
// draggable: true,
|
|
125
|
+
addOptions () {
|
|
126
|
+
return {
|
|
127
|
+
...this.parent?.(),
|
|
128
|
+
enableNodeView: true
|
|
129
|
+
};
|
|
130
|
+
},
|
|
125
131
|
addAttributes () {
|
|
126
132
|
const parent = this.parent?.() ?? {};
|
|
127
133
|
return {
|
|
@@ -431,12 +437,16 @@ export const StyledTable = Table.extend({
|
|
|
431
437
|
};
|
|
432
438
|
},
|
|
433
439
|
addNodeView () {
|
|
440
|
+
const options = this.options;
|
|
441
|
+
if (options.enableNodeView === false) {
|
|
442
|
+
return undefined;
|
|
443
|
+
}
|
|
434
444
|
// Only use custom NodeView (with handle) when editor is editable
|
|
435
445
|
return (props)=>{
|
|
436
446
|
// Check if editor is editable
|
|
437
447
|
if (!props.editor.isEditable) {
|
|
438
448
|
// Return undefined to use default table rendering (no widget wrapper)
|
|
439
|
-
return
|
|
449
|
+
return undefined;
|
|
440
450
|
}
|
|
441
451
|
// Editor is editable → use custom NodeView with handle
|
|
442
452
|
return createTableNodeView(props);
|
|
@@ -4,10 +4,22 @@ export const PageBreak = Node.create({
|
|
|
4
4
|
group: 'block',
|
|
5
5
|
atom: true,
|
|
6
6
|
selectable: true,
|
|
7
|
+
// addNodeView() {
|
|
8
|
+
// return createPageBreakNodeView;
|
|
9
|
+
// },
|
|
7
10
|
parseHTML () {
|
|
8
11
|
return [
|
|
12
|
+
// ----------------------------------------------------------
|
|
13
|
+
// RULE 1: Standard Tiptap Format (Ưu tiên cao nhất)
|
|
14
|
+
// ----------------------------------------------------------
|
|
9
15
|
{
|
|
10
16
|
tag: 'div[data-page-break]'
|
|
17
|
+
},
|
|
18
|
+
// ----------------------------------------------------------
|
|
19
|
+
// RULE 2: CKEditor Format (Ưu tiên thấp nhất)
|
|
20
|
+
// ----------------------------------------------------------
|
|
21
|
+
{
|
|
22
|
+
tag: 'div.page-break'
|
|
11
23
|
}
|
|
12
24
|
];
|
|
13
25
|
},
|
|
@@ -17,7 +29,7 @@ export const PageBreak = Node.create({
|
|
|
17
29
|
mergeAttributes(HTMLAttributes, {
|
|
18
30
|
'data-page-break': 'true',
|
|
19
31
|
class: 'document-engine-page-break',
|
|
20
|
-
style: 'break-before: page;'
|
|
32
|
+
style: 'break-before: page; page-break-before: always;'
|
|
21
33
|
}),
|
|
22
34
|
[
|
|
23
35
|
'span',
|
|
@@ -42,3 +42,7 @@ export declare class TableNodeView extends HandleNodeView {
|
|
|
42
42
|
private updateColgroup;
|
|
43
43
|
}
|
|
44
44
|
export declare const createTableNodeView: (props: NodeViewRendererProps) => TableNodeView;
|
|
45
|
+
export declare class PageBreakNodeView extends HandleNodeView {
|
|
46
|
+
createContentElement(): HTMLElement;
|
|
47
|
+
}
|
|
48
|
+
export declare const createPageBreakNodeView: (props: NodeViewRendererProps) => PageBreakNodeView;
|
|
@@ -288,3 +288,24 @@ export class TableNodeView extends HandleNodeView {
|
|
|
288
288
|
export const createTableNodeView = (props)=>{
|
|
289
289
|
return new TableNodeView(props.node, props.view, props.getPos);
|
|
290
290
|
};
|
|
291
|
+
export class PageBreakNodeView extends HandleNodeView {
|
|
292
|
+
createContentElement() {
|
|
293
|
+
// Create page break container
|
|
294
|
+
const pageBreakDiv = document.createElement('div');
|
|
295
|
+
pageBreakDiv.className = 'document-engine-page-break';
|
|
296
|
+
pageBreakDiv.setAttribute('data-page-break', 'true');
|
|
297
|
+
pageBreakDiv.style.cssText = 'break-before: page;';
|
|
298
|
+
pageBreakDiv.contentEditable = 'false';
|
|
299
|
+
// Create label
|
|
300
|
+
const label = document.createElement('span');
|
|
301
|
+
label.className = 'document-engine-page-break-label';
|
|
302
|
+
label.textContent = 'Page break';
|
|
303
|
+
label.contentEditable = 'false';
|
|
304
|
+
pageBreakDiv.appendChild(label);
|
|
305
|
+
return pageBreakDiv;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
// Factory function for PageBreak NodeView
|
|
309
|
+
export const createPageBreakNodeView = (props)=>{
|
|
310
|
+
return new PageBreakNodeView(props.node, props.view, props.getPos);
|
|
311
|
+
};
|