@epam/ai-dial-attachment-canvas 1.1.0-dev.99 → 1.2.0-dev.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.
Files changed (72) hide show
  1. package/LazyContentBoundary-CL7J_W9c.js +166 -0
  2. package/PdfContent-DhfjgYL-.js +260 -0
  3. package/PdfContent.css +1 -0
  4. package/attachment-canvas-Bp6WeQws.js +12 -0
  5. package/bounded-raw-part-cache-BfbSxRIL-DD07NKh9.js +37832 -0
  6. package/chart-ex-B0DgG3Dt.js +1009 -0
  7. package/comment-occurrence-CqejEuts-7SeKCBXk.js +6 -0
  8. package/comment-ui-runtime-DEtgcmj7-B1G7PH4z.js +170 -0
  9. package/comment-ui-runtime-TLHustXJ-DWCXG2mL.js +2 -0
  10. package/comment-ui-runtime-lXwVOgjW-Be4RALsI.js +112 -0
  11. package/comments-CAn2A_Xh-CdgNAj0h.js +282 -0
  12. package/components/AttachmentCanvas/AttachmentCanvas.d.ts.map +1 -1
  13. package/components/AttachmentCanvasBody/AttachmentCanvasBody.d.ts +4 -0
  14. package/components/AttachmentCanvasBody/AttachmentCanvasBody.d.ts.map +1 -0
  15. package/components/AttachmentCanvasContainer/AttachmentCanvasContainer.d.ts +14 -0
  16. package/components/AttachmentCanvasContainer/AttachmentCanvasContainer.d.ts.map +1 -1
  17. package/components/CodeContent/CodeContent.d.ts +11 -0
  18. package/components/CodeContent/CodeContent.d.ts.map +1 -1
  19. package/components/HtmlContent/HtmlContent.d.ts +1 -3
  20. package/components/HtmlContent/HtmlContent.d.ts.map +1 -1
  21. package/components/LazyContentBoundary/LazyContentBoundary.d.ts +73 -0
  22. package/components/LazyContentBoundary/LazyContentBoundary.d.ts.map +1 -0
  23. package/components/McpAppCanvasRenderer/McpAppCanvasRenderer.d.ts +12 -0
  24. package/components/McpAppCanvasRenderer/McpAppCanvasRenderer.d.ts.map +1 -0
  25. package/components/OoxmlContent/OoxmlContent.d.ts +22 -0
  26. package/components/OoxmlContent/OoxmlContent.d.ts.map +1 -0
  27. package/components/PdfContent/PdfContent.d.ts +50 -1
  28. package/components/PdfContent/PdfContent.d.ts.map +1 -1
  29. package/components/VisualizerCanvasRenderer/VisualizerCanvasRenderer.d.ts +12 -0
  30. package/components/VisualizerCanvasRenderer/VisualizerCanvasRenderer.d.ts.map +1 -1
  31. package/constants/file.d.ts +6 -0
  32. package/constants/file.d.ts.map +1 -1
  33. package/context/AttachmentCanvasContext.d.ts +1 -1
  34. package/context/AttachmentCanvasContext.d.ts.map +1 -1
  35. package/delimited-text-worker-host-DcHj_JZt-DWJmaPag.js +25 -0
  36. package/docx-B9qBTEkj.js +29822 -0
  37. package/hooks/useMcpAppBridge/useMcpAppBridge.d.ts +23 -0
  38. package/hooks/useMcpAppBridge/useMcpAppBridge.d.ts.map +1 -0
  39. package/hooks/useOpenAttachmentCanvas/useOpenAttachmentCanvas.d.ts +64 -0
  40. package/hooks/useOpenAttachmentCanvas/useOpenAttachmentCanvas.d.ts.map +1 -0
  41. package/index.css +1 -2
  42. package/index.d.ts +11 -5
  43. package/index.d.ts.map +1 -1
  44. package/index.js +1072 -34844
  45. package/line-distribute-IsUGfHXm-DeITjLzJ.js +1234 -0
  46. package/line-metrics-CBbw80Ko-DoOuwYxZ.js +60 -0
  47. package/models/attachment-canvas.d.ts +272 -10
  48. package/models/attachment-canvas.d.ts.map +1 -1
  49. package/ooxml-highlight-surfaces-DhK1KJcR.js +294 -0
  50. package/package.json +19 -13
  51. package/pptx-dkJw0-Vx.js +9179 -0
  52. package/read-only-comment-decoration-BTnWEeo5-BNhbteYc.js +94 -0
  53. package/read-only-comment-margin-plStyGfE-mggNAMB_.js +189 -0
  54. package/render-worker-host-BEfLZvSL-COy91Rd8.js +7 -0
  55. package/render-worker-host-Ba6Fchqr-DZeKpMWD.js +7 -0
  56. package/render-worker-host-C3xwtHnv-BBGHFdo9.js +7 -0
  57. package/renderer-module-contract-Cu-GKuPd-Bt0YZuzB.js +10063 -0
  58. package/types/attachment-canvas.d.ts +19 -0
  59. package/types/attachment-canvas.d.ts.map +1 -1
  60. package/utils/content.d.ts +7 -0
  61. package/utils/content.d.ts.map +1 -1
  62. package/utils/download.d.ts.map +1 -1
  63. package/utils/ooxml-highlight-geometry.d.ts +157 -0
  64. package/utils/ooxml-highlight-geometry.d.ts.map +1 -0
  65. package/utils/ooxml-highlight-surfaces.d.ts +42 -0
  66. package/utils/ooxml-highlight-surfaces.d.ts.map +1 -0
  67. package/utils/visualizer.d.ts +8 -0
  68. package/utils/visualizer.d.ts.map +1 -0
  69. package/utils/vite-external-matcher.d.ts +18 -0
  70. package/utils/vite-external-matcher.d.ts.map +1 -0
  71. package/visible-index-DPoQYSDt-9lRc-2Ik.js +162 -0
  72. package/xlsx-BAXMTJTG.js +8585 -0
@@ -0,0 +1,294 @@
1
+ import { i as e } from "./attachment-canvas-Bp6WeQws.js";
2
+ //#region src/utils/ooxml-highlight-geometry.ts
3
+ var t = 4 / 3, n = 9525, r = 2, i = 1, a = 0, o = 16, s = () => {
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
+ }, c = (e, n) => ({
7
+ width: e.widthPt * t * n,
8
+ height: e.heightPt * t * n
9
+ }), l = (e, t, r) => ({
10
+ width: e / n * r,
11
+ height: t / n * r
12
+ }), u = ({ index: e, sizeAt: t, hostClientWidth: n, layout: r }) => {
13
+ let i = r?.gap ?? o, a = r?.paddingTop ?? i, s = 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(s, (n - l) / 2),
18
+ top: c
19
+ };
20
+ }, d = (e) => {
21
+ let t = [...e].sort((e, t) => e.top - t.top || e.left - t.left), n = [];
22
+ for (let e of t) {
23
+ let t = n.at(-1), a = t != null && Math.abs(t.top - e.top) <= r && Math.abs(t.height - e.height) <= r, o = t != null && e.left <= t.left + t.width + i;
24
+ if (a && o) {
25
+ t.width = Math.max(t.left + t.width, e.left + e.width) - t.left, t.height = Math.max(t.height, e.height);
26
+ continue;
27
+ }
28
+ n.push({ ...e });
29
+ }
30
+ return n;
31
+ }, f = (e, t, n) => Math.min(Math.max(e, t), n), p = (e, t) => e.length === t.length && e.every((e, n) => e === t[n]), m = (e, t, n) => {
32
+ if (!e) return 1;
33
+ let r = n();
34
+ return !(r > 0) || t >= r ? 1 : t / r;
35
+ }, h = (e, t, n, r, i, a, o, s) => {
36
+ if (o <= a) return null;
37
+ if (a <= 0 && o >= e.length) return {
38
+ left: t.x,
39
+ top: t.y,
40
+ width: t.width,
41
+ height: t.height
42
+ };
43
+ if (s == null) return null;
44
+ 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 = m(i, t.width, () => c(e)), h = (l + d * r) * p, g = (Math.max(0, u - l) + Math.max(0, f - 1) * r) * p;
45
+ return g <= 0 ? null : {
46
+ left: t.x + h,
47
+ top: t.y,
48
+ width: g,
49
+ height: t.height
50
+ };
51
+ }, g = (e, t, n, r, i, a, o) => {
52
+ let s = /* @__PURE__ */ new Map();
53
+ if (!Number.isInteger(n) || !Number.isInteger(r) || n < 0 || r <= n || r > t.length || t.slice(n, r) !== i) return s;
54
+ for (let t of e) {
55
+ if (t.end <= n || t.start >= r || a(t.run)) continue;
56
+ let e = f(n - t.start, 0, t.end - t.start), i = o(t, e, f(r - t.start, e, t.end - t.start));
57
+ if (i == null) continue;
58
+ let c = s.get(t.surfaceIndex);
59
+ if (c == null) {
60
+ s.set(t.surfaceIndex, [i]);
61
+ continue;
62
+ }
63
+ c.push(i);
64
+ }
65
+ for (let [e, t] of s) s.set(e, d(t));
66
+ return s;
67
+ }, _ = ({ location: e, pages: t, measure: n }) => {
68
+ let r = [], i = "";
69
+ for (let { pageIndex: n, runs: a } of t) for (let t of a) {
70
+ if (t.source == null || t.sourceRunIndex == null || t.source.story !== e.story || !p(t.source.path, e.path)) continue;
71
+ let a = t.highlightBounds, o = a == null ? {
72
+ x: t.x,
73
+ y: t.y,
74
+ width: t.w,
75
+ height: t.h
76
+ } : {
77
+ x: a.x,
78
+ y: a.y,
79
+ width: a.width,
80
+ height: a.height
81
+ };
82
+ r.push({
83
+ run: t,
84
+ box: o,
85
+ start: i.length,
86
+ end: i.length + t.text.length,
87
+ surfaceIndex: n
88
+ }), i += t.text;
89
+ }
90
+ return [...g(r, i, e.start, e.endExclusive, e.text, (e) => e.transform != null, ({ run: e, box: t }, r, i) => h(e.text, t, e.font, e.letterSpacingPx ?? 0, e.eastAsianVert === !0, r, i, n))].sort(([e], [t]) => e - t).map(([e, t]) => ({
91
+ pageIndex: e,
92
+ rects: t
93
+ }));
94
+ }, v = (e) => e.rotation !== 0 || (e.textBodyRotation ?? 0) !== 0 || e.shapeFlipH === !0 || e.shapeFlipV === !0, y = ({ location: e, runs: t, measure: n }) => {
95
+ let r = [], i = "";
96
+ for (let n of t) n.shapeId != null && String(n.shapeId) === e.shapeId && (n.origin === "master" || n.origin === "layout" || (r.push({
97
+ run: n,
98
+ box: {
99
+ x: n.shapeX + n.inShapeX,
100
+ y: n.shapeY + n.inShapeY,
101
+ width: n.w,
102
+ height: n.h
103
+ },
104
+ start: i.length,
105
+ end: i.length + n.text.length,
106
+ surfaceIndex: a
107
+ }), i += n.text));
108
+ return g(r, i, e.start, e.endExclusive, e.text, v, ({ run: e, box: t }, r, i) => h(e.text, t, e.font, 0, !1, r, i, n)).get(a) ?? [];
109
+ }, b = (e, t) => {
110
+ let n = t.indexOf(e);
111
+ return n === -1 ? null : n;
112
+ }, x = ({ row: e, col: t }) => {
113
+ let n = "", r = t;
114
+ for (; r > 0;) {
115
+ let e = (r - 1) % 26;
116
+ n = String.fromCharCode(65 + e) + n, r = Math.floor((r - 1) / 26);
117
+ }
118
+ return `${n}${e}`;
119
+ }, S = ({ location: e, getCellViewportRect: t, viewportWidth: n }) => {
120
+ let { start: r, end: i } = e, a = i == null ? r.col : i.col;
121
+ if (i != null && (i.row !== r.row || i.col < r.col)) return [];
122
+ let o = [];
123
+ for (let e = r.col; e <= a; e += 1) {
124
+ let n = t({
125
+ row: r.row,
126
+ col: e
127
+ });
128
+ n != null && o.push(n);
129
+ }
130
+ if (o.length === 0) return [];
131
+ let s = d(o);
132
+ if (n == null || s.length !== 1) return s;
133
+ let [c] = s, l = Math.min(c.width, n - c.left);
134
+ return l >= c.width ? s : [{
135
+ ...c,
136
+ width: Math.max(0, l),
137
+ isClippedAtEnd: !0
138
+ }];
139
+ }, C = (e) => {
140
+ for (let t of e.querySelectorAll("div")) if (t.style.overflow === "auto") return t;
141
+ return null;
142
+ }, w = (e) => {
143
+ let t = e.querySelector("canvas");
144
+ if (t == null) return {
145
+ left: 0,
146
+ top: 0
147
+ };
148
+ let n = t.getBoundingClientRect(), r = e.getBoundingClientRect();
149
+ return {
150
+ left: n.left - r.left,
151
+ top: n.top - r.top
152
+ };
153
+ }, T = (e, t) => {
154
+ let n = Math.min(e.length, t.length);
155
+ for (let r = 0; r < n; r += 1) if (e[r] !== t[r]) return e[r] - t[r];
156
+ return e.length - t.length;
157
+ }, E = (t, n, r, i) => {
158
+ let a = s(), o = /* @__PURE__ */ new Map(), l = /* @__PURE__ */ new Map(), d = (e) => c(n.pageSize(e), r.getScale()), f = async (e) => {
159
+ let t = o.get(e);
160
+ if (t != null) return t;
161
+ let r = await n.collectPageRuns(e, { width: d(e).width });
162
+ return i() ? [] : (o.set(e, r), r);
163
+ }, p = async (e) => {
164
+ let t = [];
165
+ for (let r = 0; r < n.pageCount; r += 1) {
166
+ let n = await f(r);
167
+ if (i()) return [];
168
+ let a = n.filter((t) => t.source != null && t.source.story === e.story);
169
+ if (a.some((t) => t.source != null && T(t.source.path, e.path) === 0)) {
170
+ t.push({
171
+ pageIndex: r,
172
+ runs: n
173
+ });
174
+ continue;
175
+ }
176
+ let o = a.length > 0 && a.every((t) => t.source != null && T(t.source.path, e.path) > 0);
177
+ if (t.length > 0 || o) break;
178
+ }
179
+ return t;
180
+ };
181
+ return {
182
+ measure: async (n) => {
183
+ let r = C(t);
184
+ if (r == null) return [];
185
+ let o = [];
186
+ for (let t of n) for (let n of t.locations) {
187
+ if (n.kind !== e.DocxTextRange) continue;
188
+ let s = await p(n);
189
+ if (i()) return [];
190
+ let c = s.at(0);
191
+ c != null && l.set(n, c.pageIndex);
192
+ for (let { pageIndex: e, rects: i } of _({
193
+ location: n,
194
+ pages: s,
195
+ measure: a
196
+ })) {
197
+ let n = u({
198
+ index: e,
199
+ sizeAt: d,
200
+ hostClientWidth: r.clientWidth
201
+ });
202
+ for (let e of i) o.push({
203
+ ...e,
204
+ left: n.left + e.left - r.scrollLeft,
205
+ top: n.top + e.top - r.scrollTop,
206
+ highlightId: t.id
207
+ });
208
+ }
209
+ }
210
+ return o;
211
+ },
212
+ navigate: async (t) => {
213
+ if (t.kind !== e.DocxTextRange) return;
214
+ let n = l.get(t);
215
+ if (n != null) {
216
+ r.scrollToPage(n);
217
+ return;
218
+ }
219
+ let a = await p(t);
220
+ i() || r.scrollToPage(a.at(0)?.pageIndex ?? 0);
221
+ }
222
+ };
223
+ }, D = (t, n, r, i) => {
224
+ let a = s(), o = () => l(n.slideWidth, n.slideHeight, r.getScale()), c = (e) => e < 1 || e > n.slideCount ? null : e - 1;
225
+ return {
226
+ measure: async (r) => {
227
+ let s = C(t);
228
+ if (s == null) return [];
229
+ let l = [];
230
+ for (let t of r) for (let r of t.locations) {
231
+ if (r.kind !== e.PptxTextRange) continue;
232
+ let d = c(r.slide);
233
+ if (d == null) continue;
234
+ let f = await n.collectSlideRuns(d, o().width);
235
+ if (i()) return [];
236
+ let p = u({
237
+ index: d,
238
+ sizeAt: o,
239
+ hostClientWidth: s.clientWidth
240
+ });
241
+ for (let e of y({
242
+ location: r,
243
+ runs: f,
244
+ measure: a
245
+ })) l.push({
246
+ ...e,
247
+ left: p.left + e.left - s.scrollLeft,
248
+ top: p.top + e.top - s.scrollTop,
249
+ highlightId: t.id
250
+ });
251
+ }
252
+ return l;
253
+ },
254
+ navigate: async (t) => {
255
+ if (t.kind !== e.PptxTextRange) return;
256
+ let n = c(t.slide);
257
+ n != null && r.scrollToSlide(n);
258
+ }
259
+ };
260
+ }, O = (t, n, r) => ({
261
+ measure: async (r) => {
262
+ let i = w(t), a = t.clientWidth - i.left, o = [];
263
+ for (let t of r) for (let r of t.locations) {
264
+ if (r.kind !== e.XlsxCellRange) continue;
265
+ let s = b(r.sheet, n.sheetNames);
266
+ if (!(s == null || s !== n.sheetIndex)) for (let e of S({
267
+ location: r,
268
+ getCellViewportRect: (e) => {
269
+ let t = n.getCellViewportRect(e);
270
+ return t == null ? null : {
271
+ left: t.x,
272
+ top: t.y,
273
+ width: t.width,
274
+ height: t.height
275
+ };
276
+ },
277
+ viewportWidth: a
278
+ })) o.push({
279
+ ...e,
280
+ left: i.left + e.left,
281
+ top: i.top + e.top,
282
+ highlightId: t.id
283
+ });
284
+ }
285
+ return o;
286
+ },
287
+ navigate: async (t) => {
288
+ if (t.kind !== e.XlsxCellRange) return;
289
+ let i = b(t.sheet, n.sheetNames);
290
+ i != null && (i !== n.sheetIndex && (await n.goToSheet(i), r()) || await n.scrollToCell(x(t.start), { align: "center" }));
291
+ }
292
+ });
293
+ //#endregion
294
+ export { E as createDocxHighlightSurface, D as createPptxHighlightSurface, O as createXlsxHighlightSurface };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@epam/ai-dial-attachment-canvas",
3
- "description": "Canvas viewer for rendering attachment content — images, PDFs, JSON, markdown, and plain text",
4
- "version": "1.1.0-dev.99",
3
+ "description": "Canvas viewer for rendering attachment content — images, PDFs, Office documents, CSV, JSON, markdown, and plain text",
4
+ "version": "1.2.0-dev.1",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
7
7
  "main": "./index.js",
@@ -9,27 +9,33 @@
9
9
  "types": "./index.d.ts",
10
10
  "exports": {
11
11
  "./package.json": "./package.json",
12
- "./styles.css": "./style.css",
12
+ "./styles.css": "./index.css",
13
13
  ".": {
14
14
  "types": "./index.d.ts",
15
15
  "import": "./index.js",
16
16
  "default": "./index.js"
17
17
  }
18
18
  },
19
- "peerDependencies": {
20
- "@epam/ai-dial-chat-shared": "1.1.0-dev.99",
21
- "@epam/ai-dial-shared": "0.48.0",
22
- "@epam/ai-dial-sidebar": "1.1.0-dev.99",
23
- "@epam/ai-dial-visualizer-connector": "0.48.0",
24
- "@epam/ai-dial-ui-kit": "^0.13.0-dev.26",
25
- "@epam/pdf-highlighter-kit": ">=0.0.14",
19
+ "dependencies": {
20
+ "@silurus/ooxml": "^0.86.1",
26
21
  "@tabler/icons-react": "^3.44.0",
27
- "react": "^19.0.0",
28
22
  "react-json-view-lite": "^2.5.0",
29
23
  "react-syntax-highlighter": "^16.1.1",
30
- "@epam/ai-dial-react-pdf-highlighter": "0.2.0-dev.22"
24
+ "@epam/ai-dial-react-pdf-highlighter": "0.2.0",
25
+ "@epam/ai-dial-shared": "0.48.0",
26
+ "@epam/ai-dial-visualizer-connector": "0.48.0",
27
+ "@epam/pdf-highlighter-kit": "^0.0.19",
28
+ "@mcp-ui/client": "^7.1.1",
29
+ "@modelcontextprotocol/sdk": "^1.29.0",
30
+ "@modelcontextprotocol/ext-apps": "1.7.5",
31
+ "pdfjs-dist": "^5.4.149",
32
+ "@epam/ai-dial-sidebar": "1.2.0-dev.1"
33
+ },
34
+ "peerDependencies": {
35
+ "@epam/ai-dial-chat-shared": "1.2.0-dev.1",
36
+ "@epam/ai-dial-ui-kit": "^0.14.2",
37
+ "react": "^19.2.8"
31
38
  },
32
- "dependencies": {},
33
39
  "repository": {
34
40
  "type": "git",
35
41
  "url": "git+https://github.com/epam/ai-dial-chat.git",