@eigenpal/docx-editor-vue 1.3.1 → 1.3.3

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.
@@ -1,26 +1,26 @@
1
1
  import { computed as e, onBeforeUnmount as t, onMounted as n, ref as r, shallowRef as i, unref as a, watch as o } from "vue";
2
2
  import { EditorState as s } from "prosemirror-state";
3
3
  import { getColumns as c, getMargins as l, getPageSize as u, measureTableBlock as d, resolveHeaderFooter as f } from "@eigenpal/docx-editor-core/layout-bridge";
4
- import { applySdtFocus as p, buildBlockLookup as m, enclosingSdtGroupIds as h } from "@eigenpal/docx-editor-core/layout-painter";
5
- import { createEmptyDoc as g, headerFooterToProseDoc as _, proseDocToBlocks as v, toProseDoc as y } from "@eigenpal/docx-editor-core/prosemirror/conversion";
6
- import { schema as b } from "@eigenpal/docx-editor-core/prosemirror";
4
+ import { ensureParaIdsInState as p, schema as m } from "@eigenpal/docx-editor-core/prosemirror";
5
+ import { applySdtFocus as h, buildBlockLookup as g, enclosingSdtGroupIds as _ } from "@eigenpal/docx-editor-core/layout-painter";
6
+ import { createEmptyDoc as ee, headerFooterToProseDoc as v, proseDocToBlocks as y, toProseDoc as b } from "@eigenpal/docx-editor-core/prosemirror/conversion";
7
7
  import { EditorView as x } from "prosemirror-view";
8
8
  import { parseDocx as S } from "@eigenpal/docx-editor-core/docx/parser";
9
9
  import { fromProseDoc as C } from "@eigenpal/docx-editor-core/prosemirror/conversion/fromProseDoc";
10
10
  import { singletonManager as w } from "@eigenpal/docx-editor-core/prosemirror/schema";
11
- import { createDocumentStylesPlugin as T, createSuggestionModePlugin as E, setSuggestionMode as ee } from "@eigenpal/docx-editor-core/prosemirror/plugins";
12
- import { ExtensionManager as te, createStarterKit as ne } from "@eigenpal/docx-editor-core/prosemirror/extensions";
11
+ import { createDocumentStylesPlugin as T, createSuggestionModePlugin as E, setSuggestionMode as te } from "@eigenpal/docx-editor-core/prosemirror/plugins";
12
+ import { ExtensionManager as ne, createStarterKit as re } from "@eigenpal/docx-editor-core/prosemirror/extensions";
13
13
  import { measureBlocksWithFloats as D, measureParagraph as O } from "@eigenpal/docx-editor-core/layout-bridge/measuring";
14
- import { computeLayout as re, createLayoutScheduler as k, stripScrollFlag as ie } from "@eigenpal/docx-editor-core/editor";
15
- import { DEFAULT_TEXTBOX_MARGINS as A, DEFAULT_TEXTBOX_WIDTH as j, assertExhaustiveFlowBlock as M } from "@eigenpal/docx-editor-core/layout-engine";
16
- import { renderPages as ae } from "@eigenpal/docx-editor-core/layout-painter/renderPage";
14
+ import { computeLayout as ie, createLayoutScheduler as ae, stripScrollFlag as oe } from "@eigenpal/docx-editor-core/editor";
15
+ import { DEFAULT_TEXTBOX_MARGINS as k, DEFAULT_TEXTBOX_WIDTH as A, assertExhaustiveFlowBlock as j } from "@eigenpal/docx-editor-core/layout-engine";
16
+ import { renderPages as se } from "@eigenpal/docx-editor-core/layout-painter/renderPage";
17
17
  import "prosemirror-view/style/prosemirror.css";
18
18
  import "@eigenpal/docx-editor-core/prosemirror/editor.css";
19
- import { MIN_CELL_WIDTH_TWIPS as N, MIN_ROW_HEIGHT_TWIPS as P, TWIPS_PER_PIXEL as F, commitColumnResize as oe, commitRightEdgeResize as I, commitRowResize as L, readColumnWidthAt as R, readColumnWidths as z, readRowHeight as B } from "@eigenpal/docx-editor-core/prosemirror/tableResize";
19
+ import { MIN_CELL_WIDTH_TWIPS as M, MIN_ROW_HEIGHT_TWIPS as N, TWIPS_PER_PIXEL as P, commitColumnResize as F, commitRightEdgeResize as I, commitRowResize as L, readColumnWidthAt as R, readColumnWidths as z, readRowHeight as B } from "@eigenpal/docx-editor-core/prosemirror/tableResize";
20
20
  import { findVerticalScrollParent as V } from "@eigenpal/docx-editor-core/utils/findVerticalScrollParent";
21
21
  import { AUTO_SCROLL_EDGE_ZONE as H, computeAutoScrollDelta as U } from "@eigenpal/docx-editor-core/utils/autoScroll";
22
22
  //#region src/composables/useDocxEditor.ts
23
- var se = 24;
23
+ var ce = 24;
24
24
  function W(e, t, n, r) {
25
25
  switch (e.kind) {
26
26
  case "paragraph": return O(e, t, {
@@ -37,10 +37,10 @@ function W(e, t, n, r) {
37
37
  };
38
38
  }
39
39
  case "textBox": {
40
- let t = e, n = t.margins ?? A, r = (t.width ?? j) - n.left - n.right, i = t.content.map((e) => O(e, r)), a = i.reduce((e, t) => e + t.totalHeight, 0), o = t.height ?? a + n.top + n.bottom;
40
+ let t = e, n = t.margins ?? k, r = (t.width ?? A) - n.left - n.right, i = t.content.map((e) => O(e, r)), a = i.reduce((e, t) => e + t.totalHeight, 0), o = t.height ?? a + n.top + n.bottom;
41
41
  return {
42
42
  kind: "textBox",
43
- width: t.width ?? j,
43
+ width: t.width ?? A,
44
44
  height: o,
45
45
  innerMeasures: i
46
46
  };
@@ -48,125 +48,125 @@ function W(e, t, n, r) {
48
48
  case "pageBreak": return { kind: "pageBreak" };
49
49
  case "columnBreak": return { kind: "columnBreak" };
50
50
  case "sectionBreak": return { kind: "sectionBreak" };
51
- default: M(e, "vue useDocxEditor measureBlock");
51
+ default: j(e, "vue useDocxEditor measureBlock");
52
52
  }
53
53
  }
54
- function ce(e, t, n) {
54
+ function le(e, t, n) {
55
55
  return D(e, t, W, n);
56
56
  }
57
57
  function G(e) {
58
- let { hiddenContainer: n, pagesContainer: d, readOnly: D = !1, pageGap: O = se, onChange: A, onError: j, onSelectionUpdate: M, externalPlugins: N = [], syncCoordinator: P, editorMode: F, author: oe } = e, I = i(null), L = i(null), R = i(null), z = r(!1), B = r(null), V = i(null), H = w;
58
+ let { hiddenContainer: n, pagesContainer: d, readOnly: D = !1, pageGap: O = ce, onChange: k, onError: A, onSelectionUpdate: j, externalPlugins: M = [], syncCoordinator: N, editorMode: P, author: F } = e, I = i(null), L = i(null), R = i(null), z = r(!1), B = r(null), V = i(null), H = w;
59
59
  function U(e) {
60
60
  let t = d.value;
61
61
  if (!t || !I.value) return;
62
- let n = P?.getStateSeq() ?? 0;
63
- P?.onLayoutStart();
64
- let r = I.value.package?.document, i = r?.sections?.[0]?.properties ?? r?.finalSectionProperties ?? null, a = r?.finalSectionProperties ?? i, o = u(i), s = l(i), g = u(a), _ = l(a), v = c(i), y = c(a), b = o.w - s.left - s.right, x = I.value.package?.theme ?? null, S = I.value.package?.styles ?? null;
62
+ let n = N?.getStateSeq() ?? 0;
63
+ N?.onLayoutStart();
64
+ let r = I.value.package?.document, i = r?.sections?.[0]?.properties ?? r?.finalSectionProperties ?? null, a = r?.finalSectionProperties ?? i, o = u(i), s = l(i), p = u(a), m = l(a), ee = c(i), v = c(a), y = o.w - s.left - s.right, b = I.value.package?.theme ?? null, x = I.value.package?.styles ?? null;
65
65
  try {
66
- let { header: n, footer: r, firstHeader: c, firstFooter: l } = f(I.value, i), { blocks: u, measures: d, layout: C, headerContentForRender: w, footerContentForRender: T, firstPageHeaderForRender: E, firstPageFooterForRender: ee, hasTitlePg: te, watermark: ne, footnotesByPage: D } = re({
66
+ let { header: n, footer: r, firstHeader: c, firstFooter: l } = f(I.value, i), { blocks: u, measures: d, layout: S, headerContentForRender: C, footerContentForRender: w, firstPageHeaderForRender: T, firstPageFooterForRender: E, hasTitlePg: te, watermark: ne, footnotesByPage: re } = ie({
67
67
  state: e,
68
68
  document: I.value,
69
69
  pageSize: o,
70
70
  margins: s,
71
- columns: v,
72
- finalPageSize: g,
73
- finalMargins: _,
74
- finalColumns: y,
71
+ columns: ee,
72
+ finalPageSize: p,
73
+ finalMargins: m,
74
+ finalColumns: v,
75
75
  pageGap: O,
76
- contentWidth: b,
77
- theme: x,
78
- styles: S,
76
+ contentWidth: y,
77
+ theme: b,
78
+ styles: x,
79
79
  sectionProperties: i,
80
80
  finalSectionProperties: a,
81
81
  headerContent: n,
82
82
  footerContent: r,
83
83
  firstPageHeaderContent: c,
84
84
  firstPageFooterContent: l,
85
- measureBlocks: ce,
85
+ measureBlocks: le,
86
86
  getHfPmDoc: (e) => X(e)?.state.doc ?? null
87
87
  });
88
- V.value = C;
89
- let k = m(u, d);
90
- ae(C.pages, t, {
88
+ V.value = S;
89
+ let D = g(u, d);
90
+ se(S.pages, t, {
91
91
  pageGap: O,
92
92
  showShadow: !0,
93
93
  pageBackground: "#fff",
94
- blockLookup: k,
95
- theme: x,
96
- headerContent: w,
97
- footerContent: T,
98
- firstPageHeaderContent: E,
99
- firstPageFooterContent: ee,
94
+ blockLookup: D,
95
+ theme: b,
96
+ headerContent: C,
97
+ footerContent: w,
98
+ firstPageHeaderContent: T,
99
+ firstPageFooterContent: E,
100
100
  titlePage: te,
101
101
  watermark: ne,
102
- footnotesByPage: D
102
+ footnotesByPage: re
103
103
  }), t.style.overflowY = "auto", t.style.minHeight = "0";
104
104
  for (let e of Array.from(t.children)) e.style.flexShrink = "0";
105
- p(t, h(e.doc, e.selection.from, e.selection.to));
105
+ h(t, _(e.doc, e.selection.from, e.selection.to));
106
106
  } catch (e) {
107
- console.error("[useDocxEditor] Layout pipeline error:", e), j?.(e instanceof Error ? e : Error(String(e)));
107
+ console.error("[useDocxEditor] Layout pipeline error:", e), A?.(e instanceof Error ? e : Error(String(e)));
108
108
  } finally {
109
- P?.onLayoutComplete(n);
109
+ N?.onLayoutComplete(n);
110
110
  }
111
111
  }
112
- let W = k(U);
112
+ let W = ae(U);
113
113
  function G() {
114
114
  let e = n.value;
115
115
  if (!e) return;
116
- let t = I.value?.package?.styles, r = I.value ? y(I.value, { styles: t ?? void 0 }) : g(), i = E(!1), o = T(t), c = [
116
+ let t = I.value?.package?.styles, r = I.value ? b(I.value, { styles: t ?? void 0 }) : ee(), i = E(!1), o = T(t), c = [
117
117
  i,
118
- ...N,
118
+ ...M,
119
119
  ...H.getPlugins() ?? [],
120
120
  o
121
- ], l = s.create({
121
+ ], l = p(s.create({
122
122
  doc: r,
123
123
  schema: H.getSchema(),
124
124
  plugins: c
125
- });
125
+ }));
126
126
  R.value = l;
127
127
  let u = new x(e, {
128
128
  state: l,
129
129
  editable: () => !a(D),
130
130
  dispatchTransaction(e) {
131
131
  if (!u) return;
132
- ie(e, u.state.tr);
132
+ oe(e, u.state.tr);
133
133
  let t = u.state.apply(e);
134
134
  if (u.updateState(t), R.value = t, e.docChanged) {
135
- P?.incrementStateSeq(), W.schedule(t);
135
+ N?.incrementStateSeq(), W.schedule(t);
136
136
  try {
137
137
  if (I.value) {
138
138
  let e = C(t.doc, I.value);
139
- I.value = e, A?.(e);
139
+ I.value = e, k?.(e);
140
140
  }
141
141
  } catch (e) {
142
142
  console.error("[useDocxEditor] fromProseDoc error:", e);
143
143
  }
144
144
  }
145
- if (P?.requestRender(), M?.(), !e.docChanged) {
145
+ if (N?.requestRender(), j?.(), !e.docChanged) {
146
146
  let e = d.value;
147
- e && p(e, h(t.doc, t.selection.from, t.selection.to));
147
+ e && h(e, _(t.doc, t.selection.from, t.selection.to));
148
148
  }
149
149
  }
150
150
  });
151
- L.value = u, z.value = !0, U(l), P?.requestRender();
151
+ L.value = u, z.value = !0, U(l), N?.requestRender();
152
152
  }
153
153
  o([
154
+ () => a(P),
154
155
  () => a(F),
155
- () => a(oe),
156
156
  L
157
157
  ], ([e, t, n]) => {
158
- n && ee(e === "suggesting", n.state, n.dispatch, t);
158
+ n && te(e === "suggesting", n.state, n.dispatch, t);
159
159
  }, { immediate: !0 });
160
160
  function K() {
161
161
  W.cancel(), L.value &&= (L.value.destroy(), null), R.value = null, z.value = !1;
162
162
  }
163
163
  let q = { current: null }, J = /* @__PURE__ */ new Map(), Y = /* @__PURE__ */ new Map();
164
- function le() {
164
+ function ue() {
165
165
  if (q.current && q.current.isConnected) return q.current;
166
166
  let e = window.document.createElement("div");
167
167
  return e.dataset.hfHost = "true", e.style.cssText = "position: fixed; left: -9999px; top: 0; opacity: 0; z-index: -1; pointer-events: none;", window.document.body.appendChild(e), q.current = e, e;
168
168
  }
169
- function ue(e) {
169
+ function de(e) {
170
170
  let t = I.value?.package;
171
171
  if (!t) return null;
172
172
  if (t.headers) {
@@ -178,11 +178,11 @@ function G(e) {
178
178
  return null;
179
179
  }
180
180
  function X(e) {
181
- let t = ue(e);
181
+ let t = de(e);
182
182
  return t ? J.get(t) ?? null : null;
183
183
  }
184
184
  function Z() {
185
- let e = I.value?.package, t = le(), n = /* @__PURE__ */ new Set();
185
+ let e = I.value?.package, t = ue(), n = /* @__PURE__ */ new Set();
186
186
  if (e?.headers) for (let t of e.headers.keys()) n.add(t);
187
187
  if (e?.footers) for (let t of e.footers.keys()) n.add(t);
188
188
  for (let [e, t] of J) n.has(e) || (t.destroy(), t.dom.parentElement?.remove(), Y.get(e)?.destroy(), Y.delete(e), J.delete(e));
@@ -192,30 +192,30 @@ function G(e) {
192
192
  if (J.has(o)) continue;
193
193
  let n = e.headers?.get(o) ?? e.footers?.get(o);
194
194
  if (!n) continue;
195
- let c = e.headers?.has(o) ? "header" : "footer", l = new te(ne());
195
+ let c = e.headers?.has(o) ? "header" : "footer", l = new ne(re());
196
196
  l.buildSchema(), l.initializeRuntime(), Y.set(o, l);
197
197
  let u = window.document.createElement("div");
198
198
  u.dataset.hfRId = o, u.dataset.hfKind = c, t.appendChild(u);
199
- let d = _(n.content, {
199
+ let d = v(n.content, {
200
200
  styles: r ?? void 0,
201
201
  theme: i,
202
202
  defaultTabStopTwips: a
203
203
  }), f = T(r), p = s.create({
204
204
  doc: d,
205
- schema: b,
205
+ schema: m,
206
206
  plugins: [...l.getPlugins(), f]
207
- }), m = c, h = new x(u, {
207
+ }), h = c, g = new x(u, {
208
208
  state: p,
209
209
  dispatchTransaction(e) {
210
- let t = h.state.apply(e);
211
- if (h.updateState(t), e.docChanged) {
212
- let e = I.value?.package, n = (m === "header" ? e?.headers : e?.footers)?.get(o);
213
- n && (n.content = v(t.doc));
210
+ let t = g.state.apply(e);
211
+ if (g.updateState(t), e.docChanged) {
212
+ let e = I.value?.package, n = (h === "header" ? e?.headers : e?.footers)?.get(o);
213
+ n && (n.content = y(t.doc));
214
214
  }
215
- e.docChanged && R.value && U(R.value), $.value?.(o, h, e.docChanged);
215
+ e.docChanged && R.value && U(R.value), $.value?.(o, g, e.docChanged);
216
216
  }
217
217
  });
218
- J.set(o, h);
218
+ J.set(o, g);
219
219
  }
220
220
  }
221
221
  function Q() {
@@ -225,42 +225,42 @@ function G(e) {
225
225
  Y.clear(), q.current &&= (q.current.remove(), null);
226
226
  }
227
227
  let $ = { value: null };
228
- function de(e) {
228
+ function fe(e) {
229
229
  $.value = e;
230
230
  }
231
- async function fe(e) {
231
+ async function pe(e) {
232
232
  B.value = null, z.value = !1;
233
233
  try {
234
234
  let t;
235
235
  t = e instanceof Blob || e instanceof File ? await e.arrayBuffer() : e instanceof Uint8Array ? e.buffer.slice(e.byteOffset, e.byteOffset + e.byteLength) : e, I.value = await S(t), K(), Q(), G(), Z();
236
236
  } catch (e) {
237
237
  let t = e instanceof Error ? e : Error(String(e));
238
- B.value = t.message, j?.(t);
238
+ B.value = t.message, A?.(t);
239
239
  }
240
240
  }
241
- function pe(e) {
241
+ function me(e) {
242
242
  B.value = null, I.value = e, K(), Q(), G(), Z();
243
243
  }
244
- async function me() {
244
+ async function he() {
245
245
  if (!L.value || !I.value) return null;
246
246
  let { repackDocx: e, createDocx: t } = await import("@eigenpal/docx-editor-core/docx/rezip"), { injectReplyRangeMarkers: n, injectTCReplyRangeMarkers: r } = await import("@eigenpal/docx-editor-core/docx"), i = C(L.value.state.doc, I.value), a = i.package.document?.comments ?? [];
247
247
  i.package.document?.content && a.length > 0 && (n(i.package.document.content, a), r(i.package.document.content, a));
248
248
  let o;
249
249
  return o = i.originalBuffer ? await e(i) : await t(i), new Blob([o], { type: "application/vnd.openxmlformats-officedocument.wordprocessingml.document" });
250
250
  }
251
- function he() {
251
+ function ge() {
252
252
  L.value?.focus();
253
253
  }
254
- function ge() {
254
+ function _e() {
255
255
  K(), Q(), I.value = null;
256
256
  }
257
- function _e() {
257
+ function ve() {
258
258
  return I.value;
259
259
  }
260
260
  t(() => {
261
- ge();
261
+ _e();
262
262
  });
263
- function ve() {
263
+ function ye() {
264
264
  return H.getCommands();
265
265
  }
266
266
  return {
@@ -269,19 +269,19 @@ function G(e) {
269
269
  isReady: z,
270
270
  parseError: B,
271
271
  layout: V,
272
- loadBuffer: fe,
273
- loadDocument: pe,
274
- save: me,
275
- focus: he,
276
- destroy: ge,
277
- getDocument: _e,
278
- getCommands: ve,
272
+ loadBuffer: pe,
273
+ loadDocument: me,
274
+ save: he,
275
+ focus: ge,
276
+ destroy: _e,
277
+ getDocument: ve,
278
+ getCommands: ye,
279
279
  reLayout() {
280
280
  L.value && U(L.value.state);
281
281
  },
282
282
  getHfPmView: X,
283
283
  syncHfPMs: Z,
284
- setHfTransactionListener: de,
284
+ setHfTransactionListener: fe,
285
285
  setDocument(e) {
286
286
  I.value = e;
287
287
  }
@@ -300,7 +300,7 @@ var K = .25, q = 4, J = .1, Y = [
300
300
  3,
301
301
  4
302
302
  ];
303
- function le(i = 1) {
303
+ function ue(i = 1) {
304
304
  let a = r(Math.max(K, Math.min(q, i))), o = e(() => Math.round(a.value * 100)), s = e(() => a.value <= K), c = e(() => a.value >= q);
305
305
  function l(e) {
306
306
  a.value = Math.max(K, Math.min(q, Math.round(e * 100) / 100));
@@ -340,7 +340,7 @@ function le(i = 1) {
340
340
  }
341
341
  //#endregion
342
342
  //#region src/composables/useTableResize.ts
343
- function ue() {
343
+ function de() {
344
344
  let e = {
345
345
  active: !1,
346
346
  startX: 0,
@@ -379,8 +379,8 @@ function ue() {
379
379
  r.preventDefault();
380
380
  let t = r.clientX - e.startX, n = parseFloat(e.handle.style.left);
381
381
  e.handle.style.left = `${n + t}px`, e.startX = r.clientX;
382
- let i = Math.round(t * F), a = e.origWidths.left + i, o = e.origWidths.right - i;
383
- a >= N && o >= N && (e.origWidths = {
382
+ let i = Math.round(t * P), a = e.origWidths.left + i, o = e.origWidths.right - i;
383
+ a >= M && o >= M && (e.origWidths = {
384
384
  left: a,
385
385
  right: o
386
386
  });
@@ -390,21 +390,21 @@ function ue() {
390
390
  r.preventDefault();
391
391
  let e = r.clientY - t.startY, n = parseFloat(t.handle.style.top);
392
392
  t.handle.style.top = `${n + e}px`, t.startY = r.clientY;
393
- let i = Math.round(e * F), a = t.origHeight + i;
394
- a >= P && (t.origHeight = a);
393
+ let i = Math.round(e * P), a = t.origHeight + i;
394
+ a >= N && (t.origHeight = a);
395
395
  return;
396
396
  }
397
397
  if (n.active && n.handle) {
398
398
  r.preventDefault();
399
399
  let e = r.clientX - n.startX, t = parseFloat(n.handle.style.left);
400
400
  n.handle.style.left = `${t + e}px`, n.startX = r.clientX;
401
- let i = Math.round(e * F), a = n.origWidth + i;
402
- a >= N && (n.origWidth = a);
401
+ let i = Math.round(e * P), a = n.origWidth + i;
402
+ a >= M && (n.origWidth = a);
403
403
  }
404
404
  }
405
405
  function s(i) {
406
406
  if (e.active) {
407
- e.active = !1, e.handle?.classList.remove("dragging"), r && oe(r, {
407
+ e.active = !1, e.handle?.classList.remove("dragging"), r && F(r, {
408
408
  pmStart: e.tablePmStart,
409
409
  colIdx: e.columnIndex,
410
410
  newLeft: e.origWidths.left,
@@ -448,7 +448,7 @@ function Z(e, t, n) {
448
448
  return;
449
449
  }
450
450
  let i = n.closest(".layout-table")?.querySelector(`[data-row-index="${t.rowIndex}"]`), a = i ? i.getBoundingClientRect().height : 30;
451
- t.origHeight = Math.round(a * F);
451
+ t.origHeight = Math.round(a * P);
452
452
  }
453
453
  function Q(e, t) {
454
454
  let n = R(e, t.tablePmStart, t.columnIndex);
@@ -490,4 +490,4 @@ function $({ pagesContainer: e, onScrollExtendSelection: n }) {
490
490
  };
491
491
  }
492
492
  //#endregion
493
- export { G as i, ue as n, le as r, $ as t };
493
+ export { G as i, de as n, ue as r, $ as t };
@@ -0,0 +1 @@
1
+ let e=require(`vue`),t=require(`prosemirror-state`),n=require(`@eigenpal/docx-editor-core/layout-bridge`),r=require(`@eigenpal/docx-editor-core/prosemirror`),i=require(`@eigenpal/docx-editor-core/layout-painter`),a=require(`@eigenpal/docx-editor-core/prosemirror/conversion`),o=require(`prosemirror-view`),s=require(`@eigenpal/docx-editor-core/docx/parser`),c=require(`@eigenpal/docx-editor-core/prosemirror/conversion/fromProseDoc`),l=require(`@eigenpal/docx-editor-core/prosemirror/schema`),u=require(`@eigenpal/docx-editor-core/prosemirror/plugins`),d=require(`@eigenpal/docx-editor-core/prosemirror/extensions`),f=require(`@eigenpal/docx-editor-core/layout-bridge/measuring`),p=require(`@eigenpal/docx-editor-core/editor`),m=require(`@eigenpal/docx-editor-core/layout-engine`),h=require(`@eigenpal/docx-editor-core/layout-painter/renderPage`);require(`prosemirror-view/style/prosemirror.css`),require(`@eigenpal/docx-editor-core/prosemirror/editor.css`);let g=require(`@eigenpal/docx-editor-core/prosemirror/tableResize`),_=require(`@eigenpal/docx-editor-core/utils/findVerticalScrollParent`),v=require(`@eigenpal/docx-editor-core/utils/autoScroll`);var y=24;function b(e,t,r,i){switch(e.kind){case`paragraph`:return(0,f.measureParagraph)(e,t,{floatingZones:r,paragraphYOffset:i??0});case`table`:return(0,n.measureTableBlock)(e,t,b);case`image`:{let t=e;return{kind:`image`,width:t.width??100,height:t.height??100}}case`textBox`:{let t=e,n=t.margins??m.DEFAULT_TEXTBOX_MARGINS,r=(t.width??m.DEFAULT_TEXTBOX_WIDTH)-n.left-n.right,i=t.content.map(e=>(0,f.measureParagraph)(e,r)),a=i.reduce((e,t)=>e+t.totalHeight,0),o=t.height??a+n.top+n.bottom;return{kind:`textBox`,width:t.width??m.DEFAULT_TEXTBOX_WIDTH,height:o,innerMeasures:i}}case`pageBreak`:return{kind:`pageBreak`};case`columnBreak`:return{kind:`columnBreak`};case`sectionBreak`:return{kind:`sectionBreak`};default:(0,m.assertExhaustiveFlowBlock)(e,`vue useDocxEditor measureBlock`)}}function x(e,t,n){return(0,f.measureBlocksWithFloats)(e,t,b,n)}function S(f){let{hiddenContainer:m,pagesContainer:g,readOnly:_=!1,pageGap:v=y,onChange:b,onError:S,onSelectionUpdate:C,externalPlugins:w=[],syncCoordinator:T,editorMode:E,author:D}=f,O=(0,e.shallowRef)(null),k=(0,e.shallowRef)(null),A=(0,e.shallowRef)(null),j=(0,e.ref)(!1),M=(0,e.ref)(null),N=(0,e.shallowRef)(null),P=l.singletonManager;function F(e){let t=g.value;if(!t||!O.value)return;let r=T?.getStateSeq()??0;T?.onLayoutStart();let a=O.value.package?.document,o=a?.sections?.[0]?.properties??a?.finalSectionProperties??null,s=a?.finalSectionProperties??o,c=(0,n.getPageSize)(o),l=(0,n.getMargins)(o),u=(0,n.getPageSize)(s),d=(0,n.getMargins)(s),f=(0,n.getColumns)(o),m=(0,n.getColumns)(s),_=c.w-l.left-l.right,y=O.value.package?.theme??null,b=O.value.package?.styles??null;try{let{header:r,footer:a,firstHeader:g,firstFooter:S}=(0,n.resolveHeaderFooter)(O.value,o),{blocks:C,measures:w,layout:T,headerContentForRender:E,footerContentForRender:D,firstPageHeaderForRender:k,firstPageFooterForRender:A,hasTitlePg:j,watermark:M,footnotesByPage:P}=(0,p.computeLayout)({state:e,document:O.value,pageSize:c,margins:l,columns:f,finalPageSize:u,finalMargins:d,finalColumns:m,pageGap:v,contentWidth:_,theme:y,styles:b,sectionProperties:o,finalSectionProperties:s,headerContent:r,footerContent:a,firstPageHeaderContent:g,firstPageFooterContent:S,measureBlocks:x,getHfPmDoc:e=>W(e)?.state.doc??null});N.value=T;let F=(0,i.buildBlockLookup)(C,w);(0,h.renderPages)(T.pages,t,{pageGap:v,showShadow:!0,pageBackground:`#fff`,blockLookup:F,theme:y,headerContent:E,footerContent:D,firstPageHeaderContent:k,firstPageFooterContent:A,titlePage:j,watermark:M,footnotesByPage:P}),t.style.overflowY=`auto`,t.style.minHeight=`0`;for(let e of Array.from(t.children))e.style.flexShrink=`0`;(0,i.applySdtFocus)(t,(0,i.enclosingSdtGroupIds)(e.doc,e.selection.from,e.selection.to))}catch(e){console.error(`[useDocxEditor] Layout pipeline error:`,e),S?.(e instanceof Error?e:Error(String(e)))}finally{T?.onLayoutComplete(r)}}let I=(0,p.createLayoutScheduler)(F);function L(){let n=m.value;if(!n)return;let s=O.value?.package?.styles,l=O.value?(0,a.toProseDoc)(O.value,{styles:s??void 0}):(0,a.createEmptyDoc)(),d=(0,u.createSuggestionModePlugin)(!1),f=(0,u.createDocumentStylesPlugin)(s),h=[d,...w,...P.getPlugins()??[],f],v=(0,r.ensureParaIdsInState)(t.EditorState.create({doc:l,schema:P.getSchema(),plugins:h}));A.value=v;let y=new o.EditorView(n,{state:v,editable:()=>!(0,e.unref)(_),dispatchTransaction(e){if(!y)return;(0,p.stripScrollFlag)(e,y.state.tr);let t=y.state.apply(e);if(y.updateState(t),A.value=t,e.docChanged){T?.incrementStateSeq(),I.schedule(t);try{if(O.value){let e=(0,c.fromProseDoc)(t.doc,O.value);O.value=e,b?.(e)}}catch(e){console.error(`[useDocxEditor] fromProseDoc error:`,e)}}if(T?.requestRender(),C?.(),!e.docChanged){let e=g.value;e&&(0,i.applySdtFocus)(e,(0,i.enclosingSdtGroupIds)(t.doc,t.selection.from,t.selection.to))}}});k.value=y,j.value=!0,F(v),T?.requestRender()}(0,e.watch)([()=>(0,e.unref)(E),()=>(0,e.unref)(D),k],([e,t,n])=>{n&&(0,u.setSuggestionMode)(e===`suggesting`,n.state,n.dispatch,t)},{immediate:!0});function R(){I.cancel(),k.value&&=(k.value.destroy(),null),A.value=null,j.value=!1}let z={current:null},B=new Map,V=new Map;function H(){if(z.current&&z.current.isConnected)return z.current;let e=window.document.createElement(`div`);return e.dataset.hfHost=`true`,e.style.cssText=`position: fixed; left: -9999px; top: 0; opacity: 0; z-index: -1; pointer-events: none;`,window.document.body.appendChild(e),z.current=e,e}function U(e){let t=O.value?.package;if(!t)return null;if(t.headers){for(let[n,r]of t.headers)if(r===e)return n}if(t.footers){for(let[n,r]of t.footers)if(r===e)return n}return null}function W(e){let t=U(e);return t?B.get(t)??null:null}function G(){let e=O.value?.package,n=H(),i=new Set;if(e?.headers)for(let t of e.headers.keys())i.add(t);if(e?.footers)for(let t of e.footers.keys())i.add(t);for(let[e,t]of B)i.has(e)||(t.destroy(),t.dom.parentElement?.remove(),V.get(e)?.destroy(),V.delete(e),B.delete(e));if(!e)return;let s=e.styles??null,c=e.theme??null,l=e.settings?.defaultTabStop??null;for(let f of i){if(B.has(f))continue;let i=e.headers?.get(f)??e.footers?.get(f);if(!i)continue;let p=e.headers?.has(f)?`header`:`footer`,m=new d.ExtensionManager((0,d.createStarterKit)());m.buildSchema(),m.initializeRuntime(),V.set(f,m);let h=window.document.createElement(`div`);h.dataset.hfRId=f,h.dataset.hfKind=p,n.appendChild(h);let g=(0,a.headerFooterToProseDoc)(i.content,{styles:s??void 0,theme:c,defaultTabStopTwips:l}),_=(0,u.createDocumentStylesPlugin)(s),v=t.EditorState.create({doc:g,schema:r.schema,plugins:[...m.getPlugins(),_]}),y=p,b=new o.EditorView(h,{state:v,dispatchTransaction(e){let t=b.state.apply(e);if(b.updateState(t),e.docChanged){let e=O.value?.package,n=(y===`header`?e?.headers:e?.footers)?.get(f);n&&(n.content=(0,a.proseDocToBlocks)(t.doc))}e.docChanged&&A.value&&F(A.value),q.value?.(f,b,e.docChanged)}});B.set(f,b)}}function K(){for(let e of B.values())e.destroy(),e.dom.parentElement?.remove();B.clear();for(let e of V.values())e.destroy();V.clear(),z.current&&=(z.current.remove(),null)}let q={value:null};function J(e){q.value=e}async function Y(e){M.value=null,j.value=!1;try{let t;t=e instanceof Blob||e instanceof File?await e.arrayBuffer():e instanceof Uint8Array?e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength):e,O.value=await(0,s.parseDocx)(t),R(),K(),L(),G()}catch(e){let t=e instanceof Error?e:Error(String(e));M.value=t.message,S?.(t)}}function X(e){M.value=null,O.value=e,R(),K(),L(),G()}async function Z(){if(!k.value||!O.value)return null;let{repackDocx:e,createDocx:t}=await import(`@eigenpal/docx-editor-core/docx/rezip`),{injectReplyRangeMarkers:n,injectTCReplyRangeMarkers:r}=await import(`@eigenpal/docx-editor-core/docx`),i=(0,c.fromProseDoc)(k.value.state.doc,O.value),a=i.package.document?.comments??[];i.package.document?.content&&a.length>0&&(n(i.package.document.content,a),r(i.package.document.content,a));let o;return o=i.originalBuffer?await e(i):await t(i),new Blob([o],{type:`application/vnd.openxmlformats-officedocument.wordprocessingml.document`})}function Q(){k.value?.focus()}function $(){R(),K(),O.value=null}function ee(){return O.value}(0,e.onBeforeUnmount)(()=>{$()});function te(){return P.getCommands()}return{editorView:k,editorState:A,isReady:j,parseError:M,layout:N,loadBuffer:Y,loadDocument:X,save:Z,focus:Q,destroy:$,getDocument:ee,getCommands:te,reLayout(){k.value&&F(k.value.state)},getHfPmView:W,syncHfPMs:G,setHfTransactionListener:J,setDocument(e){O.value=e}}}var C=.25,w=4,T=.1,E=[.25,.5,.75,1,1.25,1.5,2,3,4];function D(t=1){let n=(0,e.ref)(Math.max(C,Math.min(w,t))),r=(0,e.computed)(()=>Math.round(n.value*100)),i=(0,e.computed)(()=>n.value<=C),a=(0,e.computed)(()=>n.value>=w);function o(e){n.value=Math.max(C,Math.min(w,Math.round(e*100)/100))}function s(){o(n.value+T)}function c(){o(n.value-T)}function l(){o(1)}function u(e){(e.ctrlKey||e.metaKey)&&(e.preventDefault(),e.deltaY<0?s():c())}function d(e){(e.ctrlKey||e.metaKey)&&(e.shiftKey||e.altKey||(e.key===`=`||e.key===`+`?(e.preventDefault(),s()):e.key===`-`?(e.preventDefault(),c()):e.key===`0`&&(e.preventDefault(),l())))}function f(){(0,e.onMounted)(()=>document.addEventListener(`keydown`,d)),(0,e.onBeforeUnmount)(()=>document.removeEventListener(`keydown`,d))}return{zoom:n,zoomPercent:r,isMinZoom:i,isMaxZoom:a,setZoom:o,zoomIn:s,zoomOut:c,resetZoom:l,handleWheel:u,handleKeyDown:d,installShortcuts:f,ZOOM_PRESETS:E}}function O(){let e={active:!1,startX:0,handle:null,columnIndex:0,tablePmStart:0,origWidths:{left:0,right:0}},t={active:!1,startY:0,handle:null,rowIndex:0,isEdge:!1,tablePmStart:0,origHeight:0},n={active:!1,startX:0,handle:null,columnIndex:0,tablePmStart:0,origWidth:0},r=null;function i(){return e.active||t.active||n.active}function a(i,a){let o=i.target;return o?.classList?o.classList.contains(`layout-table-resize-handle`)?(i.preventDefault(),i.stopPropagation(),r=a,e.active=!0,e.startX=i.clientX,e.handle=o,o.classList.add(`dragging`),e.columnIndex=parseInt(o.dataset.columnIndex??`0`,10),e.tablePmStart=parseInt(o.dataset.tablePmStart??`0`,10),k(a,e),!0):o.classList.contains(`layout-table-row-resize-handle`)||o.classList.contains(`layout-table-edge-handle-bottom`)?(i.preventDefault(),i.stopPropagation(),r=a,t.active=!0,t.startY=i.clientY,t.handle=o,t.isEdge=o.dataset.isEdge===`bottom`,o.classList.add(`dragging`),t.rowIndex=parseInt(o.dataset.rowIndex??`0`,10),t.tablePmStart=parseInt(o.dataset.tablePmStart??`0`,10),A(a,t,o),!0):o.classList.contains(`layout-table-edge-handle-right`)?(i.preventDefault(),i.stopPropagation(),r=a,n.active=!0,n.startX=i.clientX,n.handle=o,o.classList.add(`dragging`),n.columnIndex=parseInt(o.dataset.columnIndex??`0`,10),n.tablePmStart=parseInt(o.dataset.tablePmStart??`0`,10),j(a,n),!0):!1:!1}function o(r){if(e.active&&e.handle){r.preventDefault();let t=r.clientX-e.startX,n=parseFloat(e.handle.style.left);e.handle.style.left=`${n+t}px`,e.startX=r.clientX;let i=Math.round(t*g.TWIPS_PER_PIXEL),a=e.origWidths.left+i,o=e.origWidths.right-i;a>=g.MIN_CELL_WIDTH_TWIPS&&o>=g.MIN_CELL_WIDTH_TWIPS&&(e.origWidths={left:a,right:o});return}if(t.active&&t.handle){r.preventDefault();let e=r.clientY-t.startY,n=parseFloat(t.handle.style.top);t.handle.style.top=`${n+e}px`,t.startY=r.clientY;let i=Math.round(e*g.TWIPS_PER_PIXEL),a=t.origHeight+i;a>=g.MIN_ROW_HEIGHT_TWIPS&&(t.origHeight=a);return}if(n.active&&n.handle){r.preventDefault();let e=r.clientX-n.startX,t=parseFloat(n.handle.style.left);n.handle.style.left=`${t+e}px`,n.startX=r.clientX;let i=Math.round(e*g.TWIPS_PER_PIXEL),a=n.origWidth+i;a>=g.MIN_CELL_WIDTH_TWIPS&&(n.origWidth=a)}}function s(i){if(e.active){e.active=!1,e.handle?.classList.remove(`dragging`),r&&(0,g.commitColumnResize)(r,{pmStart:e.tablePmStart,colIdx:e.columnIndex,newLeft:e.origWidths.left,newRight:e.origWidths.right}),e.handle=null;return}if(t.active){t.active=!1,t.handle?.classList.remove(`dragging`),r&&(0,g.commitRowResize)(r,{pmStart:t.tablePmStart,rowIdx:t.rowIndex,newHeight:t.origHeight}),t.handle=null;return}n.active&&(n.active=!1,n.handle?.classList.remove(`dragging`),r&&(0,g.commitRightEdgeResize)(r,{pmStart:n.tablePmStart,colIdx:n.columnIndex,newWidth:n.origWidth}),n.handle=null)}function c(){return document.addEventListener(`mousemove`,o),document.addEventListener(`mouseup`,s),()=>{document.removeEventListener(`mousemove`,o),document.removeEventListener(`mouseup`,s)}}return{tryStartResize:a,install:c,isResizing:i}}function k(e,t){let n=(0,g.readColumnWidths)(e,t.tablePmStart,t.columnIndex);n&&(t.origWidths=n)}function A(e,t,n){let r=(0,g.readRowHeight)(e,t.tablePmStart,t.rowIndex);if(r!=null){t.origHeight=r;return}let i=n.closest(`.layout-table`)?.querySelector(`[data-row-index="${t.rowIndex}"]`),a=i?i.getBoundingClientRect().height:30;t.origHeight=Math.round(a*g.TWIPS_PER_PIXEL)}function j(e,t){let n=(0,g.readColumnWidthAt)(e,t.tablePmStart,t.columnIndex);n!=null&&(t.origWidth=n)}function M({pagesContainer:t,onScrollExtendSelection:n}){let r=null,i=0,a=0,o=!1,s=null;function c(){if(s)return s;let e=t.value;return e?(s=(0,_.findVerticalScrollParent)(e),s):null}function l(){o=!1,r!==null&&(cancelAnimationFrame(r),r=null)}function u(){if(!o)return;let e=c();if(!e)return;let t=(0,v.computeAutoScrollDelta)(e.getBoundingClientRect(),a);t!==0&&(e.scrollTop+=t,n(i,a)),r=requestAnimationFrame(u)}function d(){o||(o=!0,r=requestAnimationFrame(u))}function f(e,t){if(i=e,a=t,!o){let e=c();if(!e)return;let n=e.getBoundingClientRect();(t<n.top+v.AUTO_SCROLL_EDGE_ZONE||t>n.bottom-v.AUTO_SCROLL_EDGE_ZONE)&&d()}}return(0,e.onBeforeUnmount)(()=>l()),{updateMousePosition:f,stopAutoScroll:l}}Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return M}});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eigenpal/docx-editor-vue",
3
- "version": "1.3.1",
3
+ "version": "1.3.3",
4
4
  "description": "Vue 3 DOCX editor adapter for @eigenpal/docx-editor-core.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -83,9 +83,9 @@
83
83
  "vue": "^3.3.0"
84
84
  },
85
85
  "dependencies": {
86
- "@eigenpal/docx-editor-agents": "^1.3.1",
87
- "@eigenpal/docx-editor-core": "^1.3.1",
88
- "@eigenpal/docx-editor-i18n": "^1.3.1"
86
+ "@eigenpal/docx-editor-agents": "^1.3.3",
87
+ "@eigenpal/docx-editor-core": "^1.3.3",
88
+ "@eigenpal/docx-editor-i18n": "^1.3.3"
89
89
  },
90
90
  "keywords": [
91
91
  "docx",