@epam/ai-dial-conversation-messages 1.2.0-dev.20 → 1.2.0-dev.207

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 +1 @@
1
- {"version":3,"file":"AssistantMessageBubble.d.ts","sourceRoot":"","sources":["../../../src/components/MessageBubble/AssistantMessageBubble.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAE,EAAE,EAAW,MAAM,OAAO,CAAC;AAEpC,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAY/E,gHAAgH;AAChH,eAAO,MAAM,sBAAsB,EAAE,EAAE,CAAC,2BAA2B,CAqNlE,CAAC"}
1
+ {"version":3,"file":"AssistantMessageBubble.d.ts","sourceRoot":"","sources":["../../../src/components/MessageBubble/AssistantMessageBubble.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAE,EAAE,EAAW,MAAM,OAAO,CAAC;AAGpC,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAY/E,gHAAgH;AAChH,eAAO,MAAM,sBAAsB,EAAE,EAAE,CAAC,2BAA2B,CAsNlE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"MessageBubble.d.ts","sourceRoot":"","sources":["../../../src/components/MessageBubble/MessageBubble.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAC3B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAKtE,wGAAwG;AACxG,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC,kBAAkB,CAsChD,CAAC"}
1
+ {"version":3,"file":"MessageBubble.d.ts","sourceRoot":"","sources":["../../../src/components/MessageBubble/MessageBubble.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAC3B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAKtE,wGAAwG;AACxG,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC,kBAAkB,CAyChD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"UserMessageBubble.d.ts","sourceRoot":"","sources":["../../../src/components/MessageBubble/UserMessageBubble.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAE,EAAE,EAAS,MAAM,OAAO,CAAC;AAClC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAO1E,kGAAkG;AAClG,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,sBAAsB,CAkKxD,CAAC"}
1
+ {"version":3,"file":"UserMessageBubble.d.ts","sourceRoot":"","sources":["../../../src/components/MessageBubble/UserMessageBubble.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAE,EAAE,EAAS,MAAM,OAAO,CAAC;AAElC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAO1E,kGAAkG;AAClG,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,sBAAsB,CA+JxD,CAAC"}
@@ -0,0 +1,55 @@
1
+ import { FC, RefObject } from 'react';
2
+ /** Color overrides for the Reply action. */
3
+ export interface MessageSelectionReplyColors {
4
+ /** Button background. Falls back to `--bg-layer-raised`. */
5
+ background?: string;
6
+ /** Hover background. Falls back to `--bg-layer-base`. */
7
+ hoverBackground?: string;
8
+ /** Label and icon color. Falls back to `--text-primary`. */
9
+ text?: string;
10
+ }
11
+ /** Typography overrides for the Reply action. */
12
+ export interface MessageSelectionReplyTypography {
13
+ /** Button label class. Defaults to `'dial-small-text'`. */
14
+ fontClassName?: string;
15
+ }
16
+ /** Appearance overrides for the Reply action. */
17
+ export interface MessageSelectionReplyStyles {
18
+ /** Button colors, applied as CSS custom properties. */
19
+ colors?: MessageSelectionReplyColors;
20
+ /** Button label typography. */
21
+ typography?: MessageSelectionReplyTypography;
22
+ /** Extra classes on the floating root, for example a host stacking level. */
23
+ className?: string;
24
+ /** Extra classes on the button. */
25
+ buttonClassName?: string;
26
+ }
27
+ /** Localized strings rendered by {@link MessageSelectionReply}. */
28
+ export interface MessageSelectionReplyLabels {
29
+ /** Visible and accessible Reply action label. */
30
+ reply: string;
31
+ /** Polite announcement when a selection becomes actionable. */
32
+ selectionAvailable: string;
33
+ /** Polite announcement after the composer accepts a Reply attachment. */
34
+ attachmentAdded: string;
35
+ }
36
+ /** Props accepted by {@link MessageSelectionReply}. */
37
+ export interface MessageSelectionReplyProps {
38
+ /** Visible selection rectangle. Omit to unmount the action. */
39
+ rect: DOMRect | undefined;
40
+ /** Receives the floating action root. */
41
+ actionRef: RefObject<HTMLDivElement | null>;
42
+ /** Creates an attachment from the captured selection. */
43
+ onReply: () => void;
44
+ /** Increments after the composer accepts a Reply attachment. */
45
+ addedRevision: number;
46
+ /** Localized button and announcement strings. */
47
+ labels: MessageSelectionReplyLabels;
48
+ /** Appearance overrides for the floating action. */
49
+ styles?: MessageSelectionReplyStyles;
50
+ /** Same-document portal destination. Defaults to `document.body`; null defers rendering. */
51
+ portalContainer?: HTMLElement | null;
52
+ }
53
+ /** Offers Reply beside a native selection while leaving browser selection controls intact. */
54
+ export declare const MessageSelectionReply: FC<MessageSelectionReplyProps>;
55
+ //# sourceMappingURL=MessageSelectionReply.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageSelectionReply.d.ts","sourceRoot":"","sources":["../../../src/components/MessageSelectionReply/MessageSelectionReply.tsx"],"names":[],"mappings":"AAQA,OAAO,EAA6B,KAAK,EAAE,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAI3E,4CAA4C;AAC5C,MAAM,WAAW,2BAA2B;IAC1C,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,iDAAiD;AACjD,MAAM,WAAW,+BAA+B;IAC9C,2DAA2D;IAC3D,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,iDAAiD;AACjD,MAAM,WAAW,2BAA2B;IAC1C,uDAAuD;IACvD,MAAM,CAAC,EAAE,2BAA2B,CAAC;IACrC,+BAA+B;IAC/B,UAAU,CAAC,EAAE,+BAA+B,CAAC;IAC7C,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,mEAAmE;AACnE,MAAM,WAAW,2BAA2B;IAC1C,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,+DAA+D;IAC/D,kBAAkB,EAAE,MAAM,CAAC;IAC3B,yEAAyE;IACzE,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,uDAAuD;AACvD,MAAM,WAAW,0BAA0B;IACzC,+DAA+D;IAC/D,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1B,yCAAyC;IACzC,SAAS,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC5C,yDAAyD;IACzD,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,gEAAgE;IAChE,aAAa,EAAE,MAAM,CAAC;IACtB,iDAAiD;IACjD,MAAM,EAAE,2BAA2B,CAAC;IACpC,oDAAoD;IACpD,MAAM,CAAC,EAAE,2BAA2B,CAAC;IACrC,4FAA4F;IAC5F,eAAe,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CACtC;AAED,8FAA8F;AAC9F,eAAO,MAAM,qBAAqB,EAAE,EAAE,CAAC,0BAA0B,CAmGhE,CAAC"}
@@ -0,0 +1,7 @@
1
+ export declare const CONVERSATION_MESSAGES_CLASS: {
2
+ /** The user message's bubble element. */
3
+ readonly userBubble: "dial-cm-user-bubble";
4
+ /** The assistant message's streamed content region. */
5
+ readonly assistantContent: "dial-cm-assistant-content";
6
+ };
7
+ //# sourceMappingURL=public-class-names.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-class-names.d.ts","sourceRoot":"","sources":["../../src/constants/public-class-names.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,2BAA2B;IACtC,yCAAyC;;IAEzC,uDAAuD;;CAE/C,CAAC"}
package/index.css CHANGED
@@ -1,2 +1,2 @@
1
- ._activeRating_ygoee_1{color:var(--ma-active-rating-text,var(--text-accent,#1d4ed8))}._userBubble_cq829_1{border-color:var(--cm-bubble-user-border,var(--stroke-secondary,#d1dbea));background:var(--cm-bubble-user-bg,var(--bg-layer-sunken,#eef1f7))}._collapsibleText_cq829_6{max-height:var(--cm-bubble-collapsed-height);transition:max-height .2s ease-out}._expandedText_cq829_11{max-height:var(--cm-bubble-expanded-height)}._collapsedText_cq829_15:after{content:"";pointer-events:none;background:linear-gradient(to bottom, var(--cm-bubble-fade-start,var(--shadow-xs-2,#161b2d08)), var(--cm-bubble-user-bg,var(--bg-layer-sunken,#eef1f7)));height:3rem;position:absolute;bottom:0;left:0;right:0}@media (prefers-reduced-motion:reduce){._collapsibleText_cq829_6{transition:none}}._startersDivider_cq829_26{border-color:var(--cm-starters-divider,var(--stroke-secondary,#d1dbea))}._text_cq829_30{color:var(--cm-bubble-text,var(--text-primary,#161b2d))}
2
- /*$vite$:1*/
1
+ ._activeRating_ygoee_1{color:var(--ma-active-rating-text,var(--text-accent,#1d4ed8))}._userBubble_cq829_1{border-color:var(--cm-bubble-user-border,var(--stroke-secondary,#d1dbea));background:var(--cm-bubble-user-bg,var(--bg-layer-sunken,#eef1f7))}._collapsibleText_cq829_6{max-height:var(--cm-bubble-collapsed-height);transition:max-height .2s ease-out}._expandedText_cq829_11{max-height:var(--cm-bubble-expanded-height)}._collapsedText_cq829_15:after{content:"";pointer-events:none;background:linear-gradient(to bottom, var(--cm-bubble-fade-start,var(--shadow-xs-2,#161b2d08)), var(--cm-bubble-user-bg,var(--bg-layer-sunken,#eef1f7)));height:3rem;position:absolute;bottom:0;left:0;right:0}@media (prefers-reduced-motion:reduce){._collapsibleText_cq829_6{transition:none}}._startersDivider_cq829_26{border-color:var(--cm-starters-divider,var(--stroke-secondary,#d1dbea))}._text_cq829_30{color:var(--cm-bubble-text,var(--text-primary,#161b2d))}._button_tqo4d_3._button_tqo4d_3{color:var(--cm-reply-text,var(--text-primary,#161b2d));background:var(--cm-reply-background,var(--bg-layer-raised,#fcfcfc))!important}._button_tqo4d_3._button_tqo4d_3:hover{color:var(--cm-reply-text,var(--text-primary,#161b2d));background:var(--cm-reply-hover-background,var(--bg-layer-base,#f5f7fa))!important}
2
+ /*$vite$:1*/.sr-only{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border-width:0;white-space:nowrap}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.left-0{left:0}.start-0{inset-inline-start:0}.top-0{top:0}.z-50{z-index:50}.-me-1{margin-inline-end:-.25rem}.-ms-1{margin-inline-start:-.25rem}.ms-auto{margin-inline-start:auto}.mt-3{margin-top:.75rem}.block{display:block}.inline{display:inline}.flex{display:flex}.table{display:table}.h-8{height:2rem}.min-h-8{min-height:2rem}.w-\[calc\(100\%\+8px\)\]{width:calc(100% + 8px)}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.min-w-0{min-width:0}.min-w-11{min-width:2.75rem}.min-w-\[40px\]{min-width:40px}.max-w-\[640px\]{max-width:640px}.max-w-\[calc\(100vw-16px\)\]{max-width:calc(100vw - 16px)}.max-w-full{max-width:100%}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.resize{resize:both}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-end{justify-content:flex-end}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.overflow-hidden{overflow:hidden}.whitespace-pre-wrap{white-space:pre-wrap}.rounded-ee-2xl{border-end-end-radius:1rem}.rounded-ee-md{border-end-end-radius:.375rem}.rounded-es-2xl{border-end-start-radius:1rem}.rounded-se-2xl{border-start-end-radius:1rem}.rounded-se-md{border-start-end-radius:.375rem}.rounded-ss-2xl{border-start-start-radius:1rem}.border{border-width:1px}.border-t{border-top-width:1px}.px-2{padding-left:.5rem;padding-right:.5rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-4{padding-bottom:1rem;padding-top:1rem}.pe-1{padding-inline-end:.25rem}.ps-1{padding-inline-start:.25rem}.pt-5{padding-top:1.25rem}.text-start{text-align:start}.opacity-0{opacity:0}.shadow-lg{--tw-shadow:0 8px 44px 0 var(--shadow-lg,#2764d914);--tw-shadow-colored:0 8px 44px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.\[overflow-wrap\:anywhere\]{overflow-wrap:anywhere}.group:hover .group-hover\:opacity-100{opacity:1}@media (max-width:1279px){.mobile\:h-11{height:2.75rem}.mobile\:min-h-11{min-height:2.75rem}}.rtl\:scale-x-\[-1\]:where([dir=rtl],[dir=rtl] *){--tw-scale-x:-1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>\.cm-bubble-markdown\>div\>\*\:first-child\]\:indent-\[var\(--cm-bubble-first-line-indent\2c 0px\)\]>.cm-bubble-markdown>div>:first-child{text-indent:var(--cm-bubble-first-line-indent,0)}
package/index.d.ts CHANGED
@@ -1,10 +1,13 @@
1
+ export { CONVERSATION_MESSAGES_CLASS } from './constants/public-class-names';
1
2
  export { MessageBubble } from './components/MessageBubble/MessageBubble';
2
3
  export { UserMessageBubble } from './components/MessageBubble/UserMessageBubble';
3
4
  export { AssistantMessageBubble } from './components/MessageBubble/AssistantMessageBubble';
4
5
  export { StatusMessageBubble } from './components/MessageBubble/StatusMessageBubble';
5
6
  export { MessageActions } from './components/MessageActions/MessageActions';
7
+ export { MessageSelectionReply } from './components/MessageSelectionReply/MessageSelectionReply';
6
8
  export { BubblePosition } from './types/bubble-position';
7
9
  export type { MessageBubbleProps, UserMessageBubbleProps, AssistantMessageBubbleProps, MessageBubbleStyles, MessageBubbleColors, MessageBubbleTypography, MessageBubbleLabels, AssistantMessageBubbleLabels, } from './models/message-bubble';
10
+ export type { MessageSelectionReplyColors, MessageSelectionReplyLabels, MessageSelectionReplyProps, MessageSelectionReplyStyles, MessageSelectionReplyTypography, } from './components/MessageSelectionReply/MessageSelectionReply';
8
11
  export type { StatusMessageBubbleLabels, StatusMessageBubbleProps, } from './components/MessageBubble/StatusMessageBubble';
9
12
  export type { MessageActionsProps, MessageActionColors, MessageActionLabels, MessageActionTooltips, MessageActionAriaLabels, } from './models/message-actions';
10
13
  export type { MessageSourceProps, MessageSourceLabels, MessageSourceStyles, MessageSourceColors, MessageSourceTypography, } from './models/message-source';
package/index.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,mDAAmD,CAAC;AAC3F,OAAO,EAAE,mBAAmB,EAAE,MAAM,gDAAgD,CAAC;AACrF,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,YAAY,EACV,kBAAkB,EAClB,sBAAsB,EACtB,2BAA2B,EAC3B,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACvB,mBAAmB,EACnB,4BAA4B,GAC7B,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,gDAAgD,CAAC;AACxD,YAAY,EACV,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,mDAAmD,CAAC;AAC3F,OAAO,EAAE,mBAAmB,EAAE,MAAM,gDAAgD,CAAC;AACrF,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,0DAA0D,CAAC;AACjG,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,YAAY,EACV,kBAAkB,EAClB,sBAAsB,EACtB,2BAA2B,EAC3B,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACvB,mBAAmB,EACnB,4BAA4B,GAC7B,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,2BAA2B,EAC3B,2BAA2B,EAC3B,0BAA0B,EAC1B,2BAA2B,EAC3B,+BAA+B,GAChC,MAAM,0DAA0D,CAAC;AAClE,YAAY,EACV,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,gDAAgD,CAAC;AACxD,YAAY,EACV,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC"}
package/index.js CHANGED
@@ -1,13 +1,17 @@
1
- import { AttachmentType as e, CopyIconButton as t, DeploymentIcon as n, MDMessageViewer as r, MessageRating as i, MessageRole as a, buildCssVars as o, mergeClasses as s, useCollapsedText as c } from "@epam/ai-dial-chat-shared";
2
- import { AttachmentGroup as l } from "@epam/ai-dial-attachment-input";
3
- import { DIAL_ICON_SIZE as u, DIAL_KIT_ICON_STROKE as d, ElementSize as f, InfoMessageNotification as p, LinkButton as m, NeutralButton as h, ToggleIconButton as g } from "@epam/ai-dial-ui-kit";
4
- import { useCallback as _, useEffect as v, useId as y, useMemo as b, useRef as x, useState as S } from "react";
5
- import { IconChevronDown as C, IconChevronUp as w, IconMarkdown as T, IconPencilMinus as E, IconRefresh as D, IconThumbDown as O, IconThumbDownFilled as k, IconThumbUp as A, IconThumbUpFilled as j, IconTrashX as M } from "@tabler/icons-react";
6
- import { Fragment as N, jsx as P, jsxs as F } from "react/jsx-runtime";
7
- //#region src/hooks/useInlineStartIndent/useInlineStartIndent.ts
8
- var I = 4, L = (e) => {
9
- let t = x(null), [n, r] = S(0);
10
- return v(() => {
1
+ import { AttachmentType as e, CopyIconButton as t, DeploymentIcon as n, MDMessageViewer as r, MessageRating as i, MessageRole as a, ResponseFormat as o, buildCssVars as s, mergeClasses as c, useCollapsedText as l } from "@epam/ai-dial-chat-shared";
2
+ import { AttachmentGroup as u } from "@epam/ai-dial-attachment-input";
3
+ import { Button as d, ButtonVariant as f, DIAL_ICON_SIZE as p, DIAL_KIT_ICON_STROKE as m, ElementSize as h, InfoMessageNotification as g, LinkButton as _, NeutralButton as v, ToggleIconButton as y } from "@epam/ai-dial-ui-kit";
4
+ import { useCallback as b, useEffect as x, useId as S, useLayoutEffect as C, useMemo as w, useRef as T, useState as E } from "react";
5
+ import { IconArrowBackUp as D, IconChevronDown as O, IconChevronUp as k, IconMarkdown as A, IconPencilMinus as ee, IconRefresh as j, IconThumbDown as M, IconThumbDownFilled as N, IconThumbUp as P, IconThumbUpFilled as F, IconTrashX as te } from "@tabler/icons-react";
6
+ import { Fragment as I, jsx as L, jsxs as R } from "react/jsx-runtime";
7
+ import { createPortal as z } from "react-dom";
8
+ //#region src/constants/public-class-names.ts
9
+ var B = {
10
+ userBubble: "dial-cm-user-bubble",
11
+ assistantContent: "dial-cm-assistant-content"
12
+ }, V = 4, H = (e) => {
13
+ let t = T(null), [n, r] = E(0);
14
+ return x(() => {
11
15
  if (!e) return;
12
16
  let n = t.current;
13
17
  if (n == null) return;
@@ -18,328 +22,372 @@ var I = 4, L = (e) => {
18
22
  return i.observe(n), () => i.disconnect();
19
23
  }, [e]), {
20
24
  slotRef: t,
21
- firstLineIndent: e ? `calc(${n}px + ${I}px)` : void 0
25
+ firstLineIndent: e ? `calc(${n}px + ${V}px)` : void 0
22
26
  };
23
- }, R = { activeRating: "_activeRating_ygoee_1" }, z = 2e3, B = ({ role: e = a.User, onEdit: n, onEditHover: r, onDelete: c, onRegenerate: l, onCopy: p, onCopyMarkdown: m, onLike: h, onDislike: v, activeRating: y, isAlwaysVisible: b, isDisabled: x = !1, className: C, labels: w, colors: I }) => {
24
- let { tooltips: L, ariaLabels: B } = w ?? {}, [V, H] = S(null), [U, W] = S(""), G = n != null || c != null || l != null || p != null || m != null || h != null || v != null, K = o({ "--ma-active-rating-text": I?.activeRatingText }), q = _(() => {
25
- p?.(), H("copy"), W(B?.copiedStatus ?? "Copied to clipboard"), setTimeout(() => H(null), z);
26
- }, [p, B?.copiedStatus]), J = _(() => {
27
- m?.(), H("markdown"), W(B?.copiedMarkdownStatus ?? "Copied as Markdown to clipboard"), setTimeout(() => H(null), z);
28
- }, [m, B?.copiedMarkdownStatus]);
29
- return G ? /* @__PURE__ */ F("div", {
27
+ }, U = { activeRating: "_activeRating_ygoee_1" }, W = 2e3, G = ({ role: e = a.User, onEdit: n, onEditHover: r, onDelete: o, onRegenerate: l, onCopy: u, onCopyMarkdown: d, onLike: f, onDislike: g, activeRating: _, isAlwaysVisible: v, isDisabled: x = !1, className: S, labels: C, colors: w }) => {
28
+ let { tooltips: T, ariaLabels: D } = C ?? {}, [O, k] = E(null), [z, B] = E(""), V = n != null || o != null || l != null || u != null || d != null || f != null || g != null, H = s({ "--ma-active-rating-text": w?.activeRatingText }), G = b(() => {
29
+ u?.(), k("copy"), B(D?.copiedStatus ?? "Copied to clipboard"), setTimeout(() => k(null), W);
30
+ }, [u, D?.copiedStatus]), K = b(() => {
31
+ d?.(), k("markdown"), B(D?.copiedMarkdownStatus ?? "Copied as Markdown to clipboard"), setTimeout(() => k(null), W);
32
+ }, [d, D?.copiedMarkdownStatus]);
33
+ return V ? /* @__PURE__ */ R("div", {
30
34
  role: "toolbar",
31
- "aria-label": B?.actionsGroup ?? "Message actions",
32
- style: K,
33
- className: s("flex gap-1", !b && "opacity-0 group-hover:opacity-100", C),
34
- children: [/* @__PURE__ */ P("span", {
35
+ "aria-label": D?.actionsGroup ?? "Message actions",
36
+ style: H,
37
+ className: c("flex gap-1", !v && "opacity-0 group-hover:opacity-100", S),
38
+ children: [/* @__PURE__ */ L("span", {
35
39
  role: "status",
36
40
  "aria-live": "polite",
37
41
  className: "sr-only",
38
- children: U
39
- }), e === a.User ? /* @__PURE__ */ F(N, { children: [n && /* @__PURE__ */ P(g, {
40
- icon: /* @__PURE__ */ P(E, {
41
- size: u.SM,
42
+ children: z
43
+ }), e === a.User ? /* @__PURE__ */ R(I, { children: [n && /* @__PURE__ */ L(y, {
44
+ icon: /* @__PURE__ */ L(ee, {
45
+ size: p.SM,
42
46
  "aria-hidden": !0,
43
- stroke: d
47
+ stroke: m
44
48
  }),
45
- size: f.Small,
46
- "aria-label": B?.editMessage ?? "Edit message",
47
- tooltipProps: { tooltip: L?.edit ?? "Edit" },
49
+ size: h.Small,
50
+ "aria-label": D?.editMessage ?? "Edit message",
51
+ tooltipProps: { tooltip: T?.edit ?? "Edit" },
48
52
  onClick: n,
49
53
  onMouseEnter: r,
50
54
  onFocus: r,
51
55
  disabled: x
52
- }), c && /* @__PURE__ */ P(g, {
53
- icon: /* @__PURE__ */ P(M, {
54
- size: u.SM,
56
+ }), o && /* @__PURE__ */ L(y, {
57
+ icon: /* @__PURE__ */ L(te, {
58
+ size: p.SM,
55
59
  "aria-hidden": !0,
56
- stroke: d
60
+ stroke: m
57
61
  }),
58
- size: f.Small,
59
- "aria-label": B?.deleteMessage ?? "Delete message",
60
- tooltipProps: { tooltip: L?.delete ?? "Delete" },
61
- onClick: c,
62
+ size: h.Small,
63
+ "aria-label": D?.deleteMessage ?? "Delete message",
64
+ tooltipProps: { tooltip: T?.delete ?? "Delete" },
65
+ onClick: o,
62
66
  disabled: x
63
- })] }) : /* @__PURE__ */ F(N, { children: [
64
- l && /* @__PURE__ */ P(g, {
65
- icon: /* @__PURE__ */ P(D, {
66
- size: u.SM,
67
+ })] }) : /* @__PURE__ */ R(I, { children: [
68
+ l && /* @__PURE__ */ L(y, {
69
+ icon: /* @__PURE__ */ L(j, {
70
+ size: p.SM,
67
71
  "aria-hidden": !0,
68
- stroke: d
72
+ stroke: m
69
73
  }),
70
- size: f.Small,
71
- "aria-label": B?.regenerateResponse ?? "Regenerate response",
72
- tooltipProps: { tooltip: L?.regenerate ?? "Regenerate" },
74
+ size: h.Small,
75
+ "aria-label": D?.regenerateResponse ?? "Regenerate response",
76
+ tooltipProps: { tooltip: T?.regenerate ?? "Regenerate" },
73
77
  onClick: l,
74
78
  disabled: x
75
79
  }),
76
- p && /* @__PURE__ */ P(t, {
77
- iconSize: u.SM,
78
- onClick: q,
79
- size: f.Small,
80
- isCopied: V === "copy",
81
- copyLabel: L?.copy ?? "Copy",
82
- copiedLabel: L?.copied ?? "Copied!",
83
- ariaLabel: B?.copyResponse ?? "Copy response",
80
+ u && /* @__PURE__ */ L(t, {
81
+ iconSize: p.SM,
82
+ onClick: G,
83
+ size: h.Small,
84
+ isCopied: O === "copy",
85
+ copyLabel: T?.copy ?? "Copy",
86
+ copiedLabel: T?.copied ?? "Copied!",
87
+ ariaLabel: D?.copyResponse ?? "Copy response",
84
88
  isDisabled: x
85
89
  }),
86
- m && /* @__PURE__ */ P(t, {
87
- iconSize: u.SM,
88
- onClick: J,
89
- size: f.Small,
90
- isCopied: V === "markdown",
91
- iconCopy: /* @__PURE__ */ P(T, {
92
- size: u.SM,
90
+ d && /* @__PURE__ */ L(t, {
91
+ iconSize: p.SM,
92
+ onClick: K,
93
+ size: h.Small,
94
+ isCopied: O === "markdown",
95
+ iconCopy: /* @__PURE__ */ L(A, {
96
+ size: p.SM,
93
97
  "aria-hidden": !0,
94
- stroke: d
98
+ stroke: m
95
99
  }),
96
- copyLabel: L?.copyMarkdown ?? "Copy as Markdown",
97
- copiedLabel: L?.copiedMarkdown ?? "Copied!",
98
- ariaLabel: B?.copyAsMarkdown ?? "Copy as markdown",
100
+ copyLabel: T?.copyMarkdown ?? "Copy as Markdown",
101
+ copiedLabel: T?.copiedMarkdown ?? "Copied!",
102
+ ariaLabel: D?.copyAsMarkdown ?? "Copy as markdown",
99
103
  isDisabled: x
100
104
  }),
101
- h && /* @__PURE__ */ P(g, {
102
- icon: y === i.Like ? /* @__PURE__ */ P(j, {
103
- className: R.activeRating,
104
- size: u.SM,
105
+ f && /* @__PURE__ */ L(y, {
106
+ icon: _ === i.Like ? /* @__PURE__ */ L(F, {
107
+ className: U.activeRating,
108
+ size: p.SM,
105
109
  "aria-hidden": !0
106
- }) : /* @__PURE__ */ P(A, {
107
- size: u.SM,
110
+ }) : /* @__PURE__ */ L(P, {
111
+ size: p.SM,
108
112
  "aria-hidden": !0,
109
- stroke: d
113
+ stroke: m
110
114
  }),
111
- size: f.Small,
112
- "aria-label": B?.likeResponse ?? "Like response",
113
- "aria-pressed": y === i.Like,
114
- tooltipProps: { tooltip: L?.like ?? "Like" },
115
- onClick: h,
115
+ size: h.Small,
116
+ "aria-label": D?.likeResponse ?? "Like response",
117
+ "aria-pressed": _ === i.Like,
118
+ tooltipProps: { tooltip: T?.like ?? "Like" },
119
+ onClick: f,
116
120
  disabled: x
117
121
  }),
118
- v && /* @__PURE__ */ P(g, {
119
- icon: y === i.Dislike ? /* @__PURE__ */ P(k, {
120
- className: R.activeRating,
121
- size: u.SM,
122
+ g && /* @__PURE__ */ L(y, {
123
+ icon: _ === i.Dislike ? /* @__PURE__ */ L(N, {
124
+ className: U.activeRating,
125
+ size: p.SM,
122
126
  "aria-hidden": !0
123
- }) : /* @__PURE__ */ P(O, {
124
- size: u.SM,
127
+ }) : /* @__PURE__ */ L(M, {
128
+ size: p.SM,
125
129
  "aria-hidden": !0,
126
- stroke: d
130
+ stroke: m
127
131
  }),
128
- size: f.Small,
129
- "aria-label": B?.dislikeResponse ?? "Dislike response",
130
- "aria-pressed": y === i.Dislike,
131
- tooltipProps: { tooltip: L?.dislike ?? "Dislike" },
132
- onClick: v,
132
+ size: h.Small,
133
+ "aria-label": D?.dislikeResponse ?? "Dislike response",
134
+ "aria-pressed": _ === i.Dislike,
135
+ tooltipProps: { tooltip: T?.dislike ?? "Dislike" },
136
+ onClick: g,
133
137
  disabled: x
134
138
  })
135
139
  ] })]
136
140
  }) : null;
137
- }, V = {
141
+ }, K = {
138
142
  userBubble: "_userBubble_cq829_1",
139
143
  collapsibleText: "_collapsibleText_cq829_6",
140
144
  expandedText: "_expandedText_cq829_11",
141
145
  collapsedText: "_collapsedText_cq829_15",
142
146
  startersDivider: "_startersDivider_cq829_26",
143
147
  text: "_text_cq829_30"
144
- }, H = "[&>.cm-bubble-markdown>div>*:first-child]:indent-[var(--cm-bubble-first-line-indent,0px)]", U = ({ text: t, styles: i, actions: c, hasAlwaysVisibleActions: u, isStreaming: d, attachments: f, beforeContent: p, afterContent: m, starters: g, onSelectStarter: _, deploymentIconUrl: v, deploymentDisplayName: y, markdownComponents: x, markdownClassNames: S, markdownUrlTransform: C, onAttachmentClick: w, onDownloadAll: T, onAttachmentRetry: E, codeBlockTheme: D, tableOnOpenInCanvas: O, labels: k, selectedAttachmentId: A }) => {
145
- let { colors: j, typography: M, className: N, bubbleClassName: I } = i ?? {}, { attachmentClickLabel: R, attachmentRetryLabel: z, attachmentOpenInNewTabLabel: U, startersAriaLabel: W = "Quick reply buttons", thinkingLabel: G, codeBlockCopyLabel: K, codeBlockCopiedLabel: q, tableCopyCsvLabel: J, tableCopyTxtLabel: Y, tableCopyMarkdownLabel: X, tableCopiedLabel: Z, tableDownloadCsvLabel: Q, tableOpenInCanvasLabel: $, tableDownloadFilename: ee, tableScrollRegionAriaLabel: te, assistantMessageAriaLabel: ne = "Assistant message", deploymentIconFallbackLabel: re = "AI" } = k ?? {}, ie = b(() => ({
146
- copyCsvLabel: J,
147
- copyTxtLabel: Y,
148
- copyMarkdownLabel: X,
149
- copiedLabel: Z,
150
- downloadCsvLabel: Q,
151
- openInCanvasLabel: $
148
+ }, ne = "[&>.cm-bubble-markdown>div>*:first-child]:indent-[var(--cm-bubble-first-line-indent,0px)]", q = ({ text: t, contentRef: i, styles: l, actions: d, hasAlwaysVisibleActions: f, isStreaming: p, attachments: m, beforeContent: h, responseFormat: g, afterContent: _, starters: y, onSelectStarter: b, deploymentIconUrl: x, deploymentDisplayName: S, markdownComponents: C, markdownClassNames: T, markdownUrlTransform: E, onAttachmentClick: D, onDownloadAll: O, onAttachmentRetry: k, codeBlockTheme: A, tableOnOpenInCanvas: ee, labels: j, selectedAttachmentId: M }) => {
149
+ let { colors: N, typography: P, className: F, bubbleClassName: te } = l ?? {}, { attachmentClickLabel: I, attachmentRetryLabel: z, attachmentOpenInNewTabLabel: V, startersAriaLabel: U = "Quick reply buttons", thinkingLabel: W, codeBlockCopyLabel: q, codeBlockCopiedLabel: J, tableCopyLabel: Y, tableCopiedLabel: X, tableDownloadCsvLabel: Z, tableOpenInCanvasLabel: Q, tableDownloadFilename: $, tableScrollRegionAriaLabel: re, assistantMessageAriaLabel: ie = "Assistant message", deploymentIconFallbackLabel: ae = "AI" } = j ?? {}, oe = w(() => ({
150
+ copyLabel: Y,
151
+ copiedLabel: X,
152
+ downloadCsvLabel: Z,
153
+ openInCanvasLabel: Q
152
154
  }), [
153
- J,
154
155
  Y,
155
156
  X,
156
157
  Z,
157
- Q,
158
- $
159
- ]), ae = d ? (f ?? []).filter((t) => t.type !== e.Audio) : f ?? [], { slotRef: oe, firstLineIndent: se } = L(p != null && !!t), ce = o({
160
- "--cm-bubble-text": j?.text,
161
- "--cm-starters-divider": j?.startersDivider,
162
- "--cm-bubble-first-line-indent": se
163
- }), le = s(V.text, M?.fontClassName), ue = !!(v || y);
164
- return /* @__PURE__ */ F("div", {
158
+ Q
159
+ ]), se = p ? (m ?? []).filter((t) => t.type !== e.Audio) : m ?? [], { slotRef: ce, firstLineIndent: le } = H(h != null && !!t), ue = s({
160
+ "--cm-bubble-text": N?.text,
161
+ "--cm-starters-divider": N?.startersDivider,
162
+ "--cm-bubble-first-line-indent": le
163
+ }), de = c(K.text, P?.fontClassName), fe = !!(x || S);
164
+ return /* @__PURE__ */ R("div", {
165
165
  role: "group",
166
- "aria-label": ne,
167
- style: ce,
168
- className: s("flex w-full items-start gap-3", N),
169
- children: [ue && /* @__PURE__ */ P(n, {
170
- src: v,
166
+ "aria-label": ie,
167
+ style: ue,
168
+ className: c("flex w-full items-start gap-3", F),
169
+ children: [fe && /* @__PURE__ */ L(n, {
170
+ src: x,
171
171
  size: 28,
172
- initialsName: y || re,
173
- labels: { tooltip: y ?? re }
174
- }), /* @__PURE__ */ F("div", {
172
+ initialsName: S || ae,
173
+ labels: { tooltip: S ?? ae }
174
+ }), /* @__PURE__ */ R("div", {
175
175
  className: "flex w-full min-w-0 max-w-full flex-col items-start gap-5",
176
- children: [/* @__PURE__ */ F("div", {
177
- className: s("flex w-full min-w-0 max-w-full flex-col items-start gap-4", I),
176
+ children: [/* @__PURE__ */ R("div", {
177
+ className: c("flex w-full min-w-0 max-w-full flex-col items-start gap-4", te),
178
178
  children: [
179
- p != null && !t && /* @__PURE__ */ P("div", {
179
+ h != null && !t && /* @__PURE__ */ L("div", {
180
180
  className: "min-w-0",
181
- children: p
181
+ children: h
182
182
  }),
183
- (t || d) && /* @__PURE__ */ F("div", {
183
+ (t || p) && /* @__PURE__ */ R("div", {
184
184
  "aria-live": "polite",
185
185
  "aria-atomic": "false",
186
- className: s(le, "relative min-w-0 max-w-full text-start", p != null && t && H),
187
- children: [p != null && t && /* @__PURE__ */ P("div", {
188
- ref: oe,
186
+ className: c(de, "relative min-w-0 max-w-full text-start", h != null && t && ne, B.assistantContent),
187
+ children: [h != null && t && /* @__PURE__ */ L("div", {
188
+ ref: ce,
189
189
  className: "absolute start-0 top-0",
190
- children: p
191
- }), /* @__PURE__ */ P("div", {
190
+ children: h
191
+ }), /* @__PURE__ */ L("div", {
192
+ ref: i,
192
193
  className: "cm-bubble-markdown min-w-0 max-w-full",
193
- children: /* @__PURE__ */ P(r, {
194
+ children: /* @__PURE__ */ L(r, {
194
195
  content: t ?? "",
195
- isStreaming: d,
196
- thinkingLabel: G,
197
- components: x,
198
- classNames: S,
199
- urlTransform: C,
200
- codeBlockCopyLabel: K,
201
- codeBlockCopiedLabel: q,
202
- codeBlockTheme: D,
203
- tableActionLabels: ie,
204
- tableDownloadFilename: ee,
205
- tableOnOpenInCanvas: O,
206
- tableScrollRegionAriaLabel: te
196
+ isPlainText: g === o.PlainText,
197
+ isStreaming: p,
198
+ thinkingLabel: W,
199
+ components: C,
200
+ classNames: T,
201
+ urlTransform: E,
202
+ codeBlockCopyLabel: q,
203
+ codeBlockCopiedLabel: J,
204
+ codeBlockTheme: A,
205
+ tableActionLabels: oe,
206
+ tableDownloadFilename: $,
207
+ tableOnOpenInCanvas: ee,
208
+ tableScrollRegionAriaLabel: re
207
209
  })
208
210
  })]
209
211
  }),
210
- /* @__PURE__ */ P(l, {
211
- attachments: ae,
212
- onAttachmentClick: (e) => w?.(f?.find((t) => t.id === e)),
213
- onDownloadAll: T,
214
- onRetry: E,
212
+ /* @__PURE__ */ L(u, {
213
+ attachments: se,
214
+ onAttachmentClick: (e) => D?.(m?.find((t) => t.id === e)),
215
+ onDownloadAll: O,
216
+ onRetry: k,
215
217
  labels: {
216
- clickLabel: R,
218
+ clickLabel: I,
217
219
  retryLabel: z,
218
- openInNewTabLabel: U
220
+ openInNewTabLabel: V
219
221
  },
220
- selectedAttachmentId: A
222
+ selectedAttachmentId: M
221
223
  }),
222
- m,
223
- /* @__PURE__ */ P(B, {
224
- ...c,
225
- isAlwaysVisible: u,
224
+ _,
225
+ /* @__PURE__ */ L(G, {
226
+ ...d,
227
+ isAlwaysVisible: f,
226
228
  role: a.Assistant
227
229
  })
228
230
  ]
229
- }), g && g.length > 0 && _ && /* @__PURE__ */ P("div", {
231
+ }), y && y.length > 0 && b && /* @__PURE__ */ L("div", {
230
232
  role: "list",
231
- "aria-label": W,
232
- className: s("flex w-full flex-wrap gap-2 border-t pt-5", V.startersDivider),
233
- children: g.map((e, t) => /* @__PURE__ */ P("div", {
233
+ "aria-label": U,
234
+ className: c("flex w-full flex-wrap gap-2 border-t pt-5", K.startersDivider),
235
+ children: y.map((e, t) => /* @__PURE__ */ L("div", {
234
236
  role: "listitem",
235
237
  className: "min-w-[40px]",
236
- children: /* @__PURE__ */ P(h, {
238
+ children: /* @__PURE__ */ L(v, {
237
239
  label: e.title,
238
240
  className: "min-w-[40px]",
239
- onClick: () => _(e)
241
+ onClick: () => b(e)
240
242
  })
241
243
  }, t))
242
244
  })]
243
245
  })]
244
246
  });
245
- }, W = ({ labels: { titleText: e = "Model switched.", bodyText: t } }) => /* @__PURE__ */ P("div", {
247
+ }, J = ({ labels: { titleText: e = "Model switched.", bodyText: t } }) => /* @__PURE__ */ L("div", {
246
248
  role: "status",
247
249
  "aria-live": "polite",
248
- children: /* @__PURE__ */ P(p, {
250
+ children: /* @__PURE__ */ L(g, {
249
251
  title: e,
250
252
  message: t,
251
253
  textClassName: "flex-row flex-wrap gap-1"
252
254
  })
253
- }), G = /* @__PURE__ */ function(e) {
255
+ }), Y = /* @__PURE__ */ function(e) {
254
256
  return e.Bottom = "Bottom", e.Top = "Top", e;
255
- }({}), K = 10, q = ({ text: e, position: t = G.Bottom, styles: n, actions: r, hasAlwaysVisibleActions: i, attachments: d, collapsedLineCount: p = K, labels: h, beforeContent: g, onAttachmentClick: _, onDownloadAll: v, onAttachmentRetry: b, selectedAttachmentId: x }) => {
256
- let { colors: S, typography: T, className: E, bubbleClassName: D } = n ?? {}, { showMoreLabel: O = "Show more", showLessLabel: k = "Show less", showMoreAriaLabel: A, showLessAriaLabel: j, attachmentClickLabel: M, attachmentRetryLabel: I, attachmentOpenInNewTabLabel: L, userMessageAriaLabel: R = "User message" } = h ?? {}, { textRef: z, isTextCollapsed: H, isOverflowing: U, collapsedMaxHeight: W, expandedMaxHeight: q, isCollapsed: J, toggleCollapsed: Y } = c({
257
+ }({}), X = 10, Z = ({ text: e, contentRef: t, position: n = Y.Bottom, styles: r, actions: i, hasAlwaysVisibleActions: o, attachments: d, collapsedLineCount: f = X, labels: m, textSegments: g, onAttachmentClick: v, onDownloadAll: y, onAttachmentRetry: b, selectedAttachmentId: x }) => {
258
+ let { colors: C, typography: w, className: T, bubbleClassName: E } = r ?? {}, { showMoreLabel: D = "Show more", showLessLabel: A = "Show less", showMoreAriaLabel: ee, showLessAriaLabel: j, attachmentClickLabel: M, attachmentRetryLabel: N, attachmentOpenInNewTabLabel: P, userMessageAriaLabel: F = "User message" } = m ?? {}, { textRef: te, isTextCollapsed: z, isOverflowing: V, collapsedMaxHeight: H, expandedMaxHeight: U, isCollapsed: W, toggleCollapsed: ne } = l({
257
259
  text: e ?? "",
258
- collapsedLineCount: p
259
- }), X = o({
260
- "--cm-bubble-user-bg": S?.userBackground,
261
- "--cm-bubble-user-border": S?.userBorder,
262
- "--cm-bubble-fade-start": S?.fadeStart,
263
- "--cm-bubble-text": S?.text,
264
- "--cm-bubble-collapsed-height": U ? `${W}px` : void 0,
265
- "--cm-bubble-expanded-height": U ? `${q}px` : void 0
266
- }), Z = t === G.Top ? "rounded-ee-md rounded-se-2xl" : "rounded-se-md rounded-ee-2xl", Q = s(V.text, T?.fontClassName), $ = A ?? O, ee = j ?? k, te = J ? O : k, ne = J ? $ : ee, re = J ? C : w, ie = y();
267
- return /* @__PURE__ */ P("div", {
260
+ collapsedLineCount: f
261
+ }), q = s({
262
+ "--cm-bubble-user-bg": C?.userBackground,
263
+ "--cm-bubble-user-border": C?.userBorder,
264
+ "--cm-bubble-fade-start": C?.fadeStart,
265
+ "--cm-bubble-text": C?.text,
266
+ "--cm-bubble-collapsed-height": V ? `${H}px` : void 0,
267
+ "--cm-bubble-expanded-height": V ? `${U}px` : void 0
268
+ }), J = n === Y.Top ? "rounded-ee-md rounded-se-2xl" : "rounded-se-md rounded-ee-2xl", Z = c(K.text, w?.fontClassName), Q = ee ?? D, $ = j ?? A, re = W ? D : A, ie = W ? Q : $, ae = W ? O : k, oe = S();
269
+ return /* @__PURE__ */ L("div", {
268
270
  role: "group",
269
- "aria-label": R,
270
- style: X,
271
- className: s("flex w-full", E),
272
- children: /* @__PURE__ */ F("div", {
271
+ "aria-label": F,
272
+ style: q,
273
+ className: c("flex w-full", T),
274
+ children: /* @__PURE__ */ R("div", {
273
275
  className: "ms-auto flex w-fit min-w-0 max-w-full flex-col items-end gap-4",
274
276
  children: [
275
- /* @__PURE__ */ P(l, {
277
+ /* @__PURE__ */ L(u, {
276
278
  attachments: d ?? [],
277
- onAttachmentClick: (e) => _?.(d?.find((t) => t.id === e)),
278
- onDownloadAll: v,
279
+ onAttachmentClick: (e) => v?.(d?.find((t) => t.id === e)),
280
+ onDownloadAll: y,
279
281
  onRetry: b,
280
282
  labels: {
281
283
  clickLabel: M,
282
- retryLabel: I,
283
- openInNewTabLabel: L
284
+ retryLabel: N,
285
+ openInNewTabLabel: P
284
286
  },
285
287
  styles: { className: "max-w-[640px]" },
286
288
  selectedAttachmentId: x
287
289
  }),
288
- (e || g != null) && /* @__PURE__ */ P("div", {
289
- className: s(V.userBubble, "flex w-fit items-center justify-end rounded-es-2xl rounded-ss-2xl border px-6 py-4", Z, D),
290
- children: /* @__PURE__ */ F("div", {
290
+ e && /* @__PURE__ */ L("div", {
291
+ className: c(K.userBubble, "flex w-fit items-center justify-end rounded-es-2xl rounded-ss-2xl border px-6 py-4", J, E, B.userBubble),
292
+ children: /* @__PURE__ */ R("div", {
291
293
  className: "flex min-w-0 flex-col items-start",
292
- children: [
293
- e && /* @__PURE__ */ P("div", {
294
- id: ie,
295
- className: s("relative overflow-hidden", U && V.collapsibleText, U && !J && V.expandedText, H && V.collapsedText),
296
- children: /* @__PURE__ */ F("p", {
297
- ref: z,
298
- className: s(Q, "whitespace-pre-wrap text-start [overflow-wrap:anywhere]"),
299
- children: [g != null && /* @__PURE__ */ P("span", {
300
- className: "me-1",
301
- children: g
302
- }), e]
303
- })
304
- }),
305
- g != null && !e && /* @__PURE__ */ P("div", { children: g }),
306
- U && /* @__PURE__ */ P(m, {
307
- label: /* @__PURE__ */ P(N, { children: te }),
308
- iconBefore: /* @__PURE__ */ P(re, {
309
- size: u.SM,
310
- "aria-hidden": "true"
311
- }),
312
- "aria-label": ne,
313
- "aria-expanded": !J,
314
- "aria-controls": ie,
315
- className: "mt-3",
316
- onClick: Y,
317
- size: f.Small
294
+ children: [/* @__PURE__ */ L("div", {
295
+ id: oe,
296
+ ref: t,
297
+ className: c("relative -me-1 -ms-1 w-[calc(100%+8px)] overflow-hidden pe-1 ps-1", V && K.collapsibleText, V && !W && K.expandedText, z && K.collapsedText),
298
+ children: /* @__PURE__ */ L("p", {
299
+ ref: te,
300
+ className: c(Z, "whitespace-pre-wrap text-start [overflow-wrap:anywhere]"),
301
+ children: g ?? e
318
302
  })
319
- ]
303
+ }), V && /* @__PURE__ */ L(_, {
304
+ label: /* @__PURE__ */ L(I, { children: re }),
305
+ iconBefore: /* @__PURE__ */ L(ae, {
306
+ size: p.SM,
307
+ "aria-hidden": "true"
308
+ }),
309
+ "aria-label": ie,
310
+ "aria-expanded": !W,
311
+ "aria-controls": oe,
312
+ className: "mt-3",
313
+ onClick: ne,
314
+ size: h.Small
315
+ })]
320
316
  })
321
317
  }),
322
- /* @__PURE__ */ P(B, {
323
- ...r,
324
- isAlwaysVisible: i,
318
+ /* @__PURE__ */ L(G, {
319
+ ...i,
320
+ isAlwaysVisible: o,
325
321
  role: a.User
326
322
  })
327
323
  ]
328
324
  })
329
325
  });
330
- }, J = ({ role: e, beforeContent: t, onAttachmentClick: n, markdownComponents: r, markdownUrlTransform: i, ...o }) => e === a.Status ? /* @__PURE__ */ P(W, { labels: {
331
- titleText: o.labels?.statusTitleText,
332
- bodyText: o.labels?.statusBodyText ?? ""
333
- } }) : e === a.User ? /* @__PURE__ */ P(q, {
334
- ...o,
326
+ }, Q = ({ role: e, beforeContent: t, textSegments: n, onAttachmentClick: r, responseFormat: i, markdownComponents: o, markdownUrlTransform: s, ...c }) => e === a.Status ? /* @__PURE__ */ L(J, { labels: {
327
+ titleText: c.labels?.statusTitleText,
328
+ bodyText: c.labels?.statusBodyText ?? ""
329
+ } }) : e === a.User ? /* @__PURE__ */ L(Z, {
330
+ ...c,
331
+ textSegments: n,
332
+ onAttachmentClick: r
333
+ }) : /* @__PURE__ */ L(q, {
334
+ ...c,
335
335
  beforeContent: t,
336
- onAttachmentClick: n
337
- }) : /* @__PURE__ */ P(U, {
338
- ...o,
339
- beforeContent: t,
340
- markdownComponents: r,
341
- markdownUrlTransform: i,
342
- onAttachmentClick: n
343
- });
336
+ responseFormat: i,
337
+ markdownComponents: o,
338
+ markdownUrlTransform: s,
339
+ onAttachmentClick: r
340
+ }), $ = { button: "_button_tqo4d_3" }, re = ({ rect: e, actionRef: t, onReply: n, addedRevision: r, labels: i, styles: a, portalContainer: o }) => {
341
+ let { colors: l, typography: u, className: p, buttonClassName: g } = a ?? {}, _ = u?.fontClassName ?? "dial-small-text", v = o === void 0 ? typeof document > "u" ? null : document.body : o, y = s({
342
+ "--cm-reply-background": l?.background,
343
+ "--cm-reply-hover-background": l?.hoverBackground,
344
+ "--cm-reply-text": l?.text
345
+ }), [b, x] = E({
346
+ x: 0,
347
+ y: 0
348
+ });
349
+ return C(() => {
350
+ if (!e || !t.current) return;
351
+ let n = t.current.getBoundingClientRect(), r = window.visualViewport, i = r?.offsetLeft ?? 0, a = r?.offsetTop ?? 0, o = r?.width ?? document.documentElement.clientWidth, s = r?.height ?? document.documentElement.clientHeight, c = e.top - n.height - 8 >= a + 8 ? e.top - n.height - 8 : e.bottom + 8;
352
+ x({
353
+ x: Math.max(i + 8, Math.min(e.left, i + o - n.width - 8)),
354
+ y: Math.max(a + 8, Math.min(c, a + s - n.height - 8))
355
+ });
356
+ }, [
357
+ e,
358
+ t,
359
+ v,
360
+ p,
361
+ g,
362
+ _,
363
+ i.reply
364
+ ]), v ? z(/* @__PURE__ */ R(I, { children: [e && /* @__PURE__ */ L("div", {
365
+ ref: t,
366
+ className: c("fixed left-0 top-0 z-50 max-w-[calc(100vw-16px)]", p),
367
+ style: {
368
+ ...y,
369
+ transform: `translate(${b.x}px, ${b.y}px)`
370
+ },
371
+ children: /* @__PURE__ */ L(d, {
372
+ variant: f.Neutral,
373
+ size: h.Small,
374
+ label: i.reply,
375
+ onClick: n,
376
+ textClassName: _,
377
+ className: c($.button, "h-8 min-h-8 min-w-11 px-2 shadow-lg mobile:h-11 mobile:min-h-11", g),
378
+ iconAfter: /* @__PURE__ */ L(D, {
379
+ size: 16,
380
+ stroke: m,
381
+ "aria-hidden": "true",
382
+ className: "rtl:scale-x-[-1]"
383
+ })
384
+ })
385
+ }), /* @__PURE__ */ L("div", {
386
+ role: "status",
387
+ "aria-live": "polite",
388
+ className: "sr-only",
389
+ children: e ? i.selectionAvailable : r > 0 ? /* @__PURE__ */ L("span", { children: i.attachmentAdded }, r) : null
390
+ })] }), v) : null;
391
+ };
344
392
  //#endregion
345
- export { U as AssistantMessageBubble, G as BubblePosition, B as MessageActions, J as MessageBubble, W as StatusMessageBubble, q as UserMessageBubble };
393
+ export { q as AssistantMessageBubble, Y as BubblePosition, B as CONVERSATION_MESSAGES_CLASS, G as MessageActions, Q as MessageBubble, re as MessageSelectionReply, J as StatusMessageBubble, Z as UserMessageBubble };
@@ -1,5 +1,5 @@
1
- import { CodeBlockTheme, DisplayAttachment, MarkdownRendererClassNames, MessageRole, StarterOption } from '@epam/ai-dial-chat-shared';
2
- import { ReactNode } from 'react';
1
+ import { CodeBlockTheme, DisplayAttachment, MarkdownRendererClassNames, MessageRole, ResponseFormat, StarterOption } from '@epam/ai-dial-chat-shared';
2
+ import { ReactNode, Ref } from 'react';
3
3
  import { Components } from 'react-markdown';
4
4
  import { BubblePosition } from '../types/bubble-position';
5
5
  import { MessageActionsProps } from './message-actions';
@@ -67,12 +67,8 @@ export interface AssistantMessageBubbleLabels extends MessageBubbleLabels {
67
67
  codeBlockCopyLabel?: string;
68
68
  /** aria-label for the code block copy button after copying. */
69
69
  codeBlockCopiedLabel?: string;
70
- /** Label for copying a Markdown table as CSV. */
71
- tableCopyCsvLabel?: string;
72
- /** Label for copying a Markdown table as text. */
73
- tableCopyTxtLabel?: string;
74
- /** Label for copying a Markdown table as Markdown. */
75
- tableCopyMarkdownLabel?: string;
70
+ /** Label for the copy action on a Markdown table (copies as Markdown format). */
71
+ tableCopyLabel?: string;
76
72
  /** Status announced after a Markdown table has been copied. */
77
73
  tableCopiedLabel?: string;
78
74
  /** Label for downloading a Markdown table as CSV. */
@@ -88,6 +84,8 @@ export interface AssistantMessageBubbleLabels extends MessageBubbleLabels {
88
84
  }
89
85
  /** Shared props for user and assistant message bubble components. */
90
86
  interface BaseMessageBubbleProps {
87
+ /** Ref to the text body, excluding attachment trays, actions and host slots. */
88
+ contentRef?: Ref<HTMLDivElement>;
91
89
  /** Plain-text (or Markdown) content of the message. When absent, the bubble renders for `beforeContent` alone. */
92
90
  text?: string;
93
91
  /** Color and typography overrides applied as CSS custom properties. */
@@ -110,17 +108,6 @@ interface BaseMessageBubbleProps {
110
108
  onAttachmentRetry?: (id: string) => void;
111
109
  /** ID of the attachment currently open in the canvas panel, if any. Renders that tile's selected visual state. */
112
110
  selectedAttachmentId?: string;
113
- /**
114
- * Content rendered at the inline-start of the message's first text line,
115
- * which word-flows after it (e.g. a used-skill chip — inline-level content
116
- * no taller than a text line). The user bubble renders it inline within
117
- * the text; the assistant bubble overlays it on the first markdown block's
118
- * first line, which indents past it. The user bubble renders for the slot
119
- * alone even when `text` is empty; an assistant message with no text
120
- * renders the slot on its own line — above the streaming placeholder while
121
- * the first token has not arrived yet.
122
- */
123
- beforeContent?: ReactNode;
124
111
  }
125
112
  /** Props for `UserMessageBubble`. */
126
113
  export interface UserMessageBubbleProps extends BaseMessageBubbleProps {
@@ -128,9 +115,38 @@ export interface UserMessageBubbleProps extends BaseMessageBubbleProps {
128
115
  position?: BubblePosition;
129
116
  /** Maximum number of text lines shown while a long user message is collapsed. Defaults to `10`. */
130
117
  collapsedLineCount?: number;
118
+ /**
119
+ * Ordered content replacing the plain-text render when present —
120
+ * interleaved plain-text runs and inline elements (e.g. skill-mention
121
+ * chips at their text position), rendered in place of `text` inside the
122
+ * same paragraph. `text` is still required alongside this: it remains the
123
+ * identity/measurement input for the collapse-height calculation
124
+ * (`useCollapsedText`), even though `textSegments` is what's visually
125
+ * rendered. Absent renders `text` directly, byte-identical to today.
126
+ */
127
+ textSegments?: ReactNode[];
131
128
  }
132
129
  /** Props for `AssistantMessageBubble`. */
133
130
  export interface AssistantMessageBubbleProps extends BaseMessageBubbleProps {
131
+ /**
132
+ * Conversation response format. `ResponseFormat.PlainText` renders the
133
+ * message body verbatim — no Markdown pipeline, so a table, a heading, or
134
+ * `**bold**` reaches the reader exactly as the model wrote it — and the
135
+ * markdown-only props below stop applying. Defaults to
136
+ * `ResponseFormat.Markdown`.
137
+ */
138
+ responseFormat?: ResponseFormat;
139
+ /**
140
+ * Content rendered at the inline-start of the message's first markdown
141
+ * block's first line, which word-flows after it (e.g. used-skill chips —
142
+ * inline-level content no taller than a text line). Overlaid on the first
143
+ * line, which indents past it; an assistant message with no text renders
144
+ * the slot on its own line — above the streaming placeholder while the
145
+ * first token has not arrived yet. May itself be an array of elements
146
+ * (e.g. one `ChatSkill` per mention) — React renders `ReactNode[]` as a
147
+ * sibling sequence with no extra wrapper needed.
148
+ */
149
+ beforeContent?: ReactNode;
134
150
  /** react-markdown component overrides. Use to inject custom renderers (e.g. citation markers) into markdown elements. */
135
151
  markdownComponents?: Components;
136
152
  /** Per-element markdown typography classes. Defaults to the renderer's full-size scale; pass `COMPACT_MARKDOWN_CLASS_NAMES` for the smaller body scale. */
@@ -159,7 +175,7 @@ export interface AssistantMessageBubbleProps extends BaseMessageBubbleProps {
159
175
  labels?: AssistantMessageBubbleLabels;
160
176
  }
161
177
  /** Props for `MessageBubble` — `AssistantMessageBubbleProps` plus user-only fields and `role`. */
162
- export type MessageBubbleProps = AssistantMessageBubbleProps & Pick<UserMessageBubbleProps, 'position' | 'collapsedLineCount'> & {
178
+ export type MessageBubbleProps = AssistantMessageBubbleProps & Pick<UserMessageBubbleProps, 'position' | 'collapsedLineCount' | 'textSegments'> & {
163
179
  /** Message author/type: user, assistant, or status banner. */
164
180
  role: MessageRole;
165
181
  };
@@ -1 +1 @@
1
- {"version":3,"file":"message-bubble.d.ts","sourceRoot":"","sources":["../../src/models/message-bubble.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"message-bubble.d.ts","sourceRoot":"","sources":["../../src/models/message-bubble.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@epam/ai-dial-conversation-messages",
3
3
  "description": "Message bubble components for rendering conversation history with actions and source citations",
4
- "version": "1.2.0-dev.20",
4
+ "version": "1.2.0-dev.207",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
7
7
  "main": "./index.js",
@@ -19,12 +19,13 @@
19
19
  "dependencies": {
20
20
  "@tabler/icons-react": "^3.44.0",
21
21
  "react-markdown": "^10.1.0",
22
- "@epam/ai-dial-attachment-input": "1.2.0-dev.20"
22
+ "@epam/ai-dial-attachment-input": "1.2.0-dev.207"
23
23
  },
24
24
  "peerDependencies": {
25
25
  "react": "^19.2.8",
26
- "@epam/ai-dial-chat-shared": "1.2.0-dev.20",
27
- "@epam/ai-dial-ui-kit": "^0.14.2"
26
+ "react-dom": "^19.2.8",
27
+ "@epam/ai-dial-chat-shared": "1.2.0-dev.207",
28
+ "@epam/ai-dial-ui-kit": "^0.15.0-dev.23"
28
29
  },
29
30
  "repository": {
30
31
  "type": "git",