@epam/ai-dial-quotations 1.1.0-dev.467 → 1.1.0-dev.471
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/index.d.ts +1 -1
- package/index.d.ts.map +1 -1
- package/index.js +124 -238
- package/package.json +9 -6
- package/utils/annotation.d.ts +1 -18
- package/utils/annotation.d.ts.map +1 -1
package/index.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ export { useCitationMarkdownComponents } from './hooks/useCitationMarkdownCompon
|
|
|
12
12
|
export type { UseCitationMarkdownComponentsCallbacks } from './hooks/useCitationMarkdownComponents/useCitationMarkdownComponents';
|
|
13
13
|
export { gatherSameSourceAnnotations, groupAnnotations, groupAnnotationsByCitId, groupAnnotationsBySource, } from './utils/group-annotations-by-source';
|
|
14
14
|
export type { AnnotationGroup } from './utils/group-annotations-by-source';
|
|
15
|
-
export { annotationHighlightId, annotationsToPdfHighlights, annotationToOfficeHighlightLocations, getAnnotationPdfPage, isDocxRangeSelector, isExcelRcRangeSelector, isPptxRangeSelector,
|
|
15
|
+
export { annotationHighlightId, annotationsToPdfHighlights, annotationToOfficeHighlightLocations, getAnnotationPdfPage, isDocxRangeSelector, isExcelRcRangeSelector, isPptxRangeSelector, resolveMessageAnnotations, } from './utils/annotation';
|
|
16
16
|
export type { DocxOfficeHighlightLocation, ExcelOfficeHighlightLocation, OfficeHighlightLocation, PptxOfficeHighlightLocation, } from './models/office-highlight';
|
|
17
17
|
export { injectCitationSentinels, replaceSentinelsInChildren, stripCitTagsWhileStreaming, } from './utils/citation-injection';
|
|
18
18
|
export { isReferenceOnlyAttachment, parsePdfPageReference, getReferenceAttachmentGroups, } from './utils/reference-attachment';
|
package/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AACtE,YAAY,EACV,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,wCAAwC,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAC5E,YAAY,EACV,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,4CAA4C,CAAC;AAEpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gDAAgD,CAAC;AAClF,YAAY,EAAE,qBAAqB,EAAE,MAAM,gDAAgD,CAAC;AAG5F,OAAO,EACL,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,+BAA+B,CAAC;AACvC,YAAY,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGtE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,6BAA6B,EAAE,MAAM,qEAAqE,CAAC;AACpH,YAAY,EAAE,sCAAsC,EAAE,MAAM,qEAAqE,CAAC;AAGlI,OAAO,EACL,2BAA2B,EAC3B,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,qCAAqC,CAAC;AAC7C,YAAY,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAE3E,OAAO,EACL,qBAAqB,EACrB,0BAA0B,EAC1B,oCAAoC,EACpC,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AACtE,YAAY,EACV,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,wCAAwC,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAC5E,YAAY,EACV,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,4CAA4C,CAAC;AAEpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gDAAgD,CAAC;AAClF,YAAY,EAAE,qBAAqB,EAAE,MAAM,gDAAgD,CAAC;AAG5F,OAAO,EACL,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,+BAA+B,CAAC;AACvC,YAAY,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAGtE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,6BAA6B,EAAE,MAAM,qEAAqE,CAAC;AACpH,YAAY,EAAE,sCAAsC,EAAE,MAAM,qEAAqE,CAAC;AAGlI,OAAO,EACL,2BAA2B,EAC3B,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,qCAAqC,CAAC;AAC7C,YAAY,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAE3E,OAAO,EACL,qBAAqB,EACrB,0BAA0B,EAC1B,oCAAoC,EACpC,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,2BAA2B,EAC3B,4BAA4B,EAC5B,uBAAuB,EACvB,2BAA2B,GAC5B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,8BAA8B,CAAC;AACtC,YAAY,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC"}
|
package/index.js
CHANGED
|
@@ -1,78 +1,78 @@
|
|
|
1
|
-
import { MIMEType as e, MarkdownRenderer as t, buildCssVars as n,
|
|
2
|
-
import { DIAL_KIT_ICON_STROKE as
|
|
3
|
-
import { IconChevronLeft as
|
|
4
|
-
import { createContext as
|
|
5
|
-
import { Fragment as
|
|
6
|
-
var
|
|
1
|
+
import { MIMEType as e, MarkdownRenderer as t, buildCssVars as n, isAnnotationSelector as r, mergeClasses as i, normalizePersistedHtmlTagAttachmentType as a, normalizeRawAnnotations as o } from "@epam/ai-dial-chat-shared";
|
|
2
|
+
import { DIAL_KIT_ICON_STROKE as s, ElementSize as c, EllipsisTooltip as l, GhostIconButton as u, NeutralButton as d, PrimaryButton as f, Tooltip as p } from "@epam/ai-dial-ui-kit";
|
|
3
|
+
import { IconChevronLeft as m, IconChevronRight as h } from "@tabler/icons-react";
|
|
4
|
+
import { createContext as g, memo as _, useCallback as v, useContext as y, useMemo as b, useState as x } from "react";
|
|
5
|
+
import { Fragment as S, jsx as C, jsxs as w } from "react/jsx-runtime";
|
|
6
|
+
var T = {
|
|
7
7
|
card: "_card_1kph1_1",
|
|
8
8
|
quote: "_quote_1kph1_5",
|
|
9
9
|
title: "_title_1kph1_9",
|
|
10
10
|
switcher: "_switcher_1kph1_13",
|
|
11
11
|
sourceName: "_sourceName_1kph1_17"
|
|
12
|
-
},
|
|
13
|
-
let b = r.annotations.length,
|
|
12
|
+
}, E = ({ group: r, activeIndex: a, onIndexChange: o, onPreview: d, onOpenInBrowser: p, headerIcon: g, labels: _, typography: v, colors: y }) => {
|
|
13
|
+
let b = r.annotations.length, x = r.annotations[a] ?? r.primaryAnnotation, S = b > 1, E = r.primaryAnnotation.body?.source?.attachment?.type, D = d == null || E === e.HTML || E === e.XHTML, O = v?.sourceNameClassName ?? "dial-tiny-text", k = v?.titleClassName ?? "dial-body-semi-text", A = v?.quoteClassName ?? "dial-small-text", j = v?.quoteStrongClassName ?? "dial-small-semi-text", M = v?.switcherClassName ?? "dial-tiny-text", N = n({
|
|
14
14
|
"--cc-card-bg": y?.cardBackground,
|
|
15
15
|
"--cc-quote-text": y?.quoteText,
|
|
16
16
|
"--cc-title-text": y?.titleText,
|
|
17
17
|
"--cc-switcher-text": y?.switcherText,
|
|
18
18
|
"--cc-source-name-text": y?.sourceNameText
|
|
19
19
|
});
|
|
20
|
-
return /* @__PURE__ */
|
|
20
|
+
return /* @__PURE__ */ w("div", {
|
|
21
21
|
role: "dialog",
|
|
22
22
|
"aria-modal": "true",
|
|
23
23
|
"aria-label": _.ariaLabel,
|
|
24
24
|
style: N,
|
|
25
|
-
className: i("flex w-[400px] flex-col gap-3 rounded-lg p-4 shadow-lg",
|
|
25
|
+
className: i("flex w-[400px] flex-col gap-3 rounded-lg p-4 shadow-lg", T.card),
|
|
26
26
|
children: [
|
|
27
|
-
/* @__PURE__ */
|
|
27
|
+
/* @__PURE__ */ w("div", {
|
|
28
28
|
className: "flex items-center justify-between gap-2",
|
|
29
|
-
children: [/* @__PURE__ */
|
|
29
|
+
children: [/* @__PURE__ */ w("div", {
|
|
30
30
|
className: "flex min-w-0 items-center gap-1",
|
|
31
|
-
children: [g, /* @__PURE__ */
|
|
31
|
+
children: [g, /* @__PURE__ */ C(l, {
|
|
32
32
|
text: r.sourceName,
|
|
33
|
-
className: i(O, "min-w-0",
|
|
33
|
+
className: i(O, "min-w-0", T.sourceName)
|
|
34
34
|
})]
|
|
35
|
-
}),
|
|
35
|
+
}), S && /* @__PURE__ */ w("div", {
|
|
36
36
|
className: "flex shrink-0 items-center gap-1",
|
|
37
37
|
children: [
|
|
38
|
-
/* @__PURE__ */
|
|
39
|
-
icon: /* @__PURE__ */
|
|
38
|
+
/* @__PURE__ */ C(u, {
|
|
39
|
+
icon: /* @__PURE__ */ C(m, {
|
|
40
40
|
size: 14,
|
|
41
41
|
className: "rtl:scale-x-[-1]",
|
|
42
|
-
stroke:
|
|
42
|
+
stroke: s
|
|
43
43
|
}),
|
|
44
|
-
size:
|
|
44
|
+
size: c.Small,
|
|
45
45
|
"aria-label": _.previousCitation,
|
|
46
|
-
onClick: () =>
|
|
46
|
+
onClick: () => o((a - 1 + b) % b)
|
|
47
47
|
}),
|
|
48
|
-
/* @__PURE__ */
|
|
49
|
-
className: i(M,
|
|
50
|
-
children: _.formatSwitcherText(
|
|
48
|
+
/* @__PURE__ */ C("span", {
|
|
49
|
+
className: i(M, T.switcher),
|
|
50
|
+
children: _.formatSwitcherText(a + 1, b)
|
|
51
51
|
}),
|
|
52
|
-
/* @__PURE__ */
|
|
53
|
-
icon: /* @__PURE__ */
|
|
52
|
+
/* @__PURE__ */ C(u, {
|
|
53
|
+
icon: /* @__PURE__ */ C(h, {
|
|
54
54
|
size: 14,
|
|
55
55
|
className: "rtl:scale-x-[-1]",
|
|
56
|
-
stroke:
|
|
56
|
+
stroke: s
|
|
57
57
|
}),
|
|
58
|
-
size:
|
|
58
|
+
size: c.Small,
|
|
59
59
|
"aria-label": _.nextCitation,
|
|
60
|
-
onClick: () =>
|
|
60
|
+
onClick: () => o((a + 1) % b)
|
|
61
61
|
})
|
|
62
62
|
]
|
|
63
63
|
})]
|
|
64
64
|
}),
|
|
65
|
-
(
|
|
65
|
+
(x.body?.title || x.body?.quote || S) && /* @__PURE__ */ w("div", {
|
|
66
66
|
className: "flex flex-col gap-3",
|
|
67
|
-
children: [
|
|
68
|
-
className: i(k,
|
|
69
|
-
children:
|
|
70
|
-
}), (
|
|
71
|
-
className: i(A,
|
|
72
|
-
children:
|
|
73
|
-
content:
|
|
67
|
+
children: [x.body?.title && /* @__PURE__ */ C("p", {
|
|
68
|
+
className: i(k, T.title, "break-words"),
|
|
69
|
+
children: x.body.title
|
|
70
|
+
}), (x.body?.quote || S) && /* @__PURE__ */ C("div", {
|
|
71
|
+
className: i(A, T.quote, "line-clamp-6 break-words", S && "min-h-[3lh]"),
|
|
72
|
+
children: x.body?.quote && /* @__PURE__ */ C(t, {
|
|
73
|
+
content: x.body.quote,
|
|
74
74
|
classNames: {
|
|
75
|
-
p: i(A,
|
|
75
|
+
p: i(A, T.quote),
|
|
76
76
|
ul: i(A, "ps-3"),
|
|
77
77
|
ol: i(A, "ps-3"),
|
|
78
78
|
strong: j
|
|
@@ -80,60 +80,60 @@ var C = {
|
|
|
80
80
|
})
|
|
81
81
|
})]
|
|
82
82
|
}),
|
|
83
|
-
/* @__PURE__ */
|
|
83
|
+
/* @__PURE__ */ w("div", {
|
|
84
84
|
className: "flex justify-start gap-2",
|
|
85
|
-
children: [
|
|
85
|
+
children: [d && /* @__PURE__ */ C(f, {
|
|
86
86
|
label: _.preview,
|
|
87
|
-
size:
|
|
88
|
-
onClick: () =>
|
|
89
|
-
}), /* @__PURE__ */
|
|
87
|
+
size: c.Small,
|
|
88
|
+
onClick: () => d(x)
|
|
89
|
+
}), /* @__PURE__ */ C(f, {
|
|
90
90
|
label: D ? _.openInBrowser : _.download,
|
|
91
|
-
size:
|
|
92
|
-
onClick: () =>
|
|
91
|
+
size: c.Small,
|
|
92
|
+
onClick: () => p(x)
|
|
93
93
|
})]
|
|
94
94
|
})
|
|
95
95
|
]
|
|
96
96
|
});
|
|
97
97
|
};
|
|
98
|
-
|
|
98
|
+
_(E);
|
|
99
99
|
//#endregion
|
|
100
100
|
//#region src/components/CitationMarker/CitationMarker.tsx
|
|
101
|
-
var
|
|
102
|
-
let a = /* @__PURE__ */
|
|
101
|
+
var D = ({ annotationCount: e, onOpen: t, icon: n, labels: r, labelClassName: i = "dial-caption-text" }) => {
|
|
102
|
+
let a = /* @__PURE__ */ w("span", {
|
|
103
103
|
className: "flex items-center gap-1",
|
|
104
|
-
children: [n, /* @__PURE__ */
|
|
104
|
+
children: [n, /* @__PURE__ */ C("span", {
|
|
105
105
|
className: i,
|
|
106
106
|
children: e > 1 ? r.labelWithOverflow : r.label
|
|
107
107
|
})]
|
|
108
108
|
});
|
|
109
|
-
return /* @__PURE__ */
|
|
110
|
-
size:
|
|
109
|
+
return /* @__PURE__ */ C(d, {
|
|
110
|
+
size: c.Small,
|
|
111
111
|
label: a,
|
|
112
112
|
"aria-label": r.ariaLabel,
|
|
113
113
|
onClick: t
|
|
114
114
|
});
|
|
115
115
|
};
|
|
116
|
-
|
|
116
|
+
_(D);
|
|
117
117
|
//#endregion
|
|
118
118
|
//#region src/context/CitationCardContext.tsx
|
|
119
|
-
var
|
|
120
|
-
let e =
|
|
119
|
+
var O = g(null), k = O.Provider, A = () => {
|
|
120
|
+
let e = y(O);
|
|
121
121
|
if (e == null) throw Error("useCitationCardContext must be used within a CitationCardProvider");
|
|
122
122
|
return e;
|
|
123
|
-
},
|
|
124
|
-
let u =
|
|
123
|
+
}, j = { content: "_content_xzs0h_1" }, M = ({ group: e, onPreview: t, onOpenInBrowser: n, icon: r, headerIcon: a, cardLabels: o, markerLabels: s, cardTypography: c, markerLabelClassName: l }) => {
|
|
124
|
+
let u = A(), d = u.isOpen(e.groupKey), f = u.getActiveIndex(e.groupKey), m = v((e) => {
|
|
125
125
|
e || u.closePopup();
|
|
126
|
-
}, [u]), h =
|
|
126
|
+
}, [u]), h = b(() => t ? (e) => {
|
|
127
127
|
t(e), u.closePopup();
|
|
128
128
|
} : void 0, [t, u]);
|
|
129
|
-
return /* @__PURE__ */
|
|
130
|
-
open:
|
|
129
|
+
return /* @__PURE__ */ C(p, {
|
|
130
|
+
open: d,
|
|
131
131
|
onOpenChange: m,
|
|
132
132
|
triggerClassName: "ms-1 inline-flex align-middle",
|
|
133
|
-
contentClassName: i("!p-0 !bg-transparent !border-0 !shadow-none !max-w-none !rounded-none",
|
|
134
|
-
tooltip: /* @__PURE__ */
|
|
133
|
+
contentClassName: i("!p-0 !bg-transparent !border-0 !shadow-none !max-w-none !rounded-none", j.content),
|
|
134
|
+
tooltip: /* @__PURE__ */ C(E, {
|
|
135
135
|
group: e,
|
|
136
|
-
activeIndex:
|
|
136
|
+
activeIndex: f,
|
|
137
137
|
onIndexChange: (t) => u.setActiveIndex(e.groupKey, t),
|
|
138
138
|
onPreview: h,
|
|
139
139
|
onOpenInBrowser: n,
|
|
@@ -141,7 +141,7 @@ var E = m(null), D = E.Provider, O = () => {
|
|
|
141
141
|
labels: o,
|
|
142
142
|
typography: c
|
|
143
143
|
}),
|
|
144
|
-
children: /* @__PURE__ */
|
|
144
|
+
children: /* @__PURE__ */ C(D, {
|
|
145
145
|
sourceName: e.sourceName,
|
|
146
146
|
annotationCount: e.annotations.length,
|
|
147
147
|
onOpen: () => u.openPopup(e.groupKey),
|
|
@@ -151,176 +151,62 @@ var E = m(null), D = E.Provider, O = () => {
|
|
|
151
151
|
})
|
|
152
152
|
});
|
|
153
153
|
};
|
|
154
|
-
|
|
154
|
+
_(M);
|
|
155
155
|
//#endregion
|
|
156
156
|
//#region src/utils/annotation.ts
|
|
157
|
-
var
|
|
157
|
+
var N = {
|
|
158
158
|
backgroundColor: "transparent",
|
|
159
159
|
borderColor: "var(--stroke-accent, #1D4ED8)",
|
|
160
160
|
borderWidth: "2px",
|
|
161
161
|
opacity: .5,
|
|
162
162
|
hoverOpacity: .5
|
|
163
|
-
},
|
|
164
|
-
docx: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
165
|
-
xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
|
166
|
-
pptx: "application/vnd.openxmlformats-officedocument.presentationml.presentation"
|
|
167
|
-
}, N = (e) => {
|
|
168
|
-
let t = r(e);
|
|
169
|
-
if (t != null) return t;
|
|
170
|
-
let n = e.split(/[?#]/)[0], i = n.lastIndexOf(".");
|
|
171
|
-
if (i !== -1) return M[n.slice(i + 1).toLowerCase()];
|
|
172
|
-
}, P = (e) => typeof e == "object" && !!e && !Array.isArray(e) && "type" in e && typeof e.type == "string", ee = (e) => Array.isArray(e) ? e.filter(P) : P(e) ? e : void 0, te = (e) => e.flatMap((e, t) => {
|
|
163
|
+
}, ee = (e) => e.flatMap((e, t) => {
|
|
173
164
|
let n = e.body?.selector;
|
|
174
165
|
if (n == null) return [];
|
|
175
|
-
let
|
|
176
|
-
if (!
|
|
177
|
-
let { page: t, x1: n, y1:
|
|
166
|
+
let i = (Array.isArray(n) ? n : [n]).flatMap((e) => {
|
|
167
|
+
if (!r(e) || e.type !== "pdf_bbox") return [];
|
|
168
|
+
let { page: t, x1: n, y1: i, x2: a, y2: o } = e;
|
|
178
169
|
return !Number.isInteger(t) || t < 1 || ![
|
|
179
170
|
n,
|
|
180
|
-
r,
|
|
181
171
|
i,
|
|
182
|
-
a
|
|
172
|
+
a,
|
|
173
|
+
o
|
|
183
174
|
].every(Number.isFinite) ? [] : [{
|
|
184
175
|
page: t,
|
|
185
176
|
x1: n,
|
|
186
|
-
y1:
|
|
187
|
-
x2:
|
|
188
|
-
y2:
|
|
177
|
+
y1: i,
|
|
178
|
+
x2: a,
|
|
179
|
+
y2: o
|
|
189
180
|
}];
|
|
190
181
|
});
|
|
191
|
-
return
|
|
182
|
+
return i.length === 0 ? [] : [{
|
|
192
183
|
id: String(e.index ?? t),
|
|
193
|
-
bboxes:
|
|
194
|
-
style:
|
|
184
|
+
bboxes: i,
|
|
185
|
+
style: N
|
|
195
186
|
}];
|
|
196
|
-
}),
|
|
187
|
+
}), te = (e, t) => String(e.index ?? t), P = (e) => {
|
|
197
188
|
let t = e.body?.selector;
|
|
198
|
-
if (t != null) return (Array.isArray(t) ? t : [t]).find((e) =>
|
|
199
|
-
}, F = (e) =>
|
|
200
|
-
if (typeof e != "object" || !e) return null;
|
|
201
|
-
let t = e;
|
|
202
|
-
if (t.type !== "pdf_region") return null;
|
|
203
|
-
let n = t.bbox;
|
|
204
|
-
if (typeof n != "object" || !n) return null;
|
|
205
|
-
let r = n, i = F(r.left), a = F(r.top), o = F(r.width), s = F(r.height);
|
|
206
|
-
return i === null || a === null || o === null || s === null ? null : {
|
|
207
|
-
type: "pdf_bbox",
|
|
208
|
-
page: F(t.page) ?? 1,
|
|
209
|
-
x1: i,
|
|
210
|
-
y1: a,
|
|
211
|
-
x2: i + o,
|
|
212
|
-
y2: a + s
|
|
213
|
-
};
|
|
214
|
-
}, ae = (t, n) => {
|
|
215
|
-
let r = t.target;
|
|
216
|
-
if (typeof r != "object" || !r) return null;
|
|
217
|
-
let i = r, a = i.source;
|
|
218
|
-
if (typeof a != "object" || !a) return null;
|
|
219
|
-
let o = F(a.attachment_index);
|
|
220
|
-
if (o === null) return null;
|
|
221
|
-
let s = n.find((e) => e.index === o);
|
|
222
|
-
if (s?.url == null) return null;
|
|
223
|
-
let c = ie(i.selector);
|
|
224
|
-
if (c === null) return null;
|
|
225
|
-
let l = t.body, u = typeof l == "object" && l ? l : {}, d = typeof u.title == "string" ? u.title : void 0, f = typeof u.quote == "string" ? u.quote : void 0;
|
|
226
|
-
return {
|
|
227
|
-
index: F(t.index) ?? void 0,
|
|
228
|
-
body: {
|
|
229
|
-
title: d,
|
|
230
|
-
quote: f,
|
|
231
|
-
source: {
|
|
232
|
-
type: "attachment",
|
|
233
|
-
attachment: {
|
|
234
|
-
type: s.type ?? e.PDF,
|
|
235
|
-
url: s.url,
|
|
236
|
-
title: s.title
|
|
237
|
-
}
|
|
238
|
-
},
|
|
239
|
-
selector: c
|
|
240
|
-
}
|
|
241
|
-
};
|
|
242
|
-
}, oe = (t) => {
|
|
243
|
-
let n = t.target;
|
|
244
|
-
if (typeof n != "object" || !n) return null;
|
|
245
|
-
let r = n.selector;
|
|
246
|
-
if (typeof r != "object" || !r) return null;
|
|
247
|
-
let i = r;
|
|
248
|
-
if (i.type !== "html_tag" || typeof i.tag != "string" || typeof i.id != "string") return null;
|
|
249
|
-
let a = {
|
|
250
|
-
type: "html_tag",
|
|
251
|
-
tag: i.tag,
|
|
252
|
-
id: i.id
|
|
253
|
-
}, o = t.body;
|
|
254
|
-
if (typeof o != "object" || !o) return null;
|
|
255
|
-
let s = o, c = s.source;
|
|
256
|
-
if (typeof c != "object" || !c) return null;
|
|
257
|
-
let l = c;
|
|
258
|
-
if (l.type !== "attachment") return null;
|
|
259
|
-
let u = l.url;
|
|
260
|
-
if (typeof u != "string") return null;
|
|
261
|
-
let d = typeof s.title == "string" ? s.title : void 0, f = typeof s.quote == "string" ? s.quote : void 0, p = ee(s.selector);
|
|
262
|
-
return {
|
|
263
|
-
index: F(t.index) ?? void 0,
|
|
264
|
-
target: { selector: a },
|
|
265
|
-
body: {
|
|
266
|
-
title: d,
|
|
267
|
-
quote: f,
|
|
268
|
-
...p === void 0 ? {} : { selector: p },
|
|
269
|
-
source: {
|
|
270
|
-
type: "attachment",
|
|
271
|
-
attachment: {
|
|
272
|
-
type: N(u) ?? e.PDF,
|
|
273
|
-
url: u,
|
|
274
|
-
title: d
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
};
|
|
279
|
-
}, I = (e) => {
|
|
280
|
-
if (e.target?.selector?.type !== "html_tag") return e;
|
|
281
|
-
let t = e.body?.source?.attachment;
|
|
282
|
-
if (t?.url == null) return e;
|
|
283
|
-
let n = N(t.url);
|
|
284
|
-
return n == null || n === t.type ? e : {
|
|
285
|
-
...e,
|
|
286
|
-
body: {
|
|
287
|
-
...e.body,
|
|
288
|
-
source: {
|
|
289
|
-
...e.body?.source,
|
|
290
|
-
type: "attachment",
|
|
291
|
-
attachment: {
|
|
292
|
-
...t,
|
|
293
|
-
type: n
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
};
|
|
298
|
-
}, L = (e, t) => e.flatMap((e) => {
|
|
299
|
-
if (typeof e != "object" || !e) return [];
|
|
300
|
-
let n = e, r = oe(n);
|
|
301
|
-
if (r) return [r];
|
|
302
|
-
let i = ae(n, t);
|
|
303
|
-
return i ? [i] : [];
|
|
304
|
-
}), R = (e) => {
|
|
189
|
+
if (t != null) return (Array.isArray(t) ? t : [t]).find((e) => r(e) && e.type === "pdf_bbox" && typeof e.page == "number" && Number.isInteger(e.page) && e.page >= 1)?.page;
|
|
190
|
+
}, F = (e) => {
|
|
305
191
|
let t = e.custom_content?.annotations;
|
|
306
|
-
if (t?.length) return t.filter((e) => e != null && e.body?.source?.attachment?.url != null).map(
|
|
192
|
+
if (t?.length) return t.filter((e) => e != null && e.body?.source?.attachment?.url != null).map(a);
|
|
307
193
|
let n = e.custom_fields;
|
|
308
194
|
if (typeof n != "object" || !n) return [];
|
|
309
195
|
let r = n.annotations;
|
|
310
|
-
return !Array.isArray(r) || r.length === 0 ? [] :
|
|
311
|
-
},
|
|
196
|
+
return !Array.isArray(r) || r.length === 0 ? [] : o(r, e.custom_content?.attachments ?? []).map(a);
|
|
197
|
+
}, I = (e) => {
|
|
312
198
|
if (e.type !== "docx_text_range") return !1;
|
|
313
199
|
let t = e;
|
|
314
200
|
return typeof t.story == "string" && Array.isArray(t.path) && t.path.every((e) => typeof e == "number") && typeof t.start == "number" && typeof t.end == "number" && typeof t.text == "string";
|
|
315
|
-
},
|
|
201
|
+
}, L = (e) => {
|
|
316
202
|
if (e.type !== "pptx_text_range") return !1;
|
|
317
203
|
let t = e;
|
|
318
204
|
return typeof t.slide == "number" && typeof t.shape_id == "string" && typeof t.start == "number" && typeof t.end == "number" && typeof t.text == "string";
|
|
319
|
-
},
|
|
205
|
+
}, R = (e) => typeof e == "object" && !!e && typeof e.row == "number" && typeof e.col == "number", z = (e) => {
|
|
320
206
|
if (e.type !== "excel_rc_range") return !1;
|
|
321
207
|
let t = e;
|
|
322
|
-
return typeof t.sheet == "string" &&
|
|
323
|
-
},
|
|
208
|
+
return typeof t.sheet == "string" && R(t.start) && (t.end === void 0 || t.end === null || R(t.end));
|
|
209
|
+
}, ne = (e) => {
|
|
324
210
|
let { story: t, path: n, start: r, end: i, text: a } = e;
|
|
325
211
|
if (!(!n.every((e) => Number.isInteger(e)) || !Number.isInteger(r) || !Number.isInteger(i) || r < 0 || i < r)) return {
|
|
326
212
|
type: "docx_text_range",
|
|
@@ -330,7 +216,7 @@ var j = {
|
|
|
330
216
|
endExclusive: i,
|
|
331
217
|
text: a
|
|
332
218
|
};
|
|
333
|
-
},
|
|
219
|
+
}, re = (e) => {
|
|
334
220
|
let { slide: t, shape_id: n, start: r, end: i, text: a } = e;
|
|
335
221
|
if (!(!Number.isInteger(t) || t < 1 || !Number.isInteger(r) || !Number.isInteger(i) || r < 0 || i < r)) return {
|
|
336
222
|
type: "pptx_text_range",
|
|
@@ -340,7 +226,7 @@ var j = {
|
|
|
340
226
|
endExclusive: i,
|
|
341
227
|
text: a
|
|
342
228
|
};
|
|
343
|
-
},
|
|
229
|
+
}, ie = (e) => {
|
|
344
230
|
let { sheet: t, start: n, end: r } = e;
|
|
345
231
|
if (!(t.length === 0 || !Number.isInteger(n.row) || !Number.isInteger(n.col) || n.row < 1 || n.col < 1)) {
|
|
346
232
|
if (r == null) return {
|
|
@@ -355,39 +241,39 @@ var j = {
|
|
|
355
241
|
end: r
|
|
356
242
|
};
|
|
357
243
|
}
|
|
358
|
-
},
|
|
244
|
+
}, ae = (e) => {
|
|
359
245
|
let t = e.body?.selector;
|
|
360
246
|
return t == null ? [] : (Array.isArray(t) ? t : [t]).flatMap((e) => {
|
|
361
|
-
if (!
|
|
362
|
-
if (
|
|
363
|
-
let t =
|
|
247
|
+
if (!r(e)) return [];
|
|
248
|
+
if (I(e)) {
|
|
249
|
+
let t = ne(e);
|
|
364
250
|
return t ? [t] : [];
|
|
365
251
|
}
|
|
366
|
-
if (
|
|
367
|
-
let t =
|
|
252
|
+
if (L(e)) {
|
|
253
|
+
let t = re(e);
|
|
368
254
|
return t ? [t] : [];
|
|
369
255
|
}
|
|
370
|
-
if (
|
|
371
|
-
let t =
|
|
256
|
+
if (z(e)) {
|
|
257
|
+
let t = ie(e);
|
|
372
258
|
return t ? [t] : [];
|
|
373
259
|
}
|
|
374
260
|
return [];
|
|
375
261
|
});
|
|
376
|
-
},
|
|
262
|
+
}, oe = (e, t) => b(() => t ? [] : F(e), [t, e]), se = {
|
|
377
263
|
openGroupKey: null,
|
|
378
264
|
activeIndexByGroup: {}
|
|
379
|
-
},
|
|
380
|
-
let [e, t] =
|
|
265
|
+
}, ce = () => {
|
|
266
|
+
let [e, t] = x(se), n = v((e) => {
|
|
381
267
|
t((t) => ({
|
|
382
268
|
...t,
|
|
383
269
|
openGroupKey: e
|
|
384
270
|
}));
|
|
385
|
-
}, []), r =
|
|
271
|
+
}, []), r = v(() => {
|
|
386
272
|
t((e) => ({
|
|
387
273
|
...e,
|
|
388
274
|
openGroupKey: null
|
|
389
275
|
}));
|
|
390
|
-
}, []), i =
|
|
276
|
+
}, []), i = v((e, n) => {
|
|
391
277
|
t((t) => ({
|
|
392
278
|
...t,
|
|
393
279
|
activeIndexByGroup: {
|
|
@@ -396,7 +282,7 @@ var j = {
|
|
|
396
282
|
}
|
|
397
283
|
}));
|
|
398
284
|
}, []);
|
|
399
|
-
return
|
|
285
|
+
return b(() => ({
|
|
400
286
|
openPopup: n,
|
|
401
287
|
closePopup: r,
|
|
402
288
|
setActiveIndex: i,
|
|
@@ -408,7 +294,7 @@ var j = {
|
|
|
408
294
|
i,
|
|
409
295
|
e
|
|
410
296
|
]);
|
|
411
|
-
},
|
|
297
|
+
}, le = /⟦C(\d+)⟧/g, B = (e, t) => {
|
|
412
298
|
let n = t.map((e, t) => ({
|
|
413
299
|
g: e,
|
|
414
300
|
idx: t
|
|
@@ -421,9 +307,9 @@ var j = {
|
|
|
421
307
|
}).sort((e, t) => t.pos - e.pos), r = e;
|
|
422
308
|
for (let { idx: e, pos: t } of n) r = `${r.slice(0, t)}⟦C${e}⟧${r.slice(t)}`;
|
|
423
309
|
return r;
|
|
424
|
-
},
|
|
310
|
+
}, V = /<cit\s+data-id=(?:"[^"]+"|'[^']+')\s*>\s*<\/cit>/g, H = /^<cit\s+data-id=(?:"[^"]+"|'[^']+')\s*>\s*<\/cit>$/, U = /<cit\s+data-id=(?:"[^"]+"|'[^']+')\s*>\s*<\/cit>|<\/?cit\b[^>]*>|<\/?cit\b[^>]*$/gi, ue = (e) => e.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">"), W = (e) => e.replace(U, (e) => H.test(e) ? e : ue(e)), G = (e) => W(e).replace(V, ""), K = (e, t) => {
|
|
425
311
|
if (typeof e == "string") {
|
|
426
|
-
let n = e.split(
|
|
312
|
+
let n = e.split(le);
|
|
427
313
|
if (n.length === 1) return e;
|
|
428
314
|
let r = [];
|
|
429
315
|
return n.forEach((e, n) => {
|
|
@@ -434,30 +320,30 @@ var j = {
|
|
|
434
320
|
let n = K(e, t);
|
|
435
321
|
return Array.isArray(n) ? n : [n];
|
|
436
322
|
}) : e;
|
|
437
|
-
},
|
|
323
|
+
}, de = (e) => {
|
|
438
324
|
let t = e.primaryAnnotation.target?.selector;
|
|
439
325
|
return t?.type === "html_tag" ? t.id : void 0;
|
|
440
|
-
},
|
|
326
|
+
}, fe = (e, t) => /* @__PURE__ */ w(S, { children: [
|
|
441
327
|
e == null ? "<cit>" : `<cit data-id="${e}">`,
|
|
442
328
|
t,
|
|
443
329
|
"</cit>"
|
|
444
|
-
] }),
|
|
445
|
-
let { onPreview: o, onOpenInBrowser: s, buildLabels: c } = n, l =
|
|
330
|
+
] }), pe = (e, t, n, r = !1, a = !1) => {
|
|
331
|
+
let { onPreview: o, onOpenInBrowser: s, buildLabels: c } = n, l = b(() => r ? G(e) : W(t.length > 0 ? B(e, t) : e), [
|
|
446
332
|
e,
|
|
447
333
|
t,
|
|
448
334
|
r
|
|
449
335
|
]), u = l.includes("<cit");
|
|
450
336
|
return {
|
|
451
337
|
processedContent: l,
|
|
452
|
-
markdownComponents:
|
|
338
|
+
markdownComponents: b(() => {
|
|
453
339
|
let e = /* @__PURE__ */ new Map();
|
|
454
340
|
for (let n of t) {
|
|
455
|
-
let t =
|
|
341
|
+
let t = de(n);
|
|
456
342
|
t != null && e.set(t, n);
|
|
457
343
|
}
|
|
458
344
|
let n = (e) => {
|
|
459
345
|
let { cardLabels: t, markerLabels: n } = c(e);
|
|
460
|
-
return /* @__PURE__ */
|
|
346
|
+
return /* @__PURE__ */ C(M, {
|
|
461
347
|
group: e,
|
|
462
348
|
onPreview: (t) => o(t, e),
|
|
463
349
|
onOpenInBrowser: s,
|
|
@@ -469,16 +355,16 @@ var j = {
|
|
|
469
355
|
return r ? n(r) : null;
|
|
470
356
|
}, l = { cit: (t) => {
|
|
471
357
|
let r = t["data-id"] == null ? void 0 : e.get(t["data-id"]);
|
|
472
|
-
return r ? n(r) :
|
|
358
|
+
return r ? n(r) : fe(t["data-id"], t.children);
|
|
473
359
|
} };
|
|
474
360
|
return t.length === 0 ? u ? l : {} : {
|
|
475
361
|
...l,
|
|
476
|
-
p: ({ children: e, ...t }) => /* @__PURE__ */
|
|
362
|
+
p: ({ children: e, ...t }) => /* @__PURE__ */ C("p", {
|
|
477
363
|
...t,
|
|
478
364
|
className: i(a ? "dial-small-paragraph-text" : "dial-body-paragraph-text", "mb-3 [overflow-wrap:anywhere] [text-wrap:pretty] last:mb-0"),
|
|
479
365
|
children: K(e, r)
|
|
480
366
|
}),
|
|
481
|
-
li: ({ children: e, ...t }) => /* @__PURE__ */
|
|
367
|
+
li: ({ children: e, ...t }) => /* @__PURE__ */ C("li", {
|
|
482
368
|
...t,
|
|
483
369
|
className: "mb-1.5 last:mb-0",
|
|
484
370
|
children: K(e, r)
|
|
@@ -499,20 +385,20 @@ var j = {
|
|
|
499
385
|
} catch {
|
|
500
386
|
return e;
|
|
501
387
|
}
|
|
502
|
-
},
|
|
388
|
+
}, me = (e) => {
|
|
503
389
|
try {
|
|
504
390
|
let t = new URL(e);
|
|
505
391
|
return t.pathname.split("/").map((e) => q(e)).filter(Boolean).at(-1) ?? t.hostname;
|
|
506
392
|
} catch {
|
|
507
393
|
return e.split("/").map((e) => q(e)).filter(Boolean).at(-1) ?? e;
|
|
508
394
|
}
|
|
509
|
-
}, J = (e, t) => e.body?.source?.attachment?.title ??
|
|
395
|
+
}, J = (e, t) => e.body?.source?.attachment?.title ?? me(t), Y = (e) => {
|
|
510
396
|
let t = e.target?.selector;
|
|
511
397
|
return t?.type === "html_tag" ? t : void 0;
|
|
512
|
-
},
|
|
398
|
+
}, he = (e) => Y(e) != null, X = (e) => {
|
|
513
399
|
let t = /* @__PURE__ */ new Map();
|
|
514
400
|
for (let n of e) {
|
|
515
|
-
if (
|
|
401
|
+
if (he(n)) continue;
|
|
516
402
|
let e = n.body?.source?.attachment?.url;
|
|
517
403
|
if (e == null) continue;
|
|
518
404
|
let r = t.get(e);
|
|
@@ -542,16 +428,16 @@ var j = {
|
|
|
542
428
|
});
|
|
543
429
|
}
|
|
544
430
|
return Array.from(t.values());
|
|
545
|
-
},
|
|
431
|
+
}, ge = (e) => [...Z(e), ...X(e)], _e = (e, t) => {
|
|
546
432
|
let n = e.body?.source?.attachment?.url;
|
|
547
433
|
return n == null || !t.includes(e) ? [e] : t.filter((e) => e.body?.source?.attachment?.url === n);
|
|
548
|
-
}, Q = (e) => e.url == null && e.reference_url != null,
|
|
549
|
-
let t =
|
|
434
|
+
}, Q = (e) => e.url == null && e.reference_url != null, ve = /^(.*\.pdf)(?:#page=(\d+))?$/i, $ = (e) => {
|
|
435
|
+
let t = ve.exec(e);
|
|
550
436
|
return t ? {
|
|
551
437
|
baseUrl: t[1],
|
|
552
438
|
page: t[2] == null ? null : Number(t[2])
|
|
553
439
|
} : null;
|
|
554
|
-
},
|
|
440
|
+
}, ye = (t) => X((t ?? []).filter(Q).map((t) => {
|
|
555
441
|
let n = t.reference_url, r = $(n) != null;
|
|
556
442
|
return { body: {
|
|
557
443
|
quote: t.data,
|
|
@@ -566,4 +452,4 @@ var j = {
|
|
|
566
452
|
} };
|
|
567
453
|
}));
|
|
568
454
|
//#endregion
|
|
569
|
-
export {
|
|
455
|
+
export { E as CitationCard, k as CitationCardProvider, M as CitationDropdown, D as CitationMarker, te as annotationHighlightId, ae as annotationToOfficeHighlightLocations, ee as annotationsToPdfHighlights, _e as gatherSameSourceAnnotations, P as getAnnotationPdfPage, ye as getReferenceAttachmentGroups, ge as groupAnnotations, Z as groupAnnotationsByCitId, X as groupAnnotationsBySource, B as injectCitationSentinels, I as isDocxRangeSelector, z as isExcelRcRangeSelector, L as isPptxRangeSelector, Q as isReferenceOnlyAttachment, $ as parsePdfPageReference, K as replaceSentinelsInChildren, F as resolveMessageAnnotations, G as stripCitTagsWhileStreaming, oe as useAnnotations, ce as useCitationCard, A as useCitationCardContext, pe as useCitationMarkdownComponents };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@epam/ai-dial-quotations",
|
|
3
3
|
"description": "Citation and annotation components, hooks, and utilities for AI DIAL conversations",
|
|
4
|
-
"version": "1.1.0-dev.
|
|
4
|
+
"version": "1.1.0-dev.471",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "./index.js",
|
|
@@ -9,19 +9,22 @@
|
|
|
9
9
|
"types": "./index.d.ts",
|
|
10
10
|
"exports": {
|
|
11
11
|
"./package.json": "./package.json",
|
|
12
|
+
"./styles.css": "./index.css",
|
|
12
13
|
".": {
|
|
13
14
|
"types": "./index.d.ts",
|
|
14
15
|
"import": "./index.js",
|
|
15
16
|
"default": "./index.js"
|
|
16
17
|
}
|
|
17
18
|
},
|
|
19
|
+
"dependencies": {
|
|
20
|
+
"@tabler/icons-react": "^3.44.0",
|
|
21
|
+
"react-markdown": "^10.1.0",
|
|
22
|
+
"@epam/pdf-highlighter-kit": "^0.0.18"
|
|
23
|
+
},
|
|
18
24
|
"peerDependencies": {
|
|
19
25
|
"react": "^19.0.0",
|
|
20
|
-
"
|
|
21
|
-
"@
|
|
22
|
-
"@epam/ai-dial-chat-shared": "1.1.0-dev.467",
|
|
23
|
-
"@epam/ai-dial-ui-kit": "*",
|
|
24
|
-
"@epam/pdf-highlighter-kit": ">=0.0.14"
|
|
26
|
+
"@epam/ai-dial-chat-shared": "1.1.0-dev.471",
|
|
27
|
+
"@epam/ai-dial-ui-kit": "^0.14.0-dev.15"
|
|
25
28
|
},
|
|
26
29
|
"repository": {
|
|
27
30
|
"type": "git",
|
package/utils/annotation.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Annotation, AnnotationSelector, DocxRangeSelector, ExcelRcRangeSelector, Message,
|
|
1
|
+
import { Annotation, AnnotationSelector, DocxRangeSelector, ExcelRcRangeSelector, Message, PptxRangeSelector } from '@epam/ai-dial-chat-shared';
|
|
2
2
|
import { InputHighlightData } from '@epam/pdf-highlighter-kit';
|
|
3
3
|
import { OfficeHighlightLocation } from '../models/office-highlight';
|
|
4
4
|
/**
|
|
@@ -15,23 +15,6 @@ export declare const annotationHighlightId: (annotation: Annotation, fallbackInd
|
|
|
15
15
|
* or `undefined` when none exists. Independent of bounding-box coordinates.
|
|
16
16
|
*/
|
|
17
17
|
export declare const getAnnotationPdfPage: (annotation: Annotation) => number | undefined;
|
|
18
|
-
/**
|
|
19
|
-
* Normalizes raw annotations from the API wire format (stored in
|
|
20
|
-
* `message.custom_fields.annotations`) to the internal `Annotation` model.
|
|
21
|
-
*
|
|
22
|
-
* Recognizes two wire shapes:
|
|
23
|
-
* - `target.source.attachment_index` (integer) + a `pdf_region` selector
|
|
24
|
-
* with `{ left, top, width, height }` coordinates, resolved against
|
|
25
|
-
* `attachments` and converted to `body.source.attachment.url` + a
|
|
26
|
-
* `pdf_bbox` selector with `{ x1, y1, x2, y2 }` coordinates.
|
|
27
|
-
* - `target.selector` of type `html_tag` (`{ tag, id }`) with a flat
|
|
28
|
-
* `body.source = { type: 'attachment', url }` — normalized to
|
|
29
|
-
* `body.source.attachment.url`/`.title` directly, with no attachment-list
|
|
30
|
-
* lookup, preserving optional indexes and document selectors.
|
|
31
|
-
*
|
|
32
|
-
* Annotations matching neither shape are omitted from the result.
|
|
33
|
-
*/
|
|
34
|
-
export declare const normalizeRawAnnotations: (rawAnnotations: unknown[], attachments: MessageAttachment[]) => Annotation[];
|
|
35
18
|
/**
|
|
36
19
|
* Resolves the annotation list for a message regardless of how it was loaded.
|
|
37
20
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"annotation.d.ts","sourceRoot":"","sources":["../../src/utils/annotation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,
|
|
1
|
+
{"version":3,"file":"annotation.d.ts","sourceRoot":"","sources":["../../src/utils/annotation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,OAAO,EAEP,iBAAiB,EAClB,MAAM,2BAA2B,CAAC;AAMnC,OAAO,KAAK,EAEV,kBAAkB,EACnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAU1E;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,GACrC,aAAa,UAAU,EAAE,KACxB,kBAAkB,EA0BjB,CAAC;AAEL,oHAAoH;AACpH,eAAO,MAAM,qBAAqB,GAChC,YAAY,UAAU,EACtB,eAAe,MAAM,KACpB,MAAmD,CAAC;AAEvD;;;GAGG;AACH,eAAO,MAAM,oBAAoB,GAC/B,YAAY,UAAU,KACrB,MAAM,GAAG,SAcX,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,GAAI,SAAS,OAAO,KAAG,UAAU,EAoBtE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAC9B,UAAU,kBAAkB,KAC3B,QAAQ,IAAI,iBAWd,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAC9B,UAAU,kBAAkB,KAC3B,QAAQ,IAAI,iBAUd,CAAC;AAUF;;;GAGG;AACH,eAAO,MAAM,sBAAsB,GACjC,UAAU,kBAAkB,KAC3B,QAAQ,IAAI,oBAQd,CAAC;AA8FF;;;;GAIG;AACH,eAAO,MAAM,oCAAoC,GAC/C,YAAY,UAAU,KACrB,uBAAuB,EAsBzB,CAAC"}
|