@apteva/apteva-kit 0.1.39 → 0.1.40

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/dist/index.js CHANGED
@@ -1290,21 +1290,50 @@ function Message({ message, onAction, enableWidgets, onWidgetRender }) {
1290
1290
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MarkdownContent, { content: text });
1291
1291
  }
1292
1292
  const parsed = parseWidgetsFromText(text);
1293
- if (parsed.segments.length === 0) {
1293
+ const cleanedText = parsed.segments.filter((seg) => seg.type === "text" && seg.content).map((seg) => seg.content).join("");
1294
+ if (!cleanedText.trim()) {
1294
1295
  return null;
1295
1296
  }
1296
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, { children: parsed.segments.map((segment, index) => {
1297
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MarkdownContent, { content: cleanedText });
1298
+ };
1299
+ const renderContentWithWidgets = () => {
1300
+ if (!enableWidgets || isUser || !message.content) {
1301
+ return null;
1302
+ }
1303
+ const parsed = parseWidgetsFromText(message.content);
1304
+ const elements = [];
1305
+ let textBuffer = "";
1306
+ parsed.segments.forEach((segment, index) => {
1297
1307
  if (segment.type === "text" && segment.content) {
1298
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MarkdownContent, { content: segment.content }, `text-${index}`);
1299
- }
1300
- if (segment.type === "widget" && segment.widget) {
1301
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "my-3", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, WidgetRenderer, { widget: segment.widget, onAction }) }, `widget-${index}`);
1302
- }
1303
- if (segment.type === "widget_pending" && segment.pendingType) {
1304
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "my-3", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, WidgetSkeleton, { type: segment.pendingType }) }, `pending-${index}`);
1308
+ textBuffer += segment.content;
1309
+ } else if (segment.type === "widget" && segment.widget) {
1310
+ if (textBuffer.trim()) {
1311
+ elements.push(
1312
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "apteva-message-bubble apteva-message-assistant", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "apteva-message-content-assistant", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MarkdownContent, { content: textBuffer }) }) }, `text-${index}`)
1313
+ );
1314
+ textBuffer = "";
1315
+ }
1316
+ elements.push(
1317
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "apteva-widget-standalone", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, WidgetRenderer, { widget: segment.widget, onAction }) }, `widget-${index}`)
1318
+ );
1319
+ } else if (segment.type === "widget_pending" && segment.pendingType) {
1320
+ if (textBuffer.trim()) {
1321
+ elements.push(
1322
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "apteva-message-bubble apteva-message-assistant", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "apteva-message-content-assistant", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MarkdownContent, { content: textBuffer }) }) }, `text-${index}`)
1323
+ );
1324
+ textBuffer = "";
1325
+ }
1326
+ elements.push(
1327
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "apteva-widget-standalone", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, WidgetSkeleton, { type: segment.pendingType }) }, `pending-${index}`)
1328
+ );
1305
1329
  }
1306
- return null;
1307
- }) });
1330
+ });
1331
+ if (textBuffer.trim()) {
1332
+ elements.push(
1333
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "apteva-message-bubble apteva-message-assistant", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "apteva-message-content-assistant", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MarkdownContent, { content: textBuffer }) }) }, "text-final")
1334
+ );
1335
+ }
1336
+ return elements.length > 0 ? elements : null;
1308
1337
  };
1309
1338
  const renderContent = () => {
1310
1339
  if (isUser) {
@@ -1356,7 +1385,15 @@ function Message({ message, onAction, enableWidgets, onWidgetRender }) {
1356
1385
  if (!isUser && contentSegments && contentSegments.length > 0) {
1357
1386
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "apteva-message-segmented", children: [
1358
1387
  renderSegmentedContent(),
1359
- message.widgets && message.widgets.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "apteva-message-widgets", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Widgets, { widgets: message.widgets, onAction, layout: "stack" }) }),
1388
+ message.widgets && message.widgets.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "apteva-widget-standalone", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Widgets, { widgets: message.widgets, onAction, layout: "stack" }) }),
1389
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "apteva-message-timestamp apteva-message-timestamp-assistant", suppressHydrationWarning: true, children: message.timestamp.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" }) })
1390
+ ] });
1391
+ }
1392
+ const widgetContent = renderContentWithWidgets();
1393
+ if (!isUser && enableWidgets && widgetContent) {
1394
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "apteva-message-segmented", children: [
1395
+ widgetContent,
1396
+ message.widgets && message.widgets.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "apteva-widget-standalone", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Widgets, { widgets: message.widgets, onAction, layout: "stack" }) }),
1360
1397
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "apteva-message-timestamp apteva-message-timestamp-assistant", suppressHydrationWarning: true, children: message.timestamp.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" }) })
1361
1398
  ] });
1362
1399
  }
@@ -1369,7 +1406,7 @@ function Message({ message, onAction, enableWidgets, onWidgetRender }) {
1369
1406
  ),
1370
1407
  children: [
1371
1408
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: isUser ? "apteva-message-content-user" : "apteva-message-content-assistant", children: renderContent() }),
1372
- message.widgets && message.widgets.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "apteva-message-widgets", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Widgets, { widgets: message.widgets, onAction, layout: "stack" }) }),
1409
+ message.widgets && message.widgets.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "apteva-widget-standalone", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Widgets, { widgets: message.widgets, onAction, layout: "stack" }) }),
1373
1410
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: cn("apteva-message-timestamp", isUser ? "apteva-message-timestamp-user" : "apteva-message-timestamp-assistant"), suppressHydrationWarning: true, children: message.timestamp.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" }) })
1374
1411
  ]
1375
1412
  }