@aleph-alpha/chat-kit 0.0.1-alpha.28
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/LICENSE +202 -0
- package/README.md +70 -0
- package/dist/ChatInput.vue_vue_type_script_setup_true_lang-DVCUwptr.js +554 -0
- package/dist/ChatService-LogwJNxh.js +9 -0
- package/dist/components/base/AgentMessage/AgentMessage.stories.d.ts +11 -0
- package/dist/components/base/AgentMessage/AgentMessage.stories.d.ts.map +1 -0
- package/dist/components/base/AgentMessage/AgentMessage.vue.d.ts +20 -0
- package/dist/components/base/AgentMessage/AgentMessage.vue.d.ts.map +1 -0
- package/dist/components/base/AgentMessage/index.d.ts +2 -0
- package/dist/components/base/AgentMessage/index.d.ts.map +1 -0
- package/dist/components/base/ChatConversationLayout/ChatConversationLayout.stories.d.ts +10 -0
- package/dist/components/base/ChatConversationLayout/ChatConversationLayout.stories.d.ts.map +1 -0
- package/dist/components/base/ChatConversationLayout/ChatConversationLayout.vue.d.ts +30 -0
- package/dist/components/base/ChatConversationLayout/ChatConversationLayout.vue.d.ts.map +1 -0
- package/dist/components/base/ChatConversationLayout/index.d.ts +3 -0
- package/dist/components/base/ChatConversationLayout/index.d.ts.map +1 -0
- package/dist/components/base/ChatConversationLayout/types.d.ts +14 -0
- package/dist/components/base/ChatConversationLayout/types.d.ts.map +1 -0
- package/dist/components/base/PromptActionButton/PromptActionButton.stories.d.ts +9 -0
- package/dist/components/base/PromptActionButton/PromptActionButton.stories.d.ts.map +1 -0
- package/dist/components/base/PromptActionButton/PromptActionButton.vue.d.ts +24 -0
- package/dist/components/base/PromptActionButton/PromptActionButton.vue.d.ts.map +1 -0
- package/dist/components/base/PromptActionButton/index.d.ts +2 -0
- package/dist/components/base/PromptActionButton/index.d.ts.map +1 -0
- package/dist/components/base/PromptInput/PromptInput.stories.d.ts +10 -0
- package/dist/components/base/PromptInput/PromptInput.stories.d.ts.map +1 -0
- package/dist/components/base/PromptInput/PromptInput.vue.d.ts +46 -0
- package/dist/components/base/PromptInput/PromptInput.vue.d.ts.map +1 -0
- package/dist/components/base/PromptInput/index.d.ts +2 -0
- package/dist/components/base/PromptInput/index.d.ts.map +1 -0
- package/dist/components/base/PromptInputDisclaimer/PromptInputDisclaimer.stories.d.ts +9 -0
- package/dist/components/base/PromptInputDisclaimer/PromptInputDisclaimer.stories.d.ts.map +1 -0
- package/dist/components/base/PromptInputDisclaimer/PromptInputDisclaimer.vue.d.ts +17 -0
- package/dist/components/base/PromptInputDisclaimer/PromptInputDisclaimer.vue.d.ts.map +1 -0
- package/dist/components/base/PromptInputDisclaimer/index.d.ts +2 -0
- package/dist/components/base/PromptInputDisclaimer/index.d.ts.map +1 -0
- package/dist/components/base/UserMessage/UserMessage.stories.d.ts +10 -0
- package/dist/components/base/UserMessage/UserMessage.stories.d.ts.map +1 -0
- package/dist/components/base/UserMessage/UserMessage.vue.d.ts +15 -0
- package/dist/components/base/UserMessage/UserMessage.vue.d.ts.map +1 -0
- package/dist/components/base/UserMessage/index.d.ts +3 -0
- package/dist/components/base/UserMessage/index.d.ts.map +1 -0
- package/dist/components/base/UserMessage/types.d.ts +8 -0
- package/dist/components/base/UserMessage/types.d.ts.map +1 -0
- package/dist/components/base/icons/SendIcon.vue.d.ts +4 -0
- package/dist/components/base/icons/SendIcon.vue.d.ts.map +1 -0
- package/dist/components/base/icons/index.d.ts +2 -0
- package/dist/components/base/icons/index.d.ts.map +1 -0
- package/dist/components/base/index.d.ts +9 -0
- package/dist/components/base/index.d.ts.map +1 -0
- package/dist/components/composed/ChatConversation/ChatConversation.stories.d.ts +16 -0
- package/dist/components/composed/ChatConversation/ChatConversation.stories.d.ts.map +1 -0
- package/dist/components/composed/ChatConversation/ChatConversation.vue.d.ts +45 -0
- package/dist/components/composed/ChatConversation/ChatConversation.vue.d.ts.map +1 -0
- package/dist/components/composed/ChatConversation/index.d.ts +3 -0
- package/dist/components/composed/ChatConversation/index.d.ts.map +1 -0
- package/dist/components/composed/ChatConversation/types.d.ts +13 -0
- package/dist/components/composed/ChatConversation/types.d.ts.map +1 -0
- package/dist/components/composed/ChatInput/ChatInput.stories.d.ts +13 -0
- package/dist/components/composed/ChatInput/ChatInput.stories.d.ts.map +1 -0
- package/dist/components/composed/ChatInput/ChatInput.vue.d.ts +52 -0
- package/dist/components/composed/ChatInput/ChatInput.vue.d.ts.map +1 -0
- package/dist/components/composed/ChatInput/index.d.ts +2 -0
- package/dist/components/composed/ChatInput/index.d.ts.map +1 -0
- package/dist/components/composed/index.d.ts +4 -0
- package/dist/components/composed/index.d.ts.map +1 -0
- package/dist/components/index.d.ts +5 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +11 -0
- package/dist/composables/index.d.ts +5 -0
- package/dist/composables/index.d.ts.map +1 -0
- package/dist/composables/index.js +9 -0
- package/dist/composables/types.d.ts +31 -0
- package/dist/composables/types.d.ts.map +1 -0
- package/dist/composables/useChat.d.ts +19 -0
- package/dist/composables/useChat.d.ts.map +1 -0
- package/dist/composables/useChatKitLabels.d.ts +42 -0
- package/dist/composables/useChatKitLabels.d.ts.map +1 -0
- package/dist/handlers/index.d.ts +2 -0
- package/dist/handlers/index.d.ts.map +1 -0
- package/dist/handlers/index.js +4 -0
- package/dist/handlers/useMessageHandler.d.ts +27 -0
- package/dist/handlers/useMessageHandler.d.ts.map +1 -0
- package/dist/helpers/index.d.ts +2 -0
- package/dist/helpers/index.d.ts.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/services/ChatService.d.ts +42 -0
- package/dist/services/ChatService.d.ts.map +1 -0
- package/dist/services/MockChatService.d.ts +10 -0
- package/dist/services/MockChatService.d.ts.map +1 -0
- package/dist/services/index.d.ts +4 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +34 -0
- package/dist/services/types.d.ts +34 -0
- package/dist/services/types.d.ts.map +1 -0
- package/dist/test-setup.d.ts +6 -0
- package/dist/test-setup.d.ts.map +1 -0
- package/dist/types.d.ts +22 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/useChat-CtN_iBTc.js +5 -0
- package/dist/useChatKitLabels-Bi0szl2l.js +18 -0
- package/dist/useMessageHandler-BdcOcw0w.js +73 -0
- package/package.json +93 -0
|
@@ -0,0 +1,554 @@
|
|
|
1
|
+
import { createElementBlock, openBlock, createCommentVNode, createElementVNode, renderSlot, defineComponent, ref, onMounted, nextTick, onUnmounted, watch, Fragment, renderList, normalizeStyle, createBlock, unref, mergeProps, withCtx, useId, useTemplateRef, computed, withModifiers, toDisplayString, createTextVNode, useSlots, createVNode, createSlots, normalizeProps, guardReactiveProps } from "vue";
|
|
2
|
+
import { u as useChatKitLabels } from "./useChatKitLabels-Bi0szl2l.js";
|
|
3
|
+
import { UiIconButton, UiAvatar, UiAvatarImage, UiAvatarFallback } from "@aleph-alpha/ui-library";
|
|
4
|
+
const _export_sfc = (sfc, props) => {
|
|
5
|
+
const target = sfc.__vccOpts || sfc;
|
|
6
|
+
for (const [key, val] of props) {
|
|
7
|
+
target[key] = val;
|
|
8
|
+
}
|
|
9
|
+
return target;
|
|
10
|
+
};
|
|
11
|
+
const _sfc_main$8 = {};
|
|
12
|
+
const _hoisted_1$5 = { class: "flex w-full items-start gap-2" };
|
|
13
|
+
const _hoisted_2$3 = {
|
|
14
|
+
key: 0,
|
|
15
|
+
class: "flex flex-shrink-0 items-center justify-center"
|
|
16
|
+
};
|
|
17
|
+
const _hoisted_3$2 = { class: "text-core-content-primary flex min-w-0 flex-1 flex-col gap-2" };
|
|
18
|
+
const _hoisted_4$1 = {
|
|
19
|
+
key: 0,
|
|
20
|
+
class: "text-sm font-bold"
|
|
21
|
+
};
|
|
22
|
+
const _hoisted_5$1 = {
|
|
23
|
+
key: 1,
|
|
24
|
+
class: "flex items-center"
|
|
25
|
+
};
|
|
26
|
+
function _sfc_render$1(_ctx, _cache) {
|
|
27
|
+
return openBlock(), createElementBlock("div", _hoisted_1$5, [
|
|
28
|
+
_ctx.$slots.icon ? (openBlock(), createElementBlock("div", _hoisted_2$3, [
|
|
29
|
+
renderSlot(_ctx.$slots, "icon")
|
|
30
|
+
])) : createCommentVNode("", true),
|
|
31
|
+
createElementVNode("div", _hoisted_3$2, [
|
|
32
|
+
_ctx.$slots.header ? (openBlock(), createElementBlock("span", _hoisted_4$1, [
|
|
33
|
+
renderSlot(_ctx.$slots, "header")
|
|
34
|
+
])) : createCommentVNode("", true),
|
|
35
|
+
createElementVNode("div", null, [
|
|
36
|
+
renderSlot(_ctx.$slots, "default")
|
|
37
|
+
]),
|
|
38
|
+
_ctx.$slots.footer ? (openBlock(), createElementBlock("div", _hoisted_5$1, [
|
|
39
|
+
renderSlot(_ctx.$slots, "footer")
|
|
40
|
+
])) : createCommentVNode("", true)
|
|
41
|
+
])
|
|
42
|
+
]);
|
|
43
|
+
}
|
|
44
|
+
const AgentMessage = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["render", _sfc_render$1]]);
|
|
45
|
+
const _hoisted_1$4 = ["data-message-row"];
|
|
46
|
+
const _hoisted_2$2 = {
|
|
47
|
+
key: 0,
|
|
48
|
+
class: "flex justify-end"
|
|
49
|
+
};
|
|
50
|
+
const _hoisted_3$1 = {
|
|
51
|
+
key: 1,
|
|
52
|
+
class: "flex justify-start"
|
|
53
|
+
};
|
|
54
|
+
const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
55
|
+
__name: "ChatConversationLayout",
|
|
56
|
+
props: {
|
|
57
|
+
messages: {}
|
|
58
|
+
},
|
|
59
|
+
setup(__props) {
|
|
60
|
+
const props = __props;
|
|
61
|
+
const scrollContainerRef = ref(null);
|
|
62
|
+
const containerHeight = ref(0);
|
|
63
|
+
const isAutoScrollEnabled = ref(true);
|
|
64
|
+
const hasBottomSpacer = ref(false);
|
|
65
|
+
const spacerHeight = ref(0);
|
|
66
|
+
let resizeObserver = null;
|
|
67
|
+
onMounted(() => {
|
|
68
|
+
const container = scrollContainerRef.value;
|
|
69
|
+
if (container) {
|
|
70
|
+
containerHeight.value = container.clientHeight;
|
|
71
|
+
resizeObserver = new ResizeObserver((entries) => {
|
|
72
|
+
for (const entry of entries) {
|
|
73
|
+
containerHeight.value = entry.contentRect.height;
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
resizeObserver.observe(container);
|
|
77
|
+
nextTick(() => {
|
|
78
|
+
container.scrollTop = container.scrollHeight;
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
onUnmounted(() => {
|
|
83
|
+
resizeObserver?.disconnect();
|
|
84
|
+
});
|
|
85
|
+
function isFollowingContent() {
|
|
86
|
+
const container = scrollContainerRef.value;
|
|
87
|
+
if (!container) return true;
|
|
88
|
+
const rows = container.querySelectorAll("[data-message-row]");
|
|
89
|
+
const lastRow = rows[rows.length - 1];
|
|
90
|
+
if (!lastRow) return true;
|
|
91
|
+
const lastRowBottom = lastRow.offsetTop + lastRow.offsetHeight;
|
|
92
|
+
const viewportBottom = container.scrollTop + container.clientHeight;
|
|
93
|
+
return viewportBottom >= lastRowBottom - 100;
|
|
94
|
+
}
|
|
95
|
+
function handleScroll() {
|
|
96
|
+
isAutoScrollEnabled.value = isFollowingContent();
|
|
97
|
+
}
|
|
98
|
+
function updateSpacerHeight() {
|
|
99
|
+
const container = scrollContainerRef.value;
|
|
100
|
+
if (!container || !hasBottomSpacer.value) {
|
|
101
|
+
spacerHeight.value = 0;
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
const userRows = container.querySelectorAll('[data-message-row="user"]');
|
|
105
|
+
const lastUserRow = userRows[userRows.length - 1];
|
|
106
|
+
if (!lastUserRow) {
|
|
107
|
+
spacerHeight.value = 0;
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
const rows = container.querySelectorAll("[data-message-row]");
|
|
111
|
+
const lastRow = rows[rows.length - 1];
|
|
112
|
+
if (!lastRow) {
|
|
113
|
+
spacerHeight.value = 0;
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
const lastUserTop = lastUserRow.offsetTop;
|
|
117
|
+
const lastRowBottom = lastRow.offsetTop + lastRow.offsetHeight;
|
|
118
|
+
const contentFromUserToEnd = lastRowBottom - lastUserTop;
|
|
119
|
+
spacerHeight.value = Math.max(0, containerHeight.value - contentFromUserToEnd);
|
|
120
|
+
}
|
|
121
|
+
function scrollUserMessageToTop() {
|
|
122
|
+
const container = scrollContainerRef.value;
|
|
123
|
+
if (!container) return;
|
|
124
|
+
hasBottomSpacer.value = true;
|
|
125
|
+
spacerHeight.value = containerHeight.value;
|
|
126
|
+
nextTick(() => {
|
|
127
|
+
const userRows = container.querySelectorAll('[data-message-row="user"]');
|
|
128
|
+
const lastUserRow = userRows[userRows.length - 1];
|
|
129
|
+
if (lastUserRow) {
|
|
130
|
+
lastUserRow.scrollIntoView({ behavior: "smooth", block: "start" });
|
|
131
|
+
}
|
|
132
|
+
isAutoScrollEnabled.value = true;
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
function scrollToEndOfContent() {
|
|
136
|
+
const container = scrollContainerRef.value;
|
|
137
|
+
if (!container || !isAutoScrollEnabled.value) return;
|
|
138
|
+
const rows = container.querySelectorAll("[data-message-row]");
|
|
139
|
+
const lastRow = rows[rows.length - 1];
|
|
140
|
+
if (!lastRow) return;
|
|
141
|
+
const lastRowBottom = lastRow.offsetTop + lastRow.offsetHeight;
|
|
142
|
+
const viewportBottom = container.scrollTop + container.clientHeight;
|
|
143
|
+
if (lastRowBottom > viewportBottom) {
|
|
144
|
+
container.scrollTop = lastRowBottom - container.clientHeight;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
watch(
|
|
148
|
+
() => props.messages.length,
|
|
149
|
+
(newLen, oldLen) => {
|
|
150
|
+
if (newLen <= (oldLen ?? 0)) return;
|
|
151
|
+
const lastMessage = props.messages[newLen - 1];
|
|
152
|
+
if (lastMessage?.role === "user") {
|
|
153
|
+
nextTick(() => scrollUserMessageToTop());
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
);
|
|
157
|
+
watch(
|
|
158
|
+
() => props.messages,
|
|
159
|
+
() => {
|
|
160
|
+
if (props.messages.length === 0) return;
|
|
161
|
+
const lastMessage = props.messages[props.messages.length - 1];
|
|
162
|
+
if (lastMessage && lastMessage.role !== "user") {
|
|
163
|
+
nextTick(() => {
|
|
164
|
+
updateSpacerHeight();
|
|
165
|
+
if (isAutoScrollEnabled.value) {
|
|
166
|
+
scrollToEndOfContent();
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
},
|
|
171
|
+
{ deep: true }
|
|
172
|
+
);
|
|
173
|
+
return (_ctx, _cache) => {
|
|
174
|
+
return openBlock(), createElementBlock("div", {
|
|
175
|
+
ref_key: "scrollContainerRef",
|
|
176
|
+
ref: scrollContainerRef,
|
|
177
|
+
class: "flex flex-col gap-4 overflow-y-auto",
|
|
178
|
+
onScroll: handleScroll
|
|
179
|
+
}, [
|
|
180
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(__props.messages, (message, index) => {
|
|
181
|
+
return openBlock(), createElementBlock("div", {
|
|
182
|
+
key: index,
|
|
183
|
+
"data-message-row": message.role
|
|
184
|
+
}, [
|
|
185
|
+
message.role === "user" ? (openBlock(), createElementBlock("div", _hoisted_2$2, [
|
|
186
|
+
renderSlot(_ctx.$slots, "user-message", { message })
|
|
187
|
+
])) : (openBlock(), createElementBlock("div", _hoisted_3$1, [
|
|
188
|
+
renderSlot(_ctx.$slots, "agent-message", { message })
|
|
189
|
+
]))
|
|
190
|
+
], 8, _hoisted_1$4);
|
|
191
|
+
}), 128)),
|
|
192
|
+
hasBottomSpacer.value ? (openBlock(), createElementBlock("div", {
|
|
193
|
+
key: 0,
|
|
194
|
+
"aria-hidden": "true",
|
|
195
|
+
style: normalizeStyle({ minHeight: `${spacerHeight.value}px` })
|
|
196
|
+
}, null, 4)) : createCommentVNode("", true)
|
|
197
|
+
], 544);
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
});
|
|
201
|
+
const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
202
|
+
__name: "PromptActionButton",
|
|
203
|
+
props: {
|
|
204
|
+
ariaLabel: {},
|
|
205
|
+
disabled: { type: Boolean, default: false },
|
|
206
|
+
loading: { type: Boolean, default: false },
|
|
207
|
+
type: { default: "button" }
|
|
208
|
+
},
|
|
209
|
+
setup(__props) {
|
|
210
|
+
return (_ctx, _cache) => {
|
|
211
|
+
return openBlock(), createBlock(unref(UiIconButton), mergeProps({ ariaLabel: __props.ariaLabel }, {
|
|
212
|
+
type: __props.type,
|
|
213
|
+
disabled: __props.disabled,
|
|
214
|
+
loading: __props.loading,
|
|
215
|
+
class: "!bg-brand-bg-brand hover:!bg-brand-bg-brand-hover !text-brand-content-default !rounded-md"
|
|
216
|
+
}), {
|
|
217
|
+
default: withCtx(() => [
|
|
218
|
+
renderSlot(_ctx.$slots, "default")
|
|
219
|
+
]),
|
|
220
|
+
_: 3
|
|
221
|
+
}, 16, ["type", "disabled", "loading"]);
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
const _hoisted_1$3 = { class: "flex flex-col gap-2" };
|
|
226
|
+
const _hoisted_2$1 = ["for"];
|
|
227
|
+
const _hoisted_3 = ["id", "value", "placeholder", "disabled"];
|
|
228
|
+
const _hoisted_4 = { class: "flex items-center justify-between" };
|
|
229
|
+
const _hoisted_5 = { key: 0 };
|
|
230
|
+
const _hoisted_6 = { key: 1 };
|
|
231
|
+
const _hoisted_7 = { class: "ml-auto" };
|
|
232
|
+
const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
233
|
+
__name: "PromptInput",
|
|
234
|
+
props: {
|
|
235
|
+
modelValue: { default: "" },
|
|
236
|
+
placeholder: { default: void 0 },
|
|
237
|
+
disabled: { type: Boolean, default: false },
|
|
238
|
+
maxHeight: { default: 200 },
|
|
239
|
+
ariaLabel: { default: void 0 }
|
|
240
|
+
},
|
|
241
|
+
emits: ["update:modelValue", "submit"],
|
|
242
|
+
setup(__props, { expose: __expose, emit: __emit }) {
|
|
243
|
+
const props = __props;
|
|
244
|
+
const emit = __emit;
|
|
245
|
+
const textareaId = useId();
|
|
246
|
+
const textareaRef = useTemplateRef("textareaRef");
|
|
247
|
+
const isEmpty = computed(() => props.modelValue.trim() === "");
|
|
248
|
+
const isSubmitDisabled = computed(() => props.disabled || isEmpty.value);
|
|
249
|
+
function adjustHeight() {
|
|
250
|
+
const el = textareaRef.value;
|
|
251
|
+
if (!el) return;
|
|
252
|
+
el.style.height = "auto";
|
|
253
|
+
el.style.height = `${Math.min(el.scrollHeight, props.maxHeight)}px`;
|
|
254
|
+
}
|
|
255
|
+
function onInput(event) {
|
|
256
|
+
const value = event.target.value;
|
|
257
|
+
emit("update:modelValue", value);
|
|
258
|
+
adjustHeight();
|
|
259
|
+
}
|
|
260
|
+
function submit() {
|
|
261
|
+
if (isSubmitDisabled.value) return;
|
|
262
|
+
const trimmed = props.modelValue.trim();
|
|
263
|
+
if (!trimmed) return;
|
|
264
|
+
emit("submit", trimmed);
|
|
265
|
+
}
|
|
266
|
+
function onKeydown(event) {
|
|
267
|
+
if (event.key === "Enter" && !event.shiftKey) {
|
|
268
|
+
event.preventDefault();
|
|
269
|
+
submit();
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
function focus() {
|
|
273
|
+
textareaRef.value?.focus();
|
|
274
|
+
}
|
|
275
|
+
watch(
|
|
276
|
+
() => props.modelValue,
|
|
277
|
+
() => {
|
|
278
|
+
nextTick(adjustHeight);
|
|
279
|
+
}
|
|
280
|
+
);
|
|
281
|
+
__expose({ focus, submit });
|
|
282
|
+
return (_ctx, _cache) => {
|
|
283
|
+
return openBlock(), createElementBlock("div", _hoisted_1$3, [
|
|
284
|
+
createElementVNode("form", {
|
|
285
|
+
class: "border-core-border-default bg-core-bg-primary [&:has(textarea:focus)]:ring-core-border-focus flex flex-col gap-3 rounded-xl border px-4 pt-3 pb-3 shadow-sm [&:has(textarea:focus)]:ring-2",
|
|
286
|
+
onSubmit: withModifiers(submit, ["prevent"])
|
|
287
|
+
}, [
|
|
288
|
+
__props.ariaLabel ? (openBlock(), createElementBlock("label", {
|
|
289
|
+
key: 0,
|
|
290
|
+
for: unref(textareaId),
|
|
291
|
+
class: "sr-only"
|
|
292
|
+
}, toDisplayString(__props.ariaLabel), 9, _hoisted_2$1)) : createCommentVNode("", true),
|
|
293
|
+
createElementVNode("textarea", {
|
|
294
|
+
id: unref(textareaId),
|
|
295
|
+
ref_key: "textareaRef",
|
|
296
|
+
ref: textareaRef,
|
|
297
|
+
rows: "2",
|
|
298
|
+
value: __props.modelValue,
|
|
299
|
+
placeholder: __props.placeholder,
|
|
300
|
+
disabled: __props.disabled,
|
|
301
|
+
class: "text-core-content-primary placeholder-core-content-placeholder min-h-10 w-full resize-none bg-transparent text-sm leading-5 focus:outline-none",
|
|
302
|
+
onInput,
|
|
303
|
+
onKeydown
|
|
304
|
+
}, null, 40, _hoisted_3),
|
|
305
|
+
createElementVNode("div", _hoisted_4, [
|
|
306
|
+
_ctx.$slots["toolbar-left"] ? (openBlock(), createElementBlock("div", _hoisted_5, [
|
|
307
|
+
renderSlot(_ctx.$slots, "toolbar-left")
|
|
308
|
+
])) : (openBlock(), createElementBlock("div", _hoisted_6)),
|
|
309
|
+
createElementVNode("div", _hoisted_7, [
|
|
310
|
+
renderSlot(_ctx.$slots, "toolbar-right", {
|
|
311
|
+
submit,
|
|
312
|
+
disabled: isSubmitDisabled.value,
|
|
313
|
+
isEmpty: isEmpty.value
|
|
314
|
+
})
|
|
315
|
+
])
|
|
316
|
+
])
|
|
317
|
+
], 32),
|
|
318
|
+
renderSlot(_ctx.$slots, "footer")
|
|
319
|
+
]);
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
});
|
|
323
|
+
const _hoisted_1$2 = {
|
|
324
|
+
key: 0,
|
|
325
|
+
class: "text-core-content-tertiary text-center text-xs leading-3.5"
|
|
326
|
+
};
|
|
327
|
+
const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
328
|
+
__name: "PromptInputDisclaimer",
|
|
329
|
+
props: {
|
|
330
|
+
text: {}
|
|
331
|
+
},
|
|
332
|
+
setup(__props) {
|
|
333
|
+
return (_ctx, _cache) => {
|
|
334
|
+
return _ctx.$slots.default || __props.text ? (openBlock(), createElementBlock("p", _hoisted_1$2, [
|
|
335
|
+
renderSlot(_ctx.$slots, "default", {}, () => [
|
|
336
|
+
createTextVNode(toDisplayString(__props.text), 1)
|
|
337
|
+
])
|
|
338
|
+
])) : createCommentVNode("", true);
|
|
339
|
+
};
|
|
340
|
+
}
|
|
341
|
+
});
|
|
342
|
+
const _hoisted_1$1 = { class: "bg-background-surface-secondary inline-flex max-w-[600px] flex-col items-end justify-start gap-4 rounded-tl-xl rounded-br-xl rounded-bl-xl px-6 py-3" };
|
|
343
|
+
const _hoisted_2 = { class: "text-core-content-primary justify-start self-stretch font-['Inter'] text-base leading-6 font-normal" };
|
|
344
|
+
const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
345
|
+
__name: "UserMessage",
|
|
346
|
+
props: {
|
|
347
|
+
message: {}
|
|
348
|
+
},
|
|
349
|
+
setup(__props) {
|
|
350
|
+
return (_ctx, _cache) => {
|
|
351
|
+
return openBlock(), createElementBlock("div", _hoisted_1$1, [
|
|
352
|
+
createElementVNode("div", _hoisted_2, [
|
|
353
|
+
renderSlot(_ctx.$slots, "default", {}, () => [
|
|
354
|
+
createTextVNode(toDisplayString(__props.message), 1)
|
|
355
|
+
])
|
|
356
|
+
])
|
|
357
|
+
]);
|
|
358
|
+
};
|
|
359
|
+
}
|
|
360
|
+
});
|
|
361
|
+
const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
362
|
+
__name: "ChatConversation",
|
|
363
|
+
props: {
|
|
364
|
+
messages: {},
|
|
365
|
+
agentAvatarImage: { default: "" },
|
|
366
|
+
agentAvatarFallback: { default: "" }
|
|
367
|
+
},
|
|
368
|
+
setup(__props) {
|
|
369
|
+
const props = __props;
|
|
370
|
+
const slots = useSlots();
|
|
371
|
+
const labels = useChatKitLabels();
|
|
372
|
+
const hasIcon = computed(
|
|
373
|
+
() => Boolean(props.agentAvatarImage) || Boolean(props.agentAvatarFallback) || Boolean(slots["agent-message-icon"])
|
|
374
|
+
);
|
|
375
|
+
return (_ctx, _cache) => {
|
|
376
|
+
return openBlock(), createBlock(_sfc_main$7, { messages: __props.messages }, {
|
|
377
|
+
"user-message": withCtx(({ message }) => [
|
|
378
|
+
renderSlot(_ctx.$slots, "user-message", { message }, () => [
|
|
379
|
+
createVNode(_sfc_main$3, {
|
|
380
|
+
message: message.content
|
|
381
|
+
}, {
|
|
382
|
+
default: withCtx(() => [
|
|
383
|
+
renderSlot(_ctx.$slots, "user-message-content", { message }, () => [
|
|
384
|
+
createTextVNode(toDisplayString(message.content), 1)
|
|
385
|
+
])
|
|
386
|
+
]),
|
|
387
|
+
_: 2
|
|
388
|
+
}, 1032, ["message"])
|
|
389
|
+
])
|
|
390
|
+
]),
|
|
391
|
+
"agent-message": withCtx(({ message }) => [
|
|
392
|
+
renderSlot(_ctx.$slots, "agent-message", { message }, () => [
|
|
393
|
+
createVNode(AgentMessage, null, createSlots({
|
|
394
|
+
default: withCtx(() => [
|
|
395
|
+
renderSlot(_ctx.$slots, "agent-message-content", { message }, () => [
|
|
396
|
+
createTextVNode(toDisplayString(message.content), 1)
|
|
397
|
+
])
|
|
398
|
+
]),
|
|
399
|
+
_: 2
|
|
400
|
+
}, [
|
|
401
|
+
hasIcon.value ? {
|
|
402
|
+
name: "icon",
|
|
403
|
+
fn: withCtx(() => [
|
|
404
|
+
renderSlot(_ctx.$slots, "agent-message-icon", { message }, () => [
|
|
405
|
+
createVNode(unref(UiAvatar), null, {
|
|
406
|
+
default: withCtx(() => [
|
|
407
|
+
__props.agentAvatarImage ? (openBlock(), createBlock(unref(UiAvatarImage), {
|
|
408
|
+
key: 0,
|
|
409
|
+
src: __props.agentAvatarImage,
|
|
410
|
+
alt: unref(labels).agentAvatarAlt
|
|
411
|
+
}, null, 8, ["src", "alt"])) : createCommentVNode("", true),
|
|
412
|
+
__props.agentAvatarFallback ? (openBlock(), createBlock(unref(UiAvatarFallback), { key: 1 }, {
|
|
413
|
+
default: withCtx(() => [
|
|
414
|
+
createTextVNode(toDisplayString(__props.agentAvatarFallback), 1)
|
|
415
|
+
]),
|
|
416
|
+
_: 1
|
|
417
|
+
})) : createCommentVNode("", true)
|
|
418
|
+
]),
|
|
419
|
+
_: 1
|
|
420
|
+
})
|
|
421
|
+
])
|
|
422
|
+
]),
|
|
423
|
+
key: "0"
|
|
424
|
+
} : void 0,
|
|
425
|
+
_ctx.$slots["agent-message-header"] ? {
|
|
426
|
+
name: "header",
|
|
427
|
+
fn: withCtx(() => [
|
|
428
|
+
renderSlot(_ctx.$slots, "agent-message-header", { message })
|
|
429
|
+
]),
|
|
430
|
+
key: "1"
|
|
431
|
+
} : void 0,
|
|
432
|
+
_ctx.$slots["agent-message-footer"] ? {
|
|
433
|
+
name: "footer",
|
|
434
|
+
fn: withCtx(() => [
|
|
435
|
+
renderSlot(_ctx.$slots, "agent-message-footer", { message })
|
|
436
|
+
]),
|
|
437
|
+
key: "2"
|
|
438
|
+
} : void 0
|
|
439
|
+
]), 1024)
|
|
440
|
+
])
|
|
441
|
+
]),
|
|
442
|
+
_: 3
|
|
443
|
+
}, 8, ["messages"]);
|
|
444
|
+
};
|
|
445
|
+
}
|
|
446
|
+
});
|
|
447
|
+
const _sfc_main$1 = {};
|
|
448
|
+
const _hoisted_1 = {
|
|
449
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
450
|
+
width: "16",
|
|
451
|
+
height: "16",
|
|
452
|
+
viewBox: "0 0 24 24",
|
|
453
|
+
fill: "none",
|
|
454
|
+
stroke: "currentColor",
|
|
455
|
+
"stroke-width": "2",
|
|
456
|
+
"stroke-linecap": "round",
|
|
457
|
+
"stroke-linejoin": "round"
|
|
458
|
+
};
|
|
459
|
+
function _sfc_render(_ctx, _cache) {
|
|
460
|
+
return openBlock(), createElementBlock("svg", _hoisted_1, [..._cache[0] || (_cache[0] = [
|
|
461
|
+
createElementVNode("path", { d: "M3.714 3.048a.498.498 0 0 0-.683.627l2.843 7.627a2 2 0 0 1 0 1.396l-2.842 7.627a.498.498 0 0 0 .682.627l18-8.5a.5.5 0 0 0 0-.904z" }, null, -1),
|
|
462
|
+
createElementVNode("path", { d: "M6 12h16" }, null, -1)
|
|
463
|
+
])]);
|
|
464
|
+
}
|
|
465
|
+
const SendIcon = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render]]);
|
|
466
|
+
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
467
|
+
__name: "ChatInput",
|
|
468
|
+
props: {
|
|
469
|
+
modelValue: { default: "" },
|
|
470
|
+
placeholder: { default: "Ask me anything" },
|
|
471
|
+
disabled: { type: Boolean, default: false },
|
|
472
|
+
loading: { type: Boolean, default: false },
|
|
473
|
+
maxHeight: { default: 200 },
|
|
474
|
+
ariaLabel: { default: "Chat message input" },
|
|
475
|
+
disclaimer: { default: void 0 }
|
|
476
|
+
},
|
|
477
|
+
emits: ["update:modelValue", "submit"],
|
|
478
|
+
setup(__props, { expose: __expose, emit: __emit }) {
|
|
479
|
+
const props = __props;
|
|
480
|
+
const emit = __emit;
|
|
481
|
+
const promptInputRef = useTemplateRef("promptInputRef");
|
|
482
|
+
const isDisabled = computed(() => props.disabled || props.loading);
|
|
483
|
+
function onUpdateModelValue(value) {
|
|
484
|
+
emit("update:modelValue", value);
|
|
485
|
+
}
|
|
486
|
+
function onSubmit(value) {
|
|
487
|
+
emit("submit", value);
|
|
488
|
+
}
|
|
489
|
+
function focus() {
|
|
490
|
+
promptInputRef.value?.focus();
|
|
491
|
+
}
|
|
492
|
+
function submit() {
|
|
493
|
+
promptInputRef.value?.submit();
|
|
494
|
+
}
|
|
495
|
+
__expose({ focus, submit });
|
|
496
|
+
return (_ctx, _cache) => {
|
|
497
|
+
return openBlock(), createBlock(_sfc_main$5, {
|
|
498
|
+
ref_key: "promptInputRef",
|
|
499
|
+
ref: promptInputRef,
|
|
500
|
+
"model-value": __props.modelValue,
|
|
501
|
+
placeholder: __props.placeholder,
|
|
502
|
+
disabled: isDisabled.value,
|
|
503
|
+
"max-height": __props.maxHeight,
|
|
504
|
+
"aria-label": __props.ariaLabel,
|
|
505
|
+
"onUpdate:modelValue": onUpdateModelValue,
|
|
506
|
+
onSubmit
|
|
507
|
+
}, createSlots({
|
|
508
|
+
"toolbar-right": withCtx((scope) => [
|
|
509
|
+
renderSlot(_ctx.$slots, "toolbar-right", normalizeProps(guardReactiveProps(scope)), () => [
|
|
510
|
+
createVNode(_sfc_main$6, mergeProps({ ariaLabel: "Send message" }, {
|
|
511
|
+
type: "submit",
|
|
512
|
+
disabled: scope.disabled,
|
|
513
|
+
loading: __props.loading
|
|
514
|
+
}), {
|
|
515
|
+
default: withCtx(() => [
|
|
516
|
+
renderSlot(_ctx.$slots, "send-icon", {}, () => [
|
|
517
|
+
createVNode(SendIcon)
|
|
518
|
+
])
|
|
519
|
+
]),
|
|
520
|
+
_: 3
|
|
521
|
+
}, 16, ["disabled", "loading"])
|
|
522
|
+
])
|
|
523
|
+
]),
|
|
524
|
+
footer: withCtx(() => [
|
|
525
|
+
renderSlot(_ctx.$slots, "footer", {}, () => [
|
|
526
|
+
__props.disclaimer ? (openBlock(), createBlock(_sfc_main$4, {
|
|
527
|
+
key: 0,
|
|
528
|
+
text: __props.disclaimer
|
|
529
|
+
}, null, 8, ["text"])) : createCommentVNode("", true)
|
|
530
|
+
])
|
|
531
|
+
]),
|
|
532
|
+
_: 2
|
|
533
|
+
}, [
|
|
534
|
+
_ctx.$slots["toolbar-left"] ? {
|
|
535
|
+
name: "toolbar-left",
|
|
536
|
+
fn: withCtx(() => [
|
|
537
|
+
renderSlot(_ctx.$slots, "toolbar-left")
|
|
538
|
+
]),
|
|
539
|
+
key: "0"
|
|
540
|
+
} : void 0
|
|
541
|
+
]), 1032, ["model-value", "placeholder", "disabled", "max-height", "aria-label"]);
|
|
542
|
+
};
|
|
543
|
+
}
|
|
544
|
+
});
|
|
545
|
+
export {
|
|
546
|
+
AgentMessage as A,
|
|
547
|
+
_sfc_main$2 as _,
|
|
548
|
+
_sfc_main$7 as a,
|
|
549
|
+
_sfc_main as b,
|
|
550
|
+
_sfc_main$6 as c,
|
|
551
|
+
_sfc_main$5 as d,
|
|
552
|
+
_sfc_main$4 as e,
|
|
553
|
+
_sfc_main$3 as f
|
|
554
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import AgentMessage from './AgentMessage.vue';
|
|
2
|
+
import type { Meta, StoryObj } from '@storybook/vue3-vite';
|
|
3
|
+
declare const meta: Meta<typeof AgentMessage>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof meta>;
|
|
6
|
+
export declare const Default: Story;
|
|
7
|
+
export declare const WithFooterActions: Story;
|
|
8
|
+
export declare const WithRichContent: Story;
|
|
9
|
+
export declare const WithCustomHeader: Story;
|
|
10
|
+
export declare const WithoutIcon: Story;
|
|
11
|
+
//# sourceMappingURL=AgentMessage.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentMessage.stories.d.ts","sourceRoot":"","sources":["../../../../src/components/base/AgentMessage/AgentMessage.stories.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAE3D,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,YAAY,CAInC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAcrB,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,KAkB/B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KA8B7B,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,KAkB9B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KASzB,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
declare var __VLS_1: {}, __VLS_3: {}, __VLS_5: {}, __VLS_7: {};
|
|
2
|
+
type __VLS_Slots = {} & {
|
|
3
|
+
icon?: (props: typeof __VLS_1) => any;
|
|
4
|
+
} & {
|
|
5
|
+
header?: (props: typeof __VLS_3) => any;
|
|
6
|
+
} & {
|
|
7
|
+
default?: (props: typeof __VLS_5) => any;
|
|
8
|
+
} & {
|
|
9
|
+
footer?: (props: typeof __VLS_7) => any;
|
|
10
|
+
};
|
|
11
|
+
declare const __VLS_base: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
12
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
13
|
+
declare const _default: typeof __VLS_export;
|
|
14
|
+
export default _default;
|
|
15
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
16
|
+
new (): {
|
|
17
|
+
$slots: S;
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=AgentMessage.vue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentMessage.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/base/AgentMessage/AgentMessage.vue"],"names":[],"mappings":"AA+EA,QAAA,IAAI,OAAO,IAAU,EAAE,OAAO,IAAU,EAAE,OAAO,IAAU,EAAE,OAAO,IAAW,CAAE;AACjF,KAAK,WAAW,GAAG,EAAE,GACnB;IAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,OAAO,KAAK,GAAG,CAAA;CAAE,GACzC;IAAE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,OAAO,KAAK,GAAG,CAAA;CAAE,GAC3C;IAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,OAAO,KAAK,GAAG,CAAA;CAAE,GAC5C;IAAE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,OAAO,KAAK,GAAG,CAAA;CAAE,CAAC;AAK9C,QAAA,MAAM,UAAU,+QACd,CAAC;AACH,QAAA,MAAM,YAAY,EAAS,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;wBACtD,OAAO,YAAY;AAAxC,wBAAyC;AACzC,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/base/AgentMessage/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/vue3-vite';
|
|
2
|
+
import type { DefineComponent } from 'vue';
|
|
3
|
+
declare const ChatConversationLayout: DefineComponent;
|
|
4
|
+
declare const meta: Meta<typeof ChatConversationLayout>;
|
|
5
|
+
export default meta;
|
|
6
|
+
type Story = StoryObj<typeof meta>;
|
|
7
|
+
export declare const Default: Story;
|
|
8
|
+
export declare const StreamingSimulation: Story;
|
|
9
|
+
export declare const Empty: Story;
|
|
10
|
+
//# sourceMappingURL=ChatConversationLayout.stories.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatConversationLayout.stories.d.ts","sourceRoot":"","sources":["../../../../src/components/base/ChatConversationLayout/ChatConversationLayout.stories.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,KAAK,CAAC;AAI3C,QAAA,MAAM,sBAAsB,EAAiD,eAAe,CAAC;AAoB7F,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,sBAAsB,CAU7C,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAqBrB,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,KA+EjC,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAcnB,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
declare const __VLS_export: <T extends {
|
|
2
|
+
role: string;
|
|
3
|
+
}>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
4
|
+
props: import("vue").PublicProps & __VLS_PrettifyLocal<{
|
|
5
|
+
messages: T[];
|
|
6
|
+
}> & (typeof globalThis extends {
|
|
7
|
+
__VLS_PROPS_FALLBACK: infer P;
|
|
8
|
+
} ? P : {});
|
|
9
|
+
expose: (exposed: {}) => void;
|
|
10
|
+
attrs: any;
|
|
11
|
+
slots: {
|
|
12
|
+
'user-message': (props: {
|
|
13
|
+
message: T;
|
|
14
|
+
}) => void;
|
|
15
|
+
'agent-message': (props: {
|
|
16
|
+
message: T;
|
|
17
|
+
}) => void;
|
|
18
|
+
};
|
|
19
|
+
emit: {};
|
|
20
|
+
}>) => import("vue").VNode & {
|
|
21
|
+
__ctx?: Awaited<typeof __VLS_setup>;
|
|
22
|
+
};
|
|
23
|
+
declare const _default: typeof __VLS_export;
|
|
24
|
+
export default _default;
|
|
25
|
+
type __VLS_PrettifyLocal<T> = (T extends any ? {
|
|
26
|
+
[K in keyof T]: T[K];
|
|
27
|
+
} : {
|
|
28
|
+
[K in keyof T as K]: T[K];
|
|
29
|
+
}) & {};
|
|
30
|
+
//# sourceMappingURL=ChatConversationLayout.vue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatConversationLayout.vue.d.ts","sourceRoot":"","sources":["../../../../src/components/base/ChatConversationLayout/ChatConversationLayout.vue"],"names":[],"mappings":"AA6LE,QAAA,MAAM,YAAY,GAAK,CAAC,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAClD,aAAa,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,EAC9D,YAAY,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC,EAC3G,gBAAgB,WAAW,CAAC,OAAO,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,EAClE;WA8OO,OAAO,KAAK,EAAE,WAAW,GAAG,mBAAmB;kBA5OzC,CAAC,EAAE;MA4OyD,GAAG,CAAC,OAAO,UAAU,SAAS;QAAE,oBAAoB,EAAE,MAAM,CAAC,CAAA;KAAE,GAAG,CAAC,GAAG,EAAE,CAAC;YAC1I,CAAC,OAAO,EAAE,EAAE,KAAK,IAAI;WACtB,GAAG;;wBAzOS,CAAC,KAAK,EAAE;YAAE,OAAO,EAAE,CAAC,CAAA;SAAE,KAAK,IAAI;yBAC9B,CAAC,KAAK,EAAE;YAAE,OAAO,EAAE,CAAC,CAAA;SAAE,KAAK,IAAI;;UA0O7C,EAAE;EAEL,KACQ,OAAO,KAAK,EAAE,KAAK,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC,OAAO,WAAW,CAAC,CAAA;CAAI,CAAC;wBACvD,OAAO,YAAY;AAAxC,wBAAyC;AACzC,KAAK,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAG,CAAC,GAAG,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/base/ChatConversationLayout/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACjF,YAAY,EAAE,2BAA2B,EAAE,MAAM,SAAS,CAAC"}
|