docxodus 9.4.0 → 9.6.0
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/editor.bundle.js +514 -93
- package/dist/editor.d.ts +71 -11
- package/dist/editor.d.ts.map +1 -1
- package/dist/editor.js +220 -69
- package/dist/editor.js.map +1 -1
- package/dist/embed.bundle.js +523 -94
- package/dist/embed.iife.js +523 -94
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/page-geometry.d.ts +74 -0
- package/dist/page-geometry.d.ts.map +1 -0
- package/dist/page-geometry.js +105 -0
- package/dist/page-geometry.js.map +1 -0
- package/dist/pagination.bundle.js +8 -6
- package/dist/pagination.d.ts +2 -25
- package/dist/pagination.d.ts.map +1 -1
- package/dist/pagination.js +2 -45
- package/dist/pagination.js.map +1 -1
- package/dist/ribbon-chrome.d.ts +1 -1
- package/dist/ribbon-chrome.d.ts.map +1 -1
- package/dist/ribbon-chrome.js +18 -18
- package/dist/ribbon.js +2 -0
- package/dist/ribbon.js.map +1 -1
- package/dist/viewport.d.ts +80 -0
- package/dist/viewport.d.ts.map +1 -0
- package/dist/viewport.js +139 -0
- package/dist/viewport.js.map +1 -0
- package/dist/wasm/_framework/Docxodus.wasm +0 -0
- package/dist/wasm/_framework/Docxodus.wasm.br +0 -0
- package/dist/wasm/_framework/DocxodusWasm.wasm +0 -0
- package/dist/wasm/_framework/DocxodusWasm.wasm.br +0 -0
- package/dist/wasm/_framework/dotnet.boot.js +3 -3
- package/dist/wasm/_framework/dotnet.boot.js.br +0 -0
- package/package.json +2 -2
package/dist/editor.d.ts
CHANGED
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
* edited block is not preserved — a documented MVP limit); UNTOUCHED blocks keep
|
|
17
17
|
* full fidelity, and save() is lossless for them.
|
|
18
18
|
*/
|
|
19
|
+
import type { ColumnWidth } from "./viewport.js";
|
|
19
20
|
import type { BandWhich } from "./editor-headerfooter.js";
|
|
20
21
|
import { TrackedChangeMode } from "./types.js";
|
|
21
22
|
import type { HeaderFooterKind, NumberFormat } from "./types.js";
|
|
@@ -96,8 +97,19 @@ export interface DocxEditorOptions {
|
|
|
96
97
|
editable?: boolean;
|
|
97
98
|
/** Render block-flow pages (page boxes via pagination.ts) vs a continuous view. Default false. */
|
|
98
99
|
paginated?: boolean;
|
|
99
|
-
/**
|
|
100
|
+
/** Author-pinned page render scale (1.0 = 100%). Default 1. */
|
|
100
101
|
scale?: number;
|
|
102
|
+
/**
|
|
103
|
+
* How the continuous view sizes its text column. `"section"` (default) uses the width the
|
|
104
|
+
* document's `w:sectPr` defines, so line breaking matches Word on every screen; `"fluid"`
|
|
105
|
+
* lets the column follow the host, the pre-geometry behavior.
|
|
106
|
+
*/
|
|
107
|
+
columnWidth?: ColumnWidth;
|
|
108
|
+
/**
|
|
109
|
+
* Zoom the page down to fit a host narrower than it, the way a word processor's
|
|
110
|
+
* fit-to-width does, instead of letting it overflow. Default true.
|
|
111
|
+
*/
|
|
112
|
+
fitToWidth?: boolean;
|
|
101
113
|
/**
|
|
102
114
|
* Render docked Header/Footer editing bands around the body flow. Default FALSE — with it off
|
|
103
115
|
* the editor's DOM is unchanged, so existing consumers are unaffected. When on, the body flow
|
|
@@ -158,7 +170,11 @@ export declare class DocxEditor {
|
|
|
158
170
|
private blockMoveLive;
|
|
159
171
|
private blockDragSource;
|
|
160
172
|
private blockDragCleanup;
|
|
161
|
-
|
|
173
|
+
/** Block boxes measured at drag start — see `BlockDropZone`. Empty when no drag is in flight. */
|
|
174
|
+
private dropZones;
|
|
175
|
+
/** Combined scroll offset when `dropZones` was measured, and the scroller measured against. */
|
|
176
|
+
private dropZoneOrigin;
|
|
177
|
+
private dropZoneScroller;
|
|
162
178
|
private blockDragging;
|
|
163
179
|
private blockDragPointerDown;
|
|
164
180
|
/** Anchors the current drag source may legally move next to, per the engine's own rules.
|
|
@@ -191,6 +207,8 @@ export declare class DocxEditor {
|
|
|
191
207
|
private dragSelection;
|
|
192
208
|
/** The docked header/footer bands, when `options.headerFooter` is on. */
|
|
193
209
|
private region;
|
|
210
|
+
/** Page geometry + fit-to-width zoom for the mounted document. Re-attached on every mount. */
|
|
211
|
+
private readonly viewport;
|
|
194
212
|
/** Why the last reconcile() fell back to a full remount (null = it patched). For
|
|
195
213
|
* diagnostics/specs; not part of the public API. */
|
|
196
214
|
private lastReconcileFallback;
|
|
@@ -259,6 +277,12 @@ export declare class DocxEditor {
|
|
|
259
277
|
setPaginated(value: boolean): void;
|
|
260
278
|
/** The editor's current DOM (for inspection/tests). */
|
|
261
279
|
get root(): HTMLElement;
|
|
280
|
+
/**
|
|
281
|
+
* The zoom the viewport is currently applying (1 = 100%). Below 1 the page is wider than the
|
|
282
|
+
* host and has been scaled to fit rather than reflowed — the honest thing to show a user who
|
|
283
|
+
* is wondering why a phone shows the whole page.
|
|
284
|
+
*/
|
|
285
|
+
get zoom(): number;
|
|
262
286
|
/**
|
|
263
287
|
* The live `DocxSession` handle backing this editor — the model of record.
|
|
264
288
|
*
|
|
@@ -267,6 +291,16 @@ export declare class DocxEditor {
|
|
|
267
291
|
* the bundle erases TypeScript's visibility.
|
|
268
292
|
*/
|
|
269
293
|
get sessionHandle(): number;
|
|
294
|
+
/**
|
|
295
|
+
* Repaint from the live session after it was mutated OUTSIDE the editor's own
|
|
296
|
+
* commands — a host driving {@link sessionHandle} directly (an agent pipeline,
|
|
297
|
+
* `raw.replaceXml`, a batch import). Continuous mode patches incrementally from
|
|
298
|
+
* the render plan (a Unid-preserving single-block mutation repaints just that
|
|
299
|
+
* block); paginated mode — or anything the reconciler cannot prove — remounts.
|
|
300
|
+
* The editor cannot observe external mutations, so the host owns calling this
|
|
301
|
+
* once per mutation batch.
|
|
302
|
+
*/
|
|
303
|
+
refresh(): void;
|
|
270
304
|
/** Move one top-level body block relative to another and repaint from the live session. */
|
|
271
305
|
moveBlock(sourceAnchorId: string, targetAnchorId: string, position: "before" | "after"): boolean;
|
|
272
306
|
/** Resolve any rendered descendant to its top-level body move unit (tables stay whole). */
|
|
@@ -276,7 +310,16 @@ export declare class DocxEditor {
|
|
|
276
310
|
private showBlockHandle;
|
|
277
311
|
private hideBlockHandle;
|
|
278
312
|
private positionBlockHandle;
|
|
279
|
-
|
|
313
|
+
/** Draw the drop line on `zone`'s requested edge, or take it away when there is no target. */
|
|
314
|
+
private paintDropIndicator;
|
|
315
|
+
/**
|
|
316
|
+
* Where to draw the line for an insertion on `position` of `zone` — the MIDDLE of the gap to
|
|
317
|
+
* the neighbour on that side, not the zone's own border-box edge. A paragraph's `w:spacing`
|
|
318
|
+
* becomes a CSS margin, which sits outside the box, so drawing on the edge underlines the
|
|
319
|
+
* block's last line instead of reading as a gap between two blocks. Falls back to the raw edge
|
|
320
|
+
* at the ends of the flow, and degrades to the same value when blocks are contiguous.
|
|
321
|
+
*/
|
|
322
|
+
private dropEdgeY;
|
|
280
323
|
private hideDropIndicator;
|
|
281
324
|
private announceBlockMove;
|
|
282
325
|
/**
|
|
@@ -305,14 +348,24 @@ export declare class DocxEditor {
|
|
|
305
348
|
* legal and the other not, so "this target is reachable" is not enough to pick a position.
|
|
306
349
|
*/
|
|
307
350
|
private isValidMoveTarget;
|
|
351
|
+
/** Measure every movable block once, at drag start. See `BlockDropZone`. */
|
|
352
|
+
private captureDropZones;
|
|
353
|
+
private scrollOffsetSum;
|
|
354
|
+
/** How far the measured boxes have travelled since capture, from scrolling (drag autoscroll). */
|
|
355
|
+
private dropZoneShift;
|
|
308
356
|
/**
|
|
309
|
-
*
|
|
310
|
-
*
|
|
311
|
-
*
|
|
312
|
-
*
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
357
|
+
* Where a drop at `clientY` lands, or null when nothing there is legal.
|
|
358
|
+
*
|
|
359
|
+
* Resolution is by VERTICAL GEOMETRY over the measured blocks, not by which element the pointer
|
|
360
|
+
* is over: the drag handle floats in the page margin, so a drag straight down the gutter — the
|
|
361
|
+
* natural gesture — never crosses a paragraph box, and element hit testing gave those drags no
|
|
362
|
+
* indicator and no drop at all. The nearest block by vertical distance is the target; the half
|
|
363
|
+
* the pointer is in picks the side, snapped to the other side when only that one is legal
|
|
364
|
+
* (a section break or a cross-block range usually makes exactly one side illegal). When neither
|
|
365
|
+
* side is legal — the pointer is in a region this block cannot reach — there is no drop, and
|
|
366
|
+
* nothing is drawn.
|
|
367
|
+
*/
|
|
368
|
+
private resolveDropAt;
|
|
316
369
|
private closeBlockMoveMenu;
|
|
317
370
|
private openBlockMoveMenu;
|
|
318
371
|
/**
|
|
@@ -362,7 +415,14 @@ export declare class DocxEditor {
|
|
|
362
415
|
* indices, and band blocks in that list would shift every index.
|
|
363
416
|
*/
|
|
364
417
|
private dockBands;
|
|
365
|
-
/**
|
|
418
|
+
/**
|
|
419
|
+
* Continuous (non-paginated) mount: inject the converter's styles + body, wire blocks.
|
|
420
|
+
*
|
|
421
|
+
* The body always gets its own `.docx-body-flow` wrapper — not only when bands are docked.
|
|
422
|
+
* It is the sheet: the element the viewport gives page geometry to and zooms, and the one
|
|
423
|
+
* the bands dock around. Without it the container would have to be both the scrolling host
|
|
424
|
+
* and the scaled page, which are different boxes.
|
|
425
|
+
*/
|
|
366
426
|
private mountHtml;
|
|
367
427
|
/** Paginated mount: flow blocks into page boxes via pagination.ts, wire the page clones. */
|
|
368
428
|
private mountPaginated;
|
package/dist/editor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../src/editor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"editor.d.ts","sourceRoot":"","sources":["../src/editor.ts"],"names":[],"mappings":"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"}
|
package/dist/editor.js
CHANGED
|
@@ -17,14 +17,24 @@
|
|
|
17
17
|
* full fidelity, and save() is lossless for them.
|
|
18
18
|
*/
|
|
19
19
|
import { paginateHtml } from "./pagination.js";
|
|
20
|
+
import { DocumentViewport } from "./viewport.js";
|
|
20
21
|
import { HeaderFooterRegion } from "./editor-headerfooter.js";
|
|
21
22
|
import { draggable, dropTargetForElements, monitorForElements, } from "@atlaskit/pragmatic-drag-and-drop/element/adapter";
|
|
23
|
+
import { setCustomNativeDragPreview } from "@atlaskit/pragmatic-drag-and-drop/element/set-custom-native-drag-preview";
|
|
24
|
+
import { pointerOutsideOfPreview } from "@atlaskit/pragmatic-drag-and-drop/element/pointer-outside-of-preview";
|
|
22
25
|
import { autoScrollForElements, autoScrollWindowForElements, } from "@atlaskit/pragmatic-drag-and-drop-auto-scroll/element";
|
|
23
26
|
import { TrackedChangeMode } from "./types.js";
|
|
24
27
|
import { diffUnits, needsRemount, unidOf } from "./editor-reconcile.js";
|
|
25
28
|
const EDITABLE_TAGS = new Set(["P", "H1", "H2", "H3", "H4", "H5", "H6"]);
|
|
26
29
|
const BLOCK_DRAG_TYPE = "docxodus-block";
|
|
27
30
|
const blockDragStyledDocuments = new WeakSet();
|
|
31
|
+
/** One-line description of a block, for the handle's label and the drag preview chip. */
|
|
32
|
+
function blockPreviewText(unit) {
|
|
33
|
+
if (unit.tagName === "TABLE")
|
|
34
|
+
return "Table";
|
|
35
|
+
const text = (unit.textContent ?? "").trim().replace(/\s+/g, " ");
|
|
36
|
+
return text.length > 48 ? `${text.slice(0, 48)}…` : text;
|
|
37
|
+
}
|
|
28
38
|
function ensureBlockDragStyles(doc) {
|
|
29
39
|
if (blockDragStyledDocuments.has(doc))
|
|
30
40
|
return;
|
|
@@ -40,10 +50,28 @@ function ensureBlockDragStyles(doc) {
|
|
|
40
50
|
}
|
|
41
51
|
.docx-block-handle:hover, .docx-block-handle:focus-visible { color: #344054; border-color: #98a2b3; outline: none; }
|
|
42
52
|
.docx-block-handle[aria-pressed="true"] { color: #175cd3; border-color: #84adff; background: #eff8ff; }
|
|
43
|
-
.docx-block-handle.docx-block-dragging { cursor: grabbing; opacity: .
|
|
53
|
+
.docx-block-handle.docx-block-dragging { cursor: grabbing; opacity: .35; }
|
|
54
|
+
/* The block being carried. Dimming it is the "a drag is happening" signal that survives the
|
|
55
|
+
pointer being anywhere on screen — the drop line only says where, not what. */
|
|
56
|
+
.docx-block-drag-source { opacity: .38; transition: opacity 120ms ease-out; }
|
|
57
|
+
/* Positioned by transform so tracking the pointer costs no layout. Flipping display none→block
|
|
58
|
+
restarts the fade — one cheap entry animation per appearance, none while it tracks. */
|
|
44
59
|
.docx-block-drop-indicator {
|
|
45
|
-
position: fixed; z-index: 2147482999; display: none; height:
|
|
46
|
-
|
|
60
|
+
position: fixed; top: 0; left: 0; z-index: 2147482999; display: none; height: 0;
|
|
61
|
+
pointer-events: none; border-top: 2px solid #2e90fa;
|
|
62
|
+
filter: drop-shadow(0 1px 2px rgba(46,144,250,.5));
|
|
63
|
+
animation: docx-block-drop-in 110ms ease-out;
|
|
64
|
+
}
|
|
65
|
+
.docx-block-drop-indicator::before {
|
|
66
|
+
content: ""; position: absolute; top: -5px; left: -2px; width: 8px; height: 8px;
|
|
67
|
+
border-radius: 50%; background: #2e90fa;
|
|
68
|
+
}
|
|
69
|
+
@keyframes docx-block-drop-in { from { opacity: 0; } to { opacity: 1; } }
|
|
70
|
+
.docx-block-drag-preview {
|
|
71
|
+
max-width: 320px; padding: 6px 10px; border: 1px solid #b2ddff; border-radius: 6px;
|
|
72
|
+
background: #eff8ff; color: #175cd3; box-shadow: 0 6px 16px rgba(16,24,40,.18);
|
|
73
|
+
font: 500 13px/1.35 system-ui, sans-serif; white-space: nowrap; overflow: hidden;
|
|
74
|
+
text-overflow: ellipsis;
|
|
47
75
|
}
|
|
48
76
|
.docx-block-move-menu {
|
|
49
77
|
position: fixed; z-index: 2147483001; display: none; min-width: 150px; padding: 5px;
|
|
@@ -559,7 +587,11 @@ export class DocxEditor {
|
|
|
559
587
|
this.blockMoveLive = null;
|
|
560
588
|
this.blockDragSource = null;
|
|
561
589
|
this.blockDragCleanup = [];
|
|
562
|
-
|
|
590
|
+
/** Block boxes measured at drag start — see `BlockDropZone`. Empty when no drag is in flight. */
|
|
591
|
+
this.dropZones = [];
|
|
592
|
+
/** Combined scroll offset when `dropZones` was measured, and the scroller measured against. */
|
|
593
|
+
this.dropZoneOrigin = 0;
|
|
594
|
+
this.dropZoneScroller = null;
|
|
563
595
|
this.blockDragging = false;
|
|
564
596
|
this.blockDragPointerDown = false;
|
|
565
597
|
/** Anchors the current drag source may legally move next to, per the engine's own rules.
|
|
@@ -703,6 +735,11 @@ export class DocxEditor {
|
|
|
703
735
|
this.handle = handle;
|
|
704
736
|
this.options = options;
|
|
705
737
|
this.editRoot = container;
|
|
738
|
+
this.viewport = new DocumentViewport(container, {
|
|
739
|
+
columnWidth: options.columnWidth,
|
|
740
|
+
fitToWidth: options.fitToWidth,
|
|
741
|
+
scale: options.scale,
|
|
742
|
+
});
|
|
706
743
|
if (typeof document !== "undefined") {
|
|
707
744
|
document.addEventListener("selectionchange", this.onSelectionChange);
|
|
708
745
|
document.addEventListener("mousedown", this.onMouseDown, true);
|
|
@@ -790,6 +827,8 @@ export class DocxEditor {
|
|
|
790
827
|
editable: options.editable ?? true,
|
|
791
828
|
paginated: options.paginated ?? false,
|
|
792
829
|
scale: options.scale ?? 1,
|
|
830
|
+
columnWidth: options.columnWidth ?? "section",
|
|
831
|
+
fitToWidth: options.fitToWidth ?? true,
|
|
793
832
|
headerFooter: options.headerFooter ?? false,
|
|
794
833
|
blockDrag: options.blockDrag ?? false,
|
|
795
834
|
trackedChanges: options.trackedChanges ?? TrackedChangeMode.Accept,
|
|
@@ -847,6 +886,7 @@ export class DocxEditor {
|
|
|
847
886
|
}
|
|
848
887
|
this.clearDragSelection();
|
|
849
888
|
this.teardownBlockDrag();
|
|
889
|
+
this.viewport.dispose();
|
|
850
890
|
this.exports.DocxSessionBridge.CloseSession(this.handle);
|
|
851
891
|
}
|
|
852
892
|
/**
|
|
@@ -865,6 +905,14 @@ export class DocxEditor {
|
|
|
865
905
|
get root() {
|
|
866
906
|
return this.container;
|
|
867
907
|
}
|
|
908
|
+
/**
|
|
909
|
+
* The zoom the viewport is currently applying (1 = 100%). Below 1 the page is wider than the
|
|
910
|
+
* host and has been scaled to fit rather than reflowed — the honest thing to show a user who
|
|
911
|
+
* is wondering why a phone shows the whole page.
|
|
912
|
+
*/
|
|
913
|
+
get zoom() {
|
|
914
|
+
return this.viewport.scale;
|
|
915
|
+
}
|
|
868
916
|
/**
|
|
869
917
|
* The live `DocxSession` handle backing this editor — the model of record.
|
|
870
918
|
*
|
|
@@ -875,6 +923,19 @@ export class DocxEditor {
|
|
|
875
923
|
get sessionHandle() {
|
|
876
924
|
return this.handle;
|
|
877
925
|
}
|
|
926
|
+
/**
|
|
927
|
+
* Repaint from the live session after it was mutated OUTSIDE the editor's own
|
|
928
|
+
* commands — a host driving {@link sessionHandle} directly (an agent pipeline,
|
|
929
|
+
* `raw.replaceXml`, a batch import). Continuous mode patches incrementally from
|
|
930
|
+
* the render plan (a Unid-preserving single-block mutation repaints just that
|
|
931
|
+
* block); paginated mode — or anything the reconciler cannot prove — remounts.
|
|
932
|
+
* The editor cannot observe external mutations, so the host owns calling this
|
|
933
|
+
* once per mutation batch.
|
|
934
|
+
*/
|
|
935
|
+
refresh() {
|
|
936
|
+
this.assertOpen();
|
|
937
|
+
this.reconcile();
|
|
938
|
+
}
|
|
878
939
|
/** Move one top-level body block relative to another and repaint from the live session. */
|
|
879
940
|
moveBlock(sourceAnchorId, targetAnchorId, position) {
|
|
880
941
|
this.assertOpen();
|
|
@@ -985,11 +1046,8 @@ export class DocxEditor {
|
|
|
985
1046
|
handle.style.display = "flex";
|
|
986
1047
|
handle.style.left = `${Math.max(4, rect.left - 32)}px`;
|
|
987
1048
|
handle.style.top = `${Math.max(4, rect.top + (unit.tagName === "TABLE" ? 6 : Math.max(0, (rect.height - 28) / 2)))}px`;
|
|
988
|
-
const preview = (unit
|
|
1049
|
+
const preview = blockPreviewText(unit);
|
|
989
1050
|
handle.setAttribute("aria-label", preview ? `Move block: ${preview}` : "Move block");
|
|
990
|
-
// Drop targets are registered when a drag actually begins (and once at mount), not on
|
|
991
|
-
// hover: re-registering one listener per body block every time the pointer crosses a
|
|
992
|
-
// paragraph boundary is work no drop can use.
|
|
993
1051
|
}
|
|
994
1052
|
hideBlockHandle() {
|
|
995
1053
|
if (this.blockDragging || this.blockMoveMenu?.style.display === "block")
|
|
@@ -1002,15 +1060,42 @@ export class DocxEditor {
|
|
|
1002
1060
|
if (source && this.blockDragHandle?.style.display !== "none")
|
|
1003
1061
|
this.showBlockHandle(source);
|
|
1004
1062
|
}
|
|
1005
|
-
|
|
1063
|
+
/** Draw the drop line on `zone`'s requested edge, or take it away when there is no target. */
|
|
1064
|
+
paintDropIndicator(data) {
|
|
1006
1065
|
const indicator = this.blockDropIndicator;
|
|
1066
|
+
const zone = data.zone;
|
|
1007
1067
|
if (!indicator)
|
|
1008
1068
|
return;
|
|
1009
|
-
|
|
1069
|
+
if (!zone) {
|
|
1070
|
+
this.hideDropIndicator();
|
|
1071
|
+
return;
|
|
1072
|
+
}
|
|
1073
|
+
const y = Math.round(this.dropEdgeY(zone, data.position === "after" ? "after" : "before")
|
|
1074
|
+
+ this.dropZoneShift()) - 1;
|
|
1075
|
+
// Position before revealing, so the entry fade never plays at a stale spot.
|
|
1076
|
+
indicator.style.transform = `translate3d(${Math.round(zone.left)}px, ${y}px, 0)`;
|
|
1077
|
+
indicator.style.width = `${Math.max(24, Math.round(zone.width))}px`;
|
|
1010
1078
|
indicator.style.display = "block";
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1079
|
+
}
|
|
1080
|
+
/**
|
|
1081
|
+
* Where to draw the line for an insertion on `position` of `zone` — the MIDDLE of the gap to
|
|
1082
|
+
* the neighbour on that side, not the zone's own border-box edge. A paragraph's `w:spacing`
|
|
1083
|
+
* becomes a CSS margin, which sits outside the box, so drawing on the edge underlines the
|
|
1084
|
+
* block's last line instead of reading as a gap between two blocks. Falls back to the raw edge
|
|
1085
|
+
* at the ends of the flow, and degrades to the same value when blocks are contiguous.
|
|
1086
|
+
*/
|
|
1087
|
+
dropEdgeY(zone, position) {
|
|
1088
|
+
const neighbour = this.dropZones[zone.index + (position === "after" ? 1 : -1)];
|
|
1089
|
+
// At the ends of the flow there is nothing to bisect against, so half the block's own
|
|
1090
|
+
// margin stands in for half the gap — the same position, one contributor instead of two.
|
|
1091
|
+
if (!neighbour) {
|
|
1092
|
+
return position === "after"
|
|
1093
|
+
? zone.bottom + zone.marginAfter / 2
|
|
1094
|
+
: zone.top - zone.marginBefore / 2;
|
|
1095
|
+
}
|
|
1096
|
+
return position === "after"
|
|
1097
|
+
? (zone.bottom + neighbour.top) / 2
|
|
1098
|
+
: (neighbour.bottom + zone.top) / 2;
|
|
1014
1099
|
}
|
|
1015
1100
|
hideDropIndicator() {
|
|
1016
1101
|
if (this.blockDropIndicator)
|
|
@@ -1100,49 +1185,74 @@ export class DocxEditor {
|
|
|
1100
1185
|
return false;
|
|
1101
1186
|
return position ? sides[position] : sides.before || sides.after;
|
|
1102
1187
|
}
|
|
1188
|
+
/** Measure every movable block once, at drag start. See `BlockDropZone`. */
|
|
1189
|
+
captureDropZones() {
|
|
1190
|
+
const view = this.container.ownerDocument.defaultView;
|
|
1191
|
+
this.dropZoneScroller = this.scrollContainer();
|
|
1192
|
+
this.dropZoneOrigin = this.scrollOffsetSum();
|
|
1193
|
+
this.dropZones = [];
|
|
1194
|
+
const boxes = [];
|
|
1195
|
+
for (const unit of this.bodyUnitNodes()) {
|
|
1196
|
+
const anchorId = this.isMovableBlockUnit(unit) ? this.anchorIdOf(unit) : null;
|
|
1197
|
+
if (!anchorId)
|
|
1198
|
+
continue;
|
|
1199
|
+
const box = this.unitWrapperOf(unit);
|
|
1200
|
+
const rect = box.getBoundingClientRect();
|
|
1201
|
+
boxes.push(box);
|
|
1202
|
+
this.dropZones.push({
|
|
1203
|
+
unit, anchorId, index: this.dropZones.length,
|
|
1204
|
+
top: rect.top, bottom: rect.bottom, left: rect.left, width: rect.width,
|
|
1205
|
+
marginBefore: 0, marginAfter: 0,
|
|
1206
|
+
});
|
|
1207
|
+
}
|
|
1208
|
+
// Only the flow's two ends ever consult a margin, so only they are worth a style read.
|
|
1209
|
+
const ends = new Set([0, this.dropZones.length - 1].filter((i) => i >= 0 && i < boxes.length));
|
|
1210
|
+
for (const i of ends) {
|
|
1211
|
+
const style = view?.getComputedStyle(boxes[i]);
|
|
1212
|
+
this.dropZones[i].marginBefore = parseFloat(style?.marginTop ?? "0") || 0;
|
|
1213
|
+
this.dropZones[i].marginAfter = parseFloat(style?.marginBottom ?? "0") || 0;
|
|
1214
|
+
}
|
|
1215
|
+
}
|
|
1216
|
+
scrollOffsetSum() {
|
|
1217
|
+
const view = this.container.ownerDocument.defaultView;
|
|
1218
|
+
return (view?.scrollY ?? 0) + (this.dropZoneScroller?.scrollTop ?? 0);
|
|
1219
|
+
}
|
|
1220
|
+
/** How far the measured boxes have travelled since capture, from scrolling (drag autoscroll). */
|
|
1221
|
+
dropZoneShift() {
|
|
1222
|
+
return this.dropZoneOrigin - this.scrollOffsetSum();
|
|
1223
|
+
}
|
|
1103
1224
|
/**
|
|
1104
|
-
*
|
|
1105
|
-
*
|
|
1106
|
-
*
|
|
1107
|
-
*
|
|
1225
|
+
* Where a drop at `clientY` lands, or null when nothing there is legal.
|
|
1226
|
+
*
|
|
1227
|
+
* Resolution is by VERTICAL GEOMETRY over the measured blocks, not by which element the pointer
|
|
1228
|
+
* is over: the drag handle floats in the page margin, so a drag straight down the gutter — the
|
|
1229
|
+
* natural gesture — never crosses a paragraph box, and element hit testing gave those drags no
|
|
1230
|
+
* indicator and no drop at all. The nearest block by vertical distance is the target; the half
|
|
1231
|
+
* the pointer is in picks the side, snapped to the other side when only that one is legal
|
|
1232
|
+
* (a section break or a cross-block range usually makes exactly one side illegal). When neither
|
|
1233
|
+
* side is legal — the pointer is in a region this block cannot reach — there is no drop, and
|
|
1234
|
+
* nothing is drawn.
|
|
1108
1235
|
*/
|
|
1109
|
-
|
|
1110
|
-
const
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
return;
|
|
1122
|
-
for (const unit of this.bodyUnitNodes().filter((el) => this.isMovableBlockUnit(el))) {
|
|
1123
|
-
this.blockDragTargetCleanup.push(dropTargetForElements({
|
|
1124
|
-
element: unit,
|
|
1125
|
-
// A target the engine would refuse is not a drop target at all, so Pragmatic never
|
|
1126
|
-
// fires onDragEnter for it and no indicator is drawn over it.
|
|
1127
|
-
canDrop: ({ source }) => source.data.type === BLOCK_DRAG_TYPE && source.data.sourceAnchorId !== this.anchorIdOf(unit) &&
|
|
1128
|
-
this.isValidMoveTarget(unit),
|
|
1129
|
-
getData: ({ input }) => ({
|
|
1130
|
-
type: BLOCK_DRAG_TYPE,
|
|
1131
|
-
targetAnchorId: this.anchorIdOf(unit),
|
|
1132
|
-
position: this.dropPositionFor(unit, input.clientY),
|
|
1133
|
-
targetElement: unit,
|
|
1134
|
-
}),
|
|
1135
|
-
onDragEnter: ({ self }) => {
|
|
1136
|
-
const pos = self.data.position === "after" ? "after" : "before";
|
|
1137
|
-
this.showDropIndicator(unit, pos);
|
|
1138
|
-
},
|
|
1139
|
-
onDrag: ({ self }) => {
|
|
1140
|
-
const pos = self.data.position === "after" ? "after" : "before";
|
|
1141
|
-
this.showDropIndicator(unit, pos);
|
|
1142
|
-
},
|
|
1143
|
-
onDragLeave: () => this.hideDropIndicator(),
|
|
1144
|
-
}));
|
|
1236
|
+
resolveDropAt(clientY) {
|
|
1237
|
+
const y = clientY - this.dropZoneShift();
|
|
1238
|
+
let best = null;
|
|
1239
|
+
let bestGap = Infinity;
|
|
1240
|
+
for (const zone of this.dropZones) {
|
|
1241
|
+
const gap = y < zone.top ? zone.top - y : y > zone.bottom ? y - zone.bottom : 0;
|
|
1242
|
+
if (gap < bestGap) {
|
|
1243
|
+
best = zone;
|
|
1244
|
+
bestGap = gap;
|
|
1245
|
+
}
|
|
1246
|
+
if (gap === 0)
|
|
1247
|
+
break; // inside this block; zones are in document order and never overlap
|
|
1145
1248
|
}
|
|
1249
|
+
if (!best || best.unit === this.blockDragSource)
|
|
1250
|
+
return null;
|
|
1251
|
+
const preferred = y < (best.top + best.bottom) / 2 ? "before" : "after";
|
|
1252
|
+
if (this.isValidMoveTarget(best.unit, preferred))
|
|
1253
|
+
return { zone: best, position: preferred };
|
|
1254
|
+
const other = preferred === "before" ? "after" : "before";
|
|
1255
|
+
return this.isValidMoveTarget(best.unit, other) ? { zone: best, position: other } : null;
|
|
1146
1256
|
}
|
|
1147
1257
|
closeBlockMoveMenu(restoreFocus = false) {
|
|
1148
1258
|
if (!this.blockMoveMenu || !this.blockDragHandle)
|
|
@@ -1324,20 +1434,59 @@ export class DocxEditor {
|
|
|
1324
1434
|
const source = this.currentBlockDragSource();
|
|
1325
1435
|
return { type: BLOCK_DRAG_TYPE, sourceAnchorId: source ? this.anchorIdOf(source) : undefined };
|
|
1326
1436
|
},
|
|
1437
|
+
// The browser would otherwise ghost the 26px grip, which says nothing about what is moving.
|
|
1438
|
+
onGenerateDragPreview: ({ nativeSetDragImage }) => {
|
|
1439
|
+
const source = this.currentBlockDragSource();
|
|
1440
|
+
setCustomNativeDragPreview({
|
|
1441
|
+
nativeSetDragImage,
|
|
1442
|
+
getOffset: pointerOutsideOfPreview({ x: "14px", y: "10px" }),
|
|
1443
|
+
render: ({ container }) => {
|
|
1444
|
+
const chip = doc.createElement("div");
|
|
1445
|
+
chip.className = "docx-block-drag-preview";
|
|
1446
|
+
chip.textContent = (source && blockPreviewText(source)) || "Move block";
|
|
1447
|
+
container.appendChild(chip);
|
|
1448
|
+
return () => chip.remove();
|
|
1449
|
+
},
|
|
1450
|
+
});
|
|
1451
|
+
},
|
|
1327
1452
|
onDragStart: () => {
|
|
1453
|
+
const source = this.currentBlockDragSource();
|
|
1328
1454
|
this.blockDragging = true;
|
|
1329
1455
|
handle.classList.add("docx-block-dragging");
|
|
1456
|
+
// After the preview snapshot, so the chip is not dimmed too.
|
|
1457
|
+
source?.classList.add("docx-block-drag-source");
|
|
1330
1458
|
this.closeBlockMoveMenu();
|
|
1331
|
-
this.refreshBlockMoveTargets(
|
|
1332
|
-
this.
|
|
1459
|
+
this.refreshBlockMoveTargets(source);
|
|
1460
|
+
this.captureDropZones();
|
|
1333
1461
|
},
|
|
1334
1462
|
onDrop: () => {
|
|
1335
1463
|
this.blockDragging = false;
|
|
1336
1464
|
this.blockDragPointerDown = false;
|
|
1465
|
+
this.dropZones = [];
|
|
1337
1466
|
handle.classList.remove("docx-block-dragging");
|
|
1467
|
+
// Cleared by selector rather than from a captured reference: a completed move may have
|
|
1468
|
+
// re-rendered the block, and the node that carries the class outlives either handle on it.
|
|
1469
|
+
doc.querySelectorAll(".docx-block-drag-source")
|
|
1470
|
+
.forEach((el) => el.classList.remove("docx-block-drag-source"));
|
|
1338
1471
|
this.hideDropIndicator();
|
|
1339
1472
|
},
|
|
1340
1473
|
}));
|
|
1474
|
+
// ONE drop target for the whole flow. Which block a drop belongs to is decided by
|
|
1475
|
+
// `resolveDropAt` from the pointer's vertical position, so the gutter the handle is dragged
|
|
1476
|
+
// down counts as being over the document — see that method.
|
|
1477
|
+
this.blockDragCleanup.push(dropTargetForElements({
|
|
1478
|
+
element: this.editRoot,
|
|
1479
|
+
canDrop: ({ source }) => source.data.type === BLOCK_DRAG_TYPE,
|
|
1480
|
+
getData: ({ input }) => {
|
|
1481
|
+
const hit = this.resolveDropAt(input.clientY);
|
|
1482
|
+
return hit
|
|
1483
|
+
? { type: BLOCK_DRAG_TYPE, targetAnchorId: hit.zone.anchorId, position: hit.position, zone: hit.zone }
|
|
1484
|
+
: { type: BLOCK_DRAG_TYPE };
|
|
1485
|
+
},
|
|
1486
|
+
onDragEnter: ({ self }) => this.paintDropIndicator(self.data),
|
|
1487
|
+
onDrag: ({ self }) => this.paintDropIndicator(self.data),
|
|
1488
|
+
onDragLeave: () => this.hideDropIndicator(),
|
|
1489
|
+
}));
|
|
1341
1490
|
this.blockDragCleanup.push(monitorForElements({
|
|
1342
1491
|
canMonitor: ({ source }) => source.data.type === BLOCK_DRAG_TYPE,
|
|
1343
1492
|
onDrop: ({ source, location }) => {
|
|
@@ -1369,14 +1518,13 @@ export class DocxEditor {
|
|
|
1369
1518
|
canScroll: ({ source }) => source.data.type === BLOCK_DRAG_TYPE,
|
|
1370
1519
|
getAllowedAxis: () => "vertical",
|
|
1371
1520
|
}));
|
|
1372
|
-
this.refreshBlockDropTargets();
|
|
1373
1521
|
}
|
|
1374
1522
|
teardownBlockDrag() {
|
|
1375
1523
|
this.blockMoveTargetPrefetch?.();
|
|
1376
1524
|
this.blockMoveTargetPrefetch = null;
|
|
1377
1525
|
this.blockMoveTargetCache.clear();
|
|
1378
|
-
|
|
1379
|
-
|
|
1526
|
+
this.dropZones = [];
|
|
1527
|
+
this.dropZoneScroller = null;
|
|
1380
1528
|
for (const cleanup of this.blockDragCleanup.splice(0))
|
|
1381
1529
|
cleanup();
|
|
1382
1530
|
this.blockDragHandle?.remove();
|
|
@@ -1472,21 +1620,19 @@ export class DocxEditor {
|
|
|
1472
1620
|
bodyRoot.after(this.region.footerBand);
|
|
1473
1621
|
this.region.refreshAll();
|
|
1474
1622
|
}
|
|
1475
|
-
/**
|
|
1623
|
+
/**
|
|
1624
|
+
* Continuous (non-paginated) mount: inject the converter's styles + body, wire blocks.
|
|
1625
|
+
*
|
|
1626
|
+
* The body always gets its own `.docx-body-flow` wrapper — not only when bands are docked.
|
|
1627
|
+
* It is the sheet: the element the viewport gives page geometry to and zooms, and the one
|
|
1628
|
+
* the bands dock around. Without it the container would have to be both the scrolling host
|
|
1629
|
+
* and the scaled page, which are different boxes.
|
|
1630
|
+
*/
|
|
1476
1631
|
mountHtml(fullHtml) {
|
|
1477
1632
|
const parsed = new DOMParser().parseFromString(fullHtml, "text/html");
|
|
1478
1633
|
const styles = Array.from(parsed.querySelectorAll("style"))
|
|
1479
1634
|
.map((s) => s.outerHTML)
|
|
1480
1635
|
.join("");
|
|
1481
|
-
if (!this.region) {
|
|
1482
|
-
this.container.innerHTML = styles + parsed.body.innerHTML;
|
|
1483
|
-
this.editRoot = this.container;
|
|
1484
|
-
if (this.options.editable)
|
|
1485
|
-
this.wireBlocks(this.container);
|
|
1486
|
-
this.stampPlanState();
|
|
1487
|
-
return;
|
|
1488
|
-
}
|
|
1489
|
-
// With bands docked, the body flow needs its own wrapper to be the edit root.
|
|
1490
1636
|
this.container.innerHTML = styles;
|
|
1491
1637
|
const flow = document.createElement("div");
|
|
1492
1638
|
flow.className = "docx-body-flow";
|
|
@@ -1496,7 +1642,9 @@ export class DocxEditor {
|
|
|
1496
1642
|
if (this.options.editable)
|
|
1497
1643
|
this.wireBlocks(flow);
|
|
1498
1644
|
this.stampPlanState();
|
|
1499
|
-
this.
|
|
1645
|
+
if (this.region)
|
|
1646
|
+
this.dockBands(flow);
|
|
1647
|
+
this.viewport.attach(flow, true);
|
|
1500
1648
|
}
|
|
1501
1649
|
/** Paginated mount: flow blocks into page boxes via pagination.ts, wire the page clones. */
|
|
1502
1650
|
mountPaginated(fullHtml) {
|
|
@@ -1532,6 +1680,9 @@ export class DocxEditor {
|
|
|
1532
1680
|
// around the page stack, so there is still exactly one addressable node per story paragraph.
|
|
1533
1681
|
if (this.region)
|
|
1534
1682
|
this.dockBands(target);
|
|
1683
|
+
// Page boxes already carry the section's dimensions, so the viewport contributes only the
|
|
1684
|
+
// fit zoom — a full page is far wider than a phone, and clipping it is not an option.
|
|
1685
|
+
this.viewport.attach(pageRoot, false);
|
|
1535
1686
|
}
|
|
1536
1687
|
wireBlocks(root) {
|
|
1537
1688
|
root.querySelectorAll("[data-anchor]").forEach((el) => this.wireBlock(el));
|