@epam/ai-dial-attachment-canvas 1.2.0-dev.2 → 1.2.0-dev.6

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.
Files changed (41) hide show
  1. package/{LazyContentBoundary-CL7J_W9c.js → LazyContentBoundary-CRXN6PG3.js} +1 -1
  2. package/{PdfContent-DhfjgYL-.js → PdfContent-D71LPAe3.js} +1 -1
  3. package/{attachment-canvas-Bp6WeQws.js → attachment-canvas-nvhW3tKV.js} +3 -1
  4. package/{bounded-raw-part-cache-BfbSxRIL-DD07NKh9.js → bounded-raw-part-cache-Cg1BsSZQ-DN8p45IK.js} +1111 -1043
  5. package/{chart-ex-B0DgG3Dt.js → chart-ex-DsESBs97.js} +1 -1
  6. package/{comment-occurrence-CqejEuts-7SeKCBXk.js → comment-occurrence-C8Y2uoVr-C1cxz2TU.js} +1 -1
  7. package/{comment-ui-runtime-lXwVOgjW-Be4RALsI.js → comment-ui-runtime-BfE7MJZn-DhQ_eg15.js} +29 -29
  8. package/comment-ui-runtime-BsK8pmUT-EgWiymew.js +2 -0
  9. package/{comment-ui-runtime-DEtgcmj7-B1G7PH4z.js → comment-ui-runtime-DcJOYlw--B15auUq-.js} +52 -52
  10. package/{comments-CAn2A_Xh-CdgNAj0h.js → comments-Diid5ujN-BdQhRNjI.js} +2 -2
  11. package/components/OoxmlContent/OoxmlContent.d.ts.map +1 -1
  12. package/{delimited-text-worker-host-DcHj_JZt-DWJmaPag.js → delimited-text-worker-host-BVY-Ecni-AimUmSn0.js} +1 -1
  13. package/{docx-B9qBTEkj.js → docx-B-VcIRoc.js} +4628 -4580
  14. package/index.js +564 -564
  15. package/line-distribute-Dtudnqhs--BYZNgzX.js +1237 -0
  16. package/{line-metrics-CBbw80Ko-DoOuwYxZ.js → line-metrics-B60C86uh-DfQUk7X1.js} +1 -1
  17. package/ooxml-highlight-surfaces-CaMjx8u-.js +351 -0
  18. package/package.json +4 -4
  19. package/{pptx-dkJw0-Vx.js → pptx-CnoDB8Fv.js} +955 -923
  20. package/{read-only-comment-decoration-BTnWEeo5-BNhbteYc.js → read-only-comment-decoration-Dz7eTQ4d-Cl3RKKH6.js} +1 -1
  21. package/{read-only-comment-margin-plStyGfE-mggNAMB_.js → read-only-comment-margin-DkgzASAl-BbDxMI5E.js} +1 -1
  22. package/render-worker-host-BfbnEChF-D2thMRGX.js +7 -0
  23. package/render-worker-host-DNL9dWRh-Bky38ZHE.js +7 -0
  24. package/render-worker-host-IkHrYOci-DbjyHK7U.js +7 -0
  25. package/{renderer-module-contract-Cu-GKuPd-Bt0YZuzB.js → renderer-module-contract-D91rkYHH-BtfSKxb4.js} +1 -1
  26. package/test-setup.d.ts +10 -1
  27. package/test-setup.d.ts.map +1 -1
  28. package/types/attachment-canvas.d.ts +17 -0
  29. package/types/attachment-canvas.d.ts.map +1 -1
  30. package/utils/ooxml-highlight-geometry.d.ts +87 -3
  31. package/utils/ooxml-highlight-geometry.d.ts.map +1 -1
  32. package/utils/ooxml-highlight-surfaces.d.ts +33 -6
  33. package/utils/ooxml-highlight-surfaces.d.ts.map +1 -1
  34. package/{visible-index-DPoQYSDt-9lRc-2Ik.js → visible-index-BgiHEc1z-BOzE9X5U.js} +7 -7
  35. package/{xlsx-BAXMTJTG.js → xlsx-Dn0XSlTO.js} +1581 -1556
  36. package/comment-ui-runtime-TLHustXJ-DWCXG2mL.js +0 -2
  37. package/line-distribute-IsUGfHXm-DeITjLzJ.js +0 -1234
  38. package/ooxml-highlight-surfaces-DhK1KJcR.js +0 -294
  39. package/render-worker-host-BEfLZvSL-COy91Rd8.js +0 -7
  40. package/render-worker-host-Ba6Fchqr-DZeKpMWD.js +0 -7
  41. package/render-worker-host-C3xwtHnv-BBGHFdo9.js +0 -7
@@ -1,4 +1,4 @@
1
- //#region ../../node_modules/@silurus/ooxml/dist/line-metrics-CBbw80Ko.js
1
+ //#region ../../node_modules/@silurus/ooxml/dist/line-metrics-B60C86uh.js
2
2
  var e = [
3
3
  [(e) => e.includes("meiryo ui") || e.includes("meiryoui") || e.includes("メイリオ") && e.includes("ui"), {
4
4
  asc: 2171 * 1.3 / 2048,
@@ -0,0 +1,351 @@
1
+ import { a as e, i as t } from "./attachment-canvas-nvhW3tKV.js";
2
+ //#region src/utils/ooxml-highlight-geometry.ts
3
+ var n = 4 / 3, r = 9525, i = 2, a = 1, o = 0, s = 16, c = .25, l = () => {
4
+ let e = document.createElement("canvas").getContext("2d");
5
+ if (e != null) return (t, n) => (e.font !== t && (e.font = t), e.measureText(n).width);
6
+ }, u = (e, t) => ({
7
+ width: e.widthPt * n * t,
8
+ height: e.heightPt * n * t
9
+ }), d = (e, t, n) => ({
10
+ width: e / r * n,
11
+ height: t / r * n
12
+ }), f = ({ index: e, sizeAt: t, hostClientWidth: n, layout: r }) => {
13
+ let i = r?.gap ?? s, a = r?.paddingTop ?? i, o = r?.paddingLeft ?? i, c = a + e * i;
14
+ for (let n = 0; n < e; n += 1) c += t(n).height;
15
+ let { width: l } = t(e);
16
+ return {
17
+ left: Math.max(o, (n - l) / 2),
18
+ top: c
19
+ };
20
+ }, p = ({ pageIndex: e, rect: t, sizeAt: n, host: r, layout: i }) => {
21
+ let a = f({
22
+ index: e,
23
+ sizeAt: n,
24
+ hostClientWidth: r.clientWidth,
25
+ layout: i
26
+ }), o = n(e), s = a.top + t.top * o.height, l = Math.min(r.clientHeight * c, s), u = Math.max(0, r.scrollHeight - r.clientHeight), d = Math.min(Math.max(s - l, 0), u), p = a.left + t.left * o.width, m = p + t.width * o.width, h = Math.max(0, r.scrollWidth - r.clientWidth), g = r.scrollLeft;
27
+ return p < r.scrollLeft ? g = p : m > r.scrollLeft + r.clientWidth && (g = m - r.clientWidth), g = Math.min(Math.max(g, 0), h), {
28
+ top: d,
29
+ left: g
30
+ };
31
+ }, m = (e) => {
32
+ let t = [...e].sort((e, t) => e.top - t.top || e.left - t.left), n = [];
33
+ for (let e of t) {
34
+ let t = n.at(-1), r = t != null && Math.abs(t.top - e.top) <= i && Math.abs(t.height - e.height) <= i, o = t != null && e.left <= t.left + t.width + a;
35
+ if (r && o) {
36
+ t.width = Math.max(t.left + t.width, e.left + e.width) - t.left, t.height = Math.max(t.height, e.height);
37
+ continue;
38
+ }
39
+ n.push({ ...e });
40
+ }
41
+ return n;
42
+ }, h = (e, t, n) => Math.min(Math.max(e, t), n), g = (e, t) => e.length === t.length && e.every((e, n) => e === t[n]), _ = (e, t, n) => {
43
+ if (!e) return 1;
44
+ let r = n();
45
+ return !(r > 0) || t >= r ? 1 : t / r;
46
+ }, v = (e, t, n, r, i, a, o, s) => {
47
+ if (o <= a) return null;
48
+ if (a <= 0 && o >= e.length) return {
49
+ left: t.x,
50
+ top: t.y,
51
+ width: t.width,
52
+ height: t.height
53
+ };
54
+ if (s == null) return null;
55
+ let c = (e) => s(n, e), l = a <= 0 ? 0 : c(e.slice(0, a)), u = o >= e.length ? c(e) : c(e.slice(0, o)), d = [...e.slice(0, a)].length, f = [...e.slice(a, o)].length, p = _(i, t.width, () => c(e)), m = (l + d * r) * p, h = (Math.max(0, u - l) + Math.max(0, f - 1) * r) * p;
56
+ return h <= 0 ? null : {
57
+ left: t.x + m,
58
+ top: t.y,
59
+ width: h,
60
+ height: t.height
61
+ };
62
+ }, y = (e, t, n, r, i, a, o) => {
63
+ let s = /* @__PURE__ */ new Map();
64
+ if (!Number.isInteger(n) || !Number.isInteger(r) || n < 0 || r <= n || r > t.length || t.slice(n, r) !== i) return s;
65
+ for (let t of e) {
66
+ if (t.end <= n || t.start >= r || a(t.run)) continue;
67
+ let e = h(n - t.start, 0, t.end - t.start), i = o(t, e, h(r - t.start, e, t.end - t.start));
68
+ if (i == null) continue;
69
+ let c = s.get(t.surfaceIndex);
70
+ if (c == null) {
71
+ s.set(t.surfaceIndex, [i]);
72
+ continue;
73
+ }
74
+ c.push(i);
75
+ }
76
+ for (let [e, t] of s) s.set(e, m(t));
77
+ return s;
78
+ }, b = ({ location: e, pages: t, measure: n }) => {
79
+ let r = [], i = "", a = /* @__PURE__ */ new Map();
80
+ for (let { pageIndex: n, runs: o, pageBox: s } of t) {
81
+ a.set(n, s);
82
+ for (let t of o) {
83
+ if (t.source == null || t.sourceRunIndex == null || t.source.story !== e.story || !g(t.source.path, e.path)) continue;
84
+ let a = t.highlightBounds, o = a == null ? {
85
+ x: t.x,
86
+ y: t.y,
87
+ width: t.w,
88
+ height: t.h
89
+ } : {
90
+ x: a.x,
91
+ y: a.y,
92
+ width: a.width,
93
+ height: a.height
94
+ };
95
+ r.push({
96
+ run: t,
97
+ box: o,
98
+ start: i.length,
99
+ end: i.length + t.text.length,
100
+ surfaceIndex: n
101
+ }), i += t.text;
102
+ }
103
+ }
104
+ return [...y(r, i, e.start, e.endExclusive, e.text, (e) => e.transform != null, ({ run: e, box: t }, r, i) => v(e.text, t, e.font, e.letterSpacingPx ?? 0, e.eastAsianVert === !0, r, i, n))].sort(([e], [t]) => e - t).map(([e, t]) => {
105
+ let n = a.get(e);
106
+ return n == null || n.width <= 0 || n.height <= 0 ? {
107
+ pageIndex: e,
108
+ rects: []
109
+ } : {
110
+ pageIndex: e,
111
+ rects: t.map((e) => ({
112
+ left: e.left / n.width,
113
+ top: e.top / n.height,
114
+ width: e.width / n.width,
115
+ height: e.height / n.height
116
+ }))
117
+ };
118
+ });
119
+ }, x = (e) => e.rotation !== 0 || (e.textBodyRotation ?? 0) !== 0 || e.shapeFlipH === !0 || e.shapeFlipV === !0, S = ({ location: e, runs: t, measure: n }) => {
120
+ let r = [], i = "";
121
+ for (let n of t) n.shapeId != null && String(n.shapeId) === e.shapeId && (n.origin === "master" || n.origin === "layout" || (r.push({
122
+ run: n,
123
+ box: {
124
+ x: n.shapeX + n.inShapeX,
125
+ y: n.shapeY + n.inShapeY,
126
+ width: n.w,
127
+ height: n.h
128
+ },
129
+ start: i.length,
130
+ end: i.length + n.text.length,
131
+ surfaceIndex: o
132
+ }), i += n.text));
133
+ return y(r, i, e.start, e.endExclusive, e.text, x, ({ run: e, box: t }, r, i) => v(e.text, t, e.font, 0, !1, r, i, n)).get(o) ?? [];
134
+ }, C = (e, t) => {
135
+ let n = t.indexOf(e);
136
+ return n === -1 ? null : n;
137
+ }, w = ({ row: e, col: t }) => {
138
+ let n = "", r = t;
139
+ for (; r > 0;) {
140
+ let e = (r - 1) % 26;
141
+ n = String.fromCharCode(65 + e) + n, r = Math.floor((r - 1) / 26);
142
+ }
143
+ return `${n}${e}`;
144
+ }, T = ({ location: e, getCellViewportRect: t, viewportWidth: n }) => {
145
+ let { start: r, end: i } = e, a = i == null ? r.col : i.col;
146
+ if (i != null && (i.row !== r.row || i.col < r.col)) return [];
147
+ let o = [];
148
+ for (let e = r.col; e <= a; e += 1) {
149
+ let n = t({
150
+ row: r.row,
151
+ col: e
152
+ });
153
+ n != null && o.push(n);
154
+ }
155
+ if (o.length === 0) return [];
156
+ let s = m(o);
157
+ if (n == null || s.length !== 1) return s;
158
+ let [c] = s, l = Math.min(c.width, n - c.left);
159
+ return l >= c.width ? s : [{
160
+ ...c,
161
+ width: Math.max(0, l),
162
+ isClippedAtEnd: !0
163
+ }];
164
+ }, E = (e) => {
165
+ for (let t of e.querySelectorAll("div")) if (t.style.overflow === "auto") return t;
166
+ return null;
167
+ }, D = (e) => {
168
+ let t = e.querySelector("canvas");
169
+ if (t == null) return {
170
+ left: 0,
171
+ top: 0
172
+ };
173
+ let n = t.getBoundingClientRect(), r = e.getBoundingClientRect();
174
+ return {
175
+ left: n.left - r.left,
176
+ top: n.top - r.top
177
+ };
178
+ }, O = (e, t) => {
179
+ let n = Math.min(e.length, t.length);
180
+ for (let r = 0; r < n; r += 1) if (e[r] !== t[r]) return e[r] - t[r];
181
+ return e.length - t.length;
182
+ }, k = (n, r, i, a) => {
183
+ let o = l(), s = /* @__PURE__ */ new Map(), c = 0, d = (e) => u(r.pageSize(e), i.getScale()), m = (e) => u(r.pageSize(e), 1), h = async (e) => {
184
+ let t = s.get(e);
185
+ if (t != null) return t;
186
+ let n = await r.collectPageRuns(e, { width: m(e).width });
187
+ return a() ? [] : (s.set(e, n), n);
188
+ }, g = async (e, t = a) => {
189
+ let n = [];
190
+ for (let i = 0; i < r.pageCount; i += 1) {
191
+ let r = await h(i);
192
+ if (t()) return [];
193
+ let a = r.filter((t) => t.source != null && t.source.story === e.story);
194
+ if (a.some((t) => t.source != null && O(t.source.path, e.path) === 0)) {
195
+ n.push({
196
+ pageIndex: i,
197
+ runs: r,
198
+ pageBox: m(i)
199
+ });
200
+ continue;
201
+ }
202
+ let o = a.length > 0 && a.every((t) => t.source != null && O(t.source.path, e.path) > 0);
203
+ if (n.length > 0 || o) break;
204
+ }
205
+ return n;
206
+ };
207
+ return {
208
+ measure: async (e) => {
209
+ let r = E(n);
210
+ if (r == null) return [];
211
+ let i = [];
212
+ for (let n of e) for (let e of n.locations) {
213
+ if (e.kind !== t.DocxTextRange) continue;
214
+ let s = await g(e);
215
+ if (a()) return [];
216
+ for (let { pageIndex: t, rects: a } of b({
217
+ location: e,
218
+ pages: s,
219
+ measure: o
220
+ })) {
221
+ let e = f({
222
+ index: t,
223
+ sizeAt: d,
224
+ hostClientWidth: r.clientWidth
225
+ }), o = d(t);
226
+ for (let t of a) i.push({
227
+ left: e.left + t.left * o.width - r.scrollLeft,
228
+ top: e.top + t.top * o.height - r.scrollTop,
229
+ width: t.width * o.width,
230
+ height: t.height * o.height,
231
+ highlightId: n.id
232
+ });
233
+ }
234
+ }
235
+ return i;
236
+ },
237
+ navigate: async (s) => {
238
+ if (s.kind !== t.DocxTextRange) return e.Unresolved;
239
+ c += 1;
240
+ let l = c, u = () => a() || l !== c;
241
+ try {
242
+ await r.waitUntilLayoutComplete();
243
+ } catch {
244
+ return e.Unresolved;
245
+ }
246
+ if (u()) return e.Superseded;
247
+ let f = await g(s, u);
248
+ if (u()) return e.Superseded;
249
+ let m = f.at(0);
250
+ if (m == null) return e.Unresolved;
251
+ let h = E(n);
252
+ if (h == null) return e.Unresolved;
253
+ let _ = b({
254
+ location: s,
255
+ pages: f,
256
+ measure: o
257
+ });
258
+ if (u()) return e.Superseded;
259
+ let v = _.find((e) => e.pageIndex === m.pageIndex)?.rects.at(0);
260
+ if (v == null) return i.scrollToPage(m.pageIndex), e.Navigated;
261
+ let y = p({
262
+ pageIndex: m.pageIndex,
263
+ rect: v,
264
+ sizeAt: d,
265
+ host: {
266
+ clientWidth: h.clientWidth,
267
+ clientHeight: h.clientHeight,
268
+ scrollWidth: h.scrollWidth,
269
+ scrollHeight: h.scrollHeight,
270
+ scrollLeft: h.scrollLeft
271
+ }
272
+ });
273
+ return typeof h.scrollTo == "function" ? h.scrollTo({
274
+ top: y.top,
275
+ left: y.left,
276
+ behavior: "auto"
277
+ }) : (h.scrollTop = y.top, h.scrollLeft = y.left), e.Navigated;
278
+ }
279
+ };
280
+ }, A = (n, r, i, a) => {
281
+ let o = l(), s = () => d(r.slideWidth, r.slideHeight, i.getScale()), c = (e) => e < 1 || e > r.slideCount ? null : e - 1;
282
+ return {
283
+ measure: async (e) => {
284
+ let i = E(n);
285
+ if (i == null) return [];
286
+ let l = [];
287
+ for (let n of e) for (let e of n.locations) {
288
+ if (e.kind !== t.PptxTextRange) continue;
289
+ let u = c(e.slide);
290
+ if (u == null) continue;
291
+ let d = await r.collectSlideRuns(u, s().width);
292
+ if (a()) return [];
293
+ let p = f({
294
+ index: u,
295
+ sizeAt: s,
296
+ hostClientWidth: i.clientWidth
297
+ });
298
+ for (let t of S({
299
+ location: e,
300
+ runs: d,
301
+ measure: o
302
+ })) l.push({
303
+ ...t,
304
+ left: p.left + t.left - i.scrollLeft,
305
+ top: p.top + t.top - i.scrollTop,
306
+ highlightId: n.id
307
+ });
308
+ }
309
+ return l;
310
+ },
311
+ navigate: async (n) => {
312
+ if (n.kind !== t.PptxTextRange) return e.Unresolved;
313
+ let r = c(n.slide);
314
+ return r == null ? e.Unresolved : (i.scrollToSlide(r), e.Navigated);
315
+ }
316
+ };
317
+ }, j = (n, r, i) => ({
318
+ measure: async (e) => {
319
+ let i = D(n), a = n.clientWidth - i.left, o = [];
320
+ for (let n of e) for (let e of n.locations) {
321
+ if (e.kind !== t.XlsxCellRange) continue;
322
+ let s = C(e.sheet, r.sheetNames);
323
+ if (!(s == null || s !== r.sheetIndex)) for (let t of T({
324
+ location: e,
325
+ getCellViewportRect: (e) => {
326
+ let t = r.getCellViewportRect(e);
327
+ return t == null ? null : {
328
+ left: t.x,
329
+ top: t.y,
330
+ width: t.width,
331
+ height: t.height
332
+ };
333
+ },
334
+ viewportWidth: a
335
+ })) o.push({
336
+ ...t,
337
+ left: i.left + t.left,
338
+ top: i.top + t.top,
339
+ highlightId: n.id
340
+ });
341
+ }
342
+ return o;
343
+ },
344
+ navigate: async (n) => {
345
+ if (n.kind !== t.XlsxCellRange) return e.Unresolved;
346
+ let a = C(n.sheet, r.sheetNames);
347
+ return a == null ? e.Unresolved : a !== r.sheetIndex && (await r.goToSheet(a), i()) ? e.Superseded : (await r.scrollToCell(w(n.start), { align: "center" }), e.Navigated);
348
+ }
349
+ });
350
+ //#endregion
351
+ export { e as OoxmlNavigationOutcome, k as createDocxHighlightSurface, A as createPptxHighlightSurface, j as createXlsxHighlightSurface };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@epam/ai-dial-attachment-canvas",
3
3
  "description": "Canvas viewer for rendering attachment content — images, PDFs, Office documents, CSV, JSON, markdown, and plain text",
4
- "version": "1.2.0-dev.2",
4
+ "version": "1.2.0-dev.6",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
7
7
  "main": "./index.js",
@@ -17,7 +17,7 @@
17
17
  }
18
18
  },
19
19
  "dependencies": {
20
- "@silurus/ooxml": "^0.86.1",
20
+ "@silurus/ooxml": "^0.87.0",
21
21
  "@tabler/icons-react": "^3.44.0",
22
22
  "react-json-view-lite": "^2.5.0",
23
23
  "react-syntax-highlighter": "^16.1.1",
@@ -29,10 +29,10 @@
29
29
  "@modelcontextprotocol/sdk": "^1.29.0",
30
30
  "@modelcontextprotocol/ext-apps": "1.7.5",
31
31
  "pdfjs-dist": "^5.4.149",
32
- "@epam/ai-dial-sidebar": "1.2.0-dev.2"
32
+ "@epam/ai-dial-sidebar": "1.2.0-dev.6"
33
33
  },
34
34
  "peerDependencies": {
35
- "@epam/ai-dial-chat-shared": "1.2.0-dev.2",
35
+ "@epam/ai-dial-chat-shared": "1.2.0-dev.6",
36
36
  "@epam/ai-dial-ui-kit": "^0.14.2",
37
37
  "react": "^19.2.8"
38
38
  },