@projectcor/maia-components 2.11.30 → 2.11.31-0

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.
@@ -0,0 +1,101 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
+ import { useEffect, useRef, useState } from 'react';
3
+ /**
4
+ * Hook que desacopla la cadencia de llegada del texto (stream SSE) de la
5
+ * cadencia de renderizado. Usa `requestAnimationFrame` para liberar chars
6
+ * a ritmo constante hacia el DOM, eliminando los "frenos" que se producen
7
+ * cuando el backend emite ráfagas de tokens.
8
+ *
9
+ * Cuando `enabled` pasa a false (fin de stream), el texto se completa al
10
+ * instante. Durante el streaming, el buffer se vacía dinámicamente apuntando
11
+ * al lag configurado.
12
+ */
13
+ export var useSmoothStreamText = function useSmoothStreamText(targetText, _ref) {
14
+ var enabled = _ref.enabled,
15
+ _ref$minCharsPerFrame = _ref.minCharsPerFrame,
16
+ minCharsPerFrame = _ref$minCharsPerFrame === void 0 ? 1 : _ref$minCharsPerFrame,
17
+ _ref$maxCharsPerFrame = _ref.maxCharsPerFrame,
18
+ maxCharsPerFrame = _ref$maxCharsPerFrame === void 0 ? 24 : _ref$maxCharsPerFrame,
19
+ _ref$targetLagMs = _ref.targetLagMs,
20
+ targetLagMs = _ref$targetLagMs === void 0 ? 120 : _ref$targetLagMs,
21
+ _ref$snapToWordBounda = _ref.snapToWordBoundary,
22
+ snapToWordBoundary = _ref$snapToWordBounda === void 0 ? false : _ref$snapToWordBounda;
23
+ var _useState = useState(function () {
24
+ return enabled ? '' : targetText;
25
+ }),
26
+ _useState2 = _slicedToArray(_useState, 2),
27
+ displayed = _useState2[0],
28
+ setDisplayed = _useState2[1];
29
+ var targetRef = useRef(targetText);
30
+ var displayedLenRef = useRef(displayed.length);
31
+ var rafRef = useRef(null);
32
+ var lastTickRef = useRef(0);
33
+ useEffect(function () {
34
+ targetRef.current = targetText;
35
+ if (!enabled) {
36
+ if (rafRef.current != null) {
37
+ cancelAnimationFrame(rafRef.current);
38
+ rafRef.current = null;
39
+ }
40
+ lastTickRef.current = 0;
41
+ // Sincronización síncrona vía ref para evitar stale closures en el
42
+ // valor del state `displayed`. Al terminar el streaming, mostramos el
43
+ // target completo de una sola vez.
44
+ if (displayedLenRef.current !== targetText.length) {
45
+ displayedLenRef.current = targetText.length;
46
+ setDisplayed(targetText);
47
+ }
48
+ return undefined;
49
+ }
50
+
51
+ // Si el target se achicó (reset / nuevo mensaje), resync hacia adelante
52
+ if (displayedLenRef.current > targetText.length) {
53
+ displayedLenRef.current = 0;
54
+ setDisplayed('');
55
+ }
56
+ if (rafRef.current != null) return undefined;
57
+ var _tick = function tick(now) {
58
+ var prev = lastTickRef.current;
59
+ var dt = prev ? Math.min(now - prev, 64) : 16;
60
+ lastTickRef.current = now;
61
+ var target = targetRef.current;
62
+ var currentLen = displayedLenRef.current;
63
+ var remaining = target.length - currentLen;
64
+ if (remaining <= 0) {
65
+ rafRef.current = null;
66
+ lastTickRef.current = 0;
67
+ return;
68
+ }
69
+
70
+ // Velocidad adaptativa: vaciar el buffer en ~targetLagMs.
71
+ var charsPerMs = remaining / targetLagMs;
72
+ var rawStep = Math.ceil(charsPerMs * dt);
73
+ var step = Math.max(minCharsPerFrame, Math.min(maxCharsPerFrame, rawStep));
74
+ var nextLen = Math.min(target.length, currentLen + step);
75
+ if (snapToWordBoundary && nextLen < target.length) {
76
+ // No cortar palabras a la mitad: retroceder al último separador
77
+ // si existe dentro del tramo que estamos liberando.
78
+ var slice = target.slice(currentLen, nextLen);
79
+ var lastBoundary = Math.max(slice.lastIndexOf(' '), slice.lastIndexOf('\n'), slice.lastIndexOf('\t'));
80
+ if (lastBoundary >= 0) {
81
+ nextLen = currentLen + lastBoundary + 1;
82
+ }
83
+ }
84
+ if (nextLen !== currentLen) {
85
+ displayedLenRef.current = nextLen;
86
+ setDisplayed(target.slice(0, nextLen));
87
+ }
88
+ rafRef.current = requestAnimationFrame(_tick);
89
+ };
90
+ rafRef.current = requestAnimationFrame(_tick);
91
+ return function () {
92
+ if (rafRef.current != null) {
93
+ cancelAnimationFrame(rafRef.current);
94
+ rafRef.current = null;
95
+ }
96
+ lastTickRef.current = 0;
97
+ };
98
+ }, [targetText, enabled, minCharsPerFrame, maxCharsPerFrame, targetLagMs, snapToWordBoundary]);
99
+ return displayed;
100
+ };
101
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZVNtb290aFN0cmVhbVRleHQiLCJ0YXJnZXRUZXh0IiwiX3JlZiIsImVuYWJsZWQiLCJfcmVmJG1pbkNoYXJzUGVyRnJhbWUiLCJtaW5DaGFyc1BlckZyYW1lIiwiX3JlZiRtYXhDaGFyc1BlckZyYW1lIiwibWF4Q2hhcnNQZXJGcmFtZSIsIl9yZWYkdGFyZ2V0TGFnTXMiLCJ0YXJnZXRMYWdNcyIsIl9yZWYkc25hcFRvV29yZEJvdW5kYSIsInNuYXBUb1dvcmRCb3VuZGFyeSIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImRpc3BsYXllZCIsInNldERpc3BsYXllZCIsInRhcmdldFJlZiIsImRpc3BsYXllZExlblJlZiIsImxlbmd0aCIsInJhZlJlZiIsImxhc3RUaWNrUmVmIiwiY3VycmVudCIsImNhbmNlbEFuaW1hdGlvbkZyYW1lIiwidW5kZWZpbmVkIiwidGljayIsIm5vdyIsInByZXYiLCJkdCIsIk1hdGgiLCJtaW4iLCJ0YXJnZXQiLCJjdXJyZW50TGVuIiwicmVtYWluaW5nIiwiY2hhcnNQZXJNcyIsInJhd1N0ZXAiLCJjZWlsIiwic3RlcCIsIm1heCIsIm5leHRMZW4iLCJzbGljZSIsImxhc3RCb3VuZGFyeSIsImxhc3RJbmRleE9mIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL3VzZVNtb290aFN0cmVhbVRleHQvdXNlU21vb3RoU3RyZWFtVGV4dC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcblxudHlwZSBVc2VTbW9vdGhTdHJlYW1UZXh0T3B0aW9ucyA9IHtcbiAgLyoqIFNpIGVzdMOhIGRlc2hhYmlsaXRhZG8sIGRldnVlbHZlIGVsIHRhcmdldCB0YWwgY3VhbCAoc2luIGFuaW1hY2nDs24pLiAqL1xuICBlbmFibGVkOiBib29sZWFuXG4gIC8qKiBDYW50aWRhZCBtw61uaW1hIGRlIGNoYXJzIGEgbGliZXJhciBwb3IgZnJhbWUgY3VhbmRvIGhheSBidWZmZXIuICovXG4gIG1pbkNoYXJzUGVyRnJhbWU/OiBudW1iZXJcbiAgLyoqIENvdGEgc3VwZXJpb3IgZGUgY2hhcnMgcG9yIGZyYW1lIHBhcmEgZXZpdGFyIHNhbHRvcyBncmFuZGVzLiAqL1xuICBtYXhDaGFyc1BlckZyYW1lPzogbnVtYmVyXG4gIC8qKlxuICAgKiBMYWcgb2JqZXRpdm8gKG1zKSBlbnRyZSBlbCB0ZXh0byByZWNpYmlkbyB5IGVsIG1vc3RyYWRvLiBFbCBob29rIGNhbGN1bGFcbiAgICogZGluw6FtaWNhbWVudGUgZWwgc3RlcCBwb3IgZnJhbWUgcGFyYSB2YWNpYXIgZWwgYnVmZmVyIGVuIH50YXJnZXRMYWdNcy5cbiAgICogVmFsb3JlcyBtw6FzIGJham9zID0gc2UgcG9uZSBhbCBkw61hIG3DoXMgcsOhcGlkbyAobWVub3MgXCJzdWF2ZVwiKS5cbiAgICovXG4gIHRhcmdldExhZ01zPzogbnVtYmVyXG4gIC8qKlxuICAgKiBTaSBlc3TDoSBhY3Rpdm8sIGFsIGF2YW56YXIgc2UgZGV0aWVuZSBlbiBlbCDDumx0aW1vIHNlcGFyYWRvciBkZSBwYWxhYnJhXG4gICAqIChlc3BhY2lvLCBzYWx0byBkZSBsw61uZWEsIHNpZ25vcyBkZSBwdW50dWFjacOzbikgcGFyYSBldml0YXIgcmVuZGVyaXphclxuICAgKiBtYXJrZG93biBcImNvcnRhZG8gYSBsYSBtaXRhZFwiIHkgZGFyIHVuYSBzZW5zYWNpw7NuIG3DoXMgbmF0dXJhbC5cbiAgICovXG4gIHNuYXBUb1dvcmRCb3VuZGFyeT86IGJvb2xlYW5cbn1cblxuLyoqXG4gKiBIb29rIHF1ZSBkZXNhY29wbGEgbGEgY2FkZW5jaWEgZGUgbGxlZ2FkYSBkZWwgdGV4dG8gKHN0cmVhbSBTU0UpIGRlIGxhXG4gKiBjYWRlbmNpYSBkZSByZW5kZXJpemFkby4gVXNhIGByZXF1ZXN0QW5pbWF0aW9uRnJhbWVgIHBhcmEgbGliZXJhciBjaGFyc1xuICogYSByaXRtbyBjb25zdGFudGUgaGFjaWEgZWwgRE9NLCBlbGltaW5hbmRvIGxvcyBcImZyZW5vc1wiIHF1ZSBzZSBwcm9kdWNlblxuICogY3VhbmRvIGVsIGJhY2tlbmQgZW1pdGUgcsOhZmFnYXMgZGUgdG9rZW5zLlxuICpcbiAqIEN1YW5kbyBgZW5hYmxlZGAgcGFzYSBhIGZhbHNlIChmaW4gZGUgc3RyZWFtKSwgZWwgdGV4dG8gc2UgY29tcGxldGEgYWxcbiAqIGluc3RhbnRlLiBEdXJhbnRlIGVsIHN0cmVhbWluZywgZWwgYnVmZmVyIHNlIHZhY8OtYSBkaW7DoW1pY2FtZW50ZSBhcHVudGFuZG9cbiAqIGFsIGxhZyBjb25maWd1cmFkby5cbiAqL1xuZXhwb3J0IGNvbnN0IHVzZVNtb290aFN0cmVhbVRleHQgPSAoXG4gIHRhcmdldFRleHQ6IHN0cmluZyxcbiAge1xuICAgIGVuYWJsZWQsXG4gICAgbWluQ2hhcnNQZXJGcmFtZSA9IDEsXG4gICAgbWF4Q2hhcnNQZXJGcmFtZSA9IDI0LFxuICAgIHRhcmdldExhZ01zID0gMTIwLFxuICAgIHNuYXBUb1dvcmRCb3VuZGFyeSA9IGZhbHNlLFxuICB9OiBVc2VTbW9vdGhTdHJlYW1UZXh0T3B0aW9uc1xuKTogc3RyaW5nID0+IHtcbiAgY29uc3QgW2Rpc3BsYXllZCwgc2V0RGlzcGxheWVkXSA9IHVzZVN0YXRlPHN0cmluZz4oKCkgPT4gKGVuYWJsZWQgPyAnJyA6IHRhcmdldFRleHQpKVxuXG4gIGNvbnN0IHRhcmdldFJlZiA9IHVzZVJlZih0YXJnZXRUZXh0KVxuICBjb25zdCBkaXNwbGF5ZWRMZW5SZWYgPSB1c2VSZWYoZGlzcGxheWVkLmxlbmd0aClcbiAgY29uc3QgcmFmUmVmID0gdXNlUmVmPG51bWJlciB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGxhc3RUaWNrUmVmID0gdXNlUmVmPG51bWJlcj4oMClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHRhcmdldFJlZi5jdXJyZW50ID0gdGFyZ2V0VGV4dFxuXG4gICAgaWYgKCFlbmFibGVkKSB7XG4gICAgICBpZiAocmFmUmVmLmN1cnJlbnQgIT0gbnVsbCkge1xuICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShyYWZSZWYuY3VycmVudClcbiAgICAgICAgcmFmUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICB9XG4gICAgICBsYXN0VGlja1JlZi5jdXJyZW50ID0gMFxuICAgICAgLy8gU2luY3Jvbml6YWNpw7NuIHPDrW5jcm9uYSB2w61hIHJlZiBwYXJhIGV2aXRhciBzdGFsZSBjbG9zdXJlcyBlbiBlbFxuICAgICAgLy8gdmFsb3IgZGVsIHN0YXRlIGBkaXNwbGF5ZWRgLiBBbCB0ZXJtaW5hciBlbCBzdHJlYW1pbmcsIG1vc3RyYW1vcyBlbFxuICAgICAgLy8gdGFyZ2V0IGNvbXBsZXRvIGRlIHVuYSBzb2xhIHZlei5cbiAgICAgIGlmIChkaXNwbGF5ZWRMZW5SZWYuY3VycmVudCAhPT0gdGFyZ2V0VGV4dC5sZW5ndGgpIHtcbiAgICAgICAgZGlzcGxheWVkTGVuUmVmLmN1cnJlbnQgPSB0YXJnZXRUZXh0Lmxlbmd0aFxuICAgICAgICBzZXREaXNwbGF5ZWQodGFyZ2V0VGV4dClcbiAgICAgIH1cbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICAvLyBTaSBlbCB0YXJnZXQgc2UgYWNoaWPDsyAocmVzZXQgLyBudWV2byBtZW5zYWplKSwgcmVzeW5jIGhhY2lhIGFkZWxhbnRlXG4gICAgaWYgKGRpc3BsYXllZExlblJlZi5jdXJyZW50ID4gdGFyZ2V0VGV4dC5sZW5ndGgpIHtcbiAgICAgIGRpc3BsYXllZExlblJlZi5jdXJyZW50ID0gMFxuICAgICAgc2V0RGlzcGxheWVkKCcnKVxuICAgIH1cblxuICAgIGlmIChyYWZSZWYuY3VycmVudCAhPSBudWxsKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICBjb25zdCB0aWNrID0gKG5vdzogbnVtYmVyKSA9PiB7XG4gICAgICBjb25zdCBwcmV2ID0gbGFzdFRpY2tSZWYuY3VycmVudFxuICAgICAgY29uc3QgZHQgPSBwcmV2ID8gTWF0aC5taW4obm93IC0gcHJldiwgNjQpIDogMTZcbiAgICAgIGxhc3RUaWNrUmVmLmN1cnJlbnQgPSBub3dcblxuICAgICAgY29uc3QgdGFyZ2V0ID0gdGFyZ2V0UmVmLmN1cnJlbnRcbiAgICAgIGNvbnN0IGN1cnJlbnRMZW4gPSBkaXNwbGF5ZWRMZW5SZWYuY3VycmVudFxuICAgICAgY29uc3QgcmVtYWluaW5nID0gdGFyZ2V0Lmxlbmd0aCAtIGN1cnJlbnRMZW5cblxuICAgICAgaWYgKHJlbWFpbmluZyA8PSAwKSB7XG4gICAgICAgIHJhZlJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgICBsYXN0VGlja1JlZi5jdXJyZW50ID0gMFxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgLy8gVmVsb2NpZGFkIGFkYXB0YXRpdmE6IHZhY2lhciBlbCBidWZmZXIgZW4gfnRhcmdldExhZ01zLlxuICAgICAgY29uc3QgY2hhcnNQZXJNcyA9IHJlbWFpbmluZyAvIHRhcmdldExhZ01zXG4gICAgICBjb25zdCByYXdTdGVwID0gTWF0aC5jZWlsKGNoYXJzUGVyTXMgKiBkdClcbiAgICAgIGNvbnN0IHN0ZXAgPSBNYXRoLm1heChtaW5DaGFyc1BlckZyYW1lLCBNYXRoLm1pbihtYXhDaGFyc1BlckZyYW1lLCByYXdTdGVwKSlcblxuICAgICAgbGV0IG5leHRMZW4gPSBNYXRoLm1pbih0YXJnZXQubGVuZ3RoLCBjdXJyZW50TGVuICsgc3RlcClcblxuICAgICAgaWYgKHNuYXBUb1dvcmRCb3VuZGFyeSAmJiBuZXh0TGVuIDwgdGFyZ2V0Lmxlbmd0aCkge1xuICAgICAgICAvLyBObyBjb3J0YXIgcGFsYWJyYXMgYSBsYSBtaXRhZDogcmV0cm9jZWRlciBhbCDDumx0aW1vIHNlcGFyYWRvclxuICAgICAgICAvLyBzaSBleGlzdGUgZGVudHJvIGRlbCB0cmFtbyBxdWUgZXN0YW1vcyBsaWJlcmFuZG8uXG4gICAgICAgIGNvbnN0IHNsaWNlID0gdGFyZ2V0LnNsaWNlKGN1cnJlbnRMZW4sIG5leHRMZW4pXG4gICAgICAgIGNvbnN0IGxhc3RCb3VuZGFyeSA9IE1hdGgubWF4KHNsaWNlLmxhc3RJbmRleE9mKCcgJyksIHNsaWNlLmxhc3RJbmRleE9mKCdcXG4nKSwgc2xpY2UubGFzdEluZGV4T2YoJ1xcdCcpKVxuICAgICAgICBpZiAobGFzdEJvdW5kYXJ5ID49IDApIHtcbiAgICAgICAgICBuZXh0TGVuID0gY3VycmVudExlbiArIGxhc3RCb3VuZGFyeSArIDFcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAobmV4dExlbiAhPT0gY3VycmVudExlbikge1xuICAgICAgICBkaXNwbGF5ZWRMZW5SZWYuY3VycmVudCA9IG5leHRMZW5cbiAgICAgICAgc2V0RGlzcGxheWVkKHRhcmdldC5zbGljZSgwLCBuZXh0TGVuKSlcbiAgICAgIH1cblxuICAgICAgcmFmUmVmLmN1cnJlbnQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGljaylcbiAgICB9XG5cbiAgICByYWZSZWYuY3VycmVudCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aWNrKVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChyYWZSZWYuY3VycmVudCAhPSBudWxsKSB7XG4gICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHJhZlJlZi5jdXJyZW50KVxuICAgICAgICByYWZSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIH1cbiAgICAgIGxhc3RUaWNrUmVmLmN1cnJlbnQgPSAwXG4gICAgfVxuICB9LCBbdGFyZ2V0VGV4dCwgZW5hYmxlZCwgbWluQ2hhcnNQZXJGcmFtZSwgbWF4Q2hhcnNQZXJGcmFtZSwgdGFyZ2V0TGFnTXMsIHNuYXBUb1dvcmRCb3VuZGFyeV0pXG5cbiAgcmV0dXJuIGRpc3BsYXllZFxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUEsU0FBU0EsU0FBUyxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxPQUFPO0FBdUJuRDtBQUNBO0FBQ0E7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
@@ -0,0 +1,3 @@
1
+ export { useStreamingMessage, useStreamingMessageId } from './useStreamingMessage';
2
+ export { streamingStore } from './streamingStore';
3
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdHJlYW1pbmdNZXNzYWdlIiwidXNlU3RyZWFtaW5nTWVzc2FnZUlkIiwic3RyZWFtaW5nU3RvcmUiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvdXNlU3RyZWFtaW5nTWVzc2FnZS9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyB1c2VTdHJlYW1pbmdNZXNzYWdlLCB1c2VTdHJlYW1pbmdNZXNzYWdlSWQgfSBmcm9tICcuL3VzZVN0cmVhbWluZ01lc3NhZ2UnXG5leHBvcnQgeyBzdHJlYW1pbmdTdG9yZSB9IGZyb20gJy4vc3RyZWFtaW5nU3RvcmUnXG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLG1CQUFtQixFQUFFQyxxQkFBcUIsUUFBUSx1QkFBdUI7QUFDbEYsU0FBU0MsY0FBYyxRQUFRLGtCQUFrQiIsImlnbm9yZUxpc3QiOltdfQ==
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Store externo (module-level) para el mensaje actualmente en streaming.
3
+ *
4
+ * Desacopla el texto del stream del array de `messages` de React: durante
5
+ * el streaming, el texto se mantiene acá y solo los componentes suscritos
6
+ * (vía `useStreamingMessage` / `useSyncExternalStore`) re-renderizan cuando
7
+ * cambia. El array `messages` no se muta en cada token, evitando ráfagas
8
+ * de re-renders del padre y ejecuciones innecesarias de useEffects.
9
+ */
10
+
11
+ var snapshot = {
12
+ id: null,
13
+ text: ''
14
+ };
15
+ var listeners = new Set();
16
+ var emitChange = function emitChange() {
17
+ listeners.forEach(function (listener) {
18
+ listener();
19
+ });
20
+ };
21
+ export var streamingStore = {
22
+ /** Inicia una nueva sesión de streaming para el mensaje con este id. */start: function start(id) {
23
+ snapshot = {
24
+ id: id,
25
+ text: ''
26
+ };
27
+ emitChange();
28
+ },
29
+ /** Setea el texto del mensaje en streaming. Solo aplica si el id coincide. */setText: function setText(id, text) {
30
+ if (snapshot.id !== id) {
31
+ snapshot = {
32
+ id: id,
33
+ text: text
34
+ };
35
+ } else if (snapshot.text !== text) {
36
+ snapshot = {
37
+ id: id,
38
+ text: text
39
+ };
40
+ } else {
41
+ return;
42
+ }
43
+ emitChange();
44
+ },
45
+ /** Limpia el estado de streaming (fin de stream, error o aprobación). */clear: function clear() {
46
+ if (snapshot.id == null && snapshot.text === '') return;
47
+ snapshot = {
48
+ id: null,
49
+ text: ''
50
+ };
51
+ emitChange();
52
+ },
53
+ /** API para useSyncExternalStore. */subscribe: function subscribe(listener) {
54
+ listeners.add(listener);
55
+ return function () {
56
+ listeners["delete"](listener);
57
+ };
58
+ },
59
+ /** Snapshot referencialmente estable mientras no haya cambios. */getSnapshot: function getSnapshot() {
60
+ return snapshot;
61
+ },
62
+ /** Server snapshot (SSR): siempre vacío. */getServerSnapshot: function getServerSnapshot() {
63
+ return {
64
+ id: null,
65
+ text: ''
66
+ };
67
+ }
68
+ };
69
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzbmFwc2hvdCIsImlkIiwidGV4dCIsImxpc3RlbmVycyIsIlNldCIsImVtaXRDaGFuZ2UiLCJmb3JFYWNoIiwibGlzdGVuZXIiLCJzdHJlYW1pbmdTdG9yZSIsInN0YXJ0Iiwic2V0VGV4dCIsImNsZWFyIiwic3Vic2NyaWJlIiwiYWRkIiwiZ2V0U25hcHNob3QiLCJnZXRTZXJ2ZXJTbmFwc2hvdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob29rcy91c2VTdHJlYW1pbmdNZXNzYWdlL3N0cmVhbWluZ1N0b3JlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU3RvcmUgZXh0ZXJubyAobW9kdWxlLWxldmVsKSBwYXJhIGVsIG1lbnNhamUgYWN0dWFsbWVudGUgZW4gc3RyZWFtaW5nLlxuICpcbiAqIERlc2Fjb3BsYSBlbCB0ZXh0byBkZWwgc3RyZWFtIGRlbCBhcnJheSBkZSBgbWVzc2FnZXNgIGRlIFJlYWN0OiBkdXJhbnRlXG4gKiBlbCBzdHJlYW1pbmcsIGVsIHRleHRvIHNlIG1hbnRpZW5lIGFjw6EgeSBzb2xvIGxvcyBjb21wb25lbnRlcyBzdXNjcml0b3NcbiAqICh2w61hIGB1c2VTdHJlYW1pbmdNZXNzYWdlYCAvIGB1c2VTeW5jRXh0ZXJuYWxTdG9yZWApIHJlLXJlbmRlcml6YW4gY3VhbmRvXG4gKiBjYW1iaWEuIEVsIGFycmF5IGBtZXNzYWdlc2Agbm8gc2UgbXV0YSBlbiBjYWRhIHRva2VuLCBldml0YW5kbyByw6FmYWdhc1xuICogZGUgcmUtcmVuZGVycyBkZWwgcGFkcmUgeSBlamVjdWNpb25lcyBpbm5lY2VzYXJpYXMgZGUgdXNlRWZmZWN0cy5cbiAqL1xuXG50eXBlIFN0cmVhbWluZ1NuYXBzaG90ID0ge1xuICBpZDogc3RyaW5nIHwgbnVsbFxuICB0ZXh0OiBzdHJpbmdcbn1cblxubGV0IHNuYXBzaG90OiBTdHJlYW1pbmdTbmFwc2hvdCA9IHsgaWQ6IG51bGwsIHRleHQ6ICcnIH1cbmNvbnN0IGxpc3RlbmVycyA9IG5ldyBTZXQ8KCkgPT4gdm9pZD4oKVxuXG5jb25zdCBlbWl0Q2hhbmdlID0gKCkgPT4ge1xuICBsaXN0ZW5lcnMuZm9yRWFjaChsaXN0ZW5lciA9PiB7XG4gICAgbGlzdGVuZXIoKVxuICB9KVxufVxuXG5leHBvcnQgY29uc3Qgc3RyZWFtaW5nU3RvcmUgPSB7XG4gIC8qKiBJbmljaWEgdW5hIG51ZXZhIHNlc2nDs24gZGUgc3RyZWFtaW5nIHBhcmEgZWwgbWVuc2FqZSBjb24gZXN0ZSBpZC4gKi9cbiAgc3RhcnQoaWQ6IHN0cmluZykge1xuICAgIHNuYXBzaG90ID0geyBpZCwgdGV4dDogJycgfVxuICAgIGVtaXRDaGFuZ2UoKVxuICB9LFxuICAvKiogU2V0ZWEgZWwgdGV4dG8gZGVsIG1lbnNhamUgZW4gc3RyZWFtaW5nLiBTb2xvIGFwbGljYSBzaSBlbCBpZCBjb2luY2lkZS4gKi9cbiAgc2V0VGV4dChpZDogc3RyaW5nLCB0ZXh0OiBzdHJpbmcpIHtcbiAgICBpZiAoc25hcHNob3QuaWQgIT09IGlkKSB7XG4gICAgICBzbmFwc2hvdCA9IHsgaWQsIHRleHQgfVxuICAgIH0gZWxzZSBpZiAoc25hcHNob3QudGV4dCAhPT0gdGV4dCkge1xuICAgICAgc25hcHNob3QgPSB7IGlkLCB0ZXh0IH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGVtaXRDaGFuZ2UoKVxuICB9LFxuICAvKiogTGltcGlhIGVsIGVzdGFkbyBkZSBzdHJlYW1pbmcgKGZpbiBkZSBzdHJlYW0sIGVycm9yIG8gYXByb2JhY2nDs24pLiAqL1xuICBjbGVhcigpIHtcbiAgICBpZiAoc25hcHNob3QuaWQgPT0gbnVsbCAmJiBzbmFwc2hvdC50ZXh0ID09PSAnJykgcmV0dXJuXG4gICAgc25hcHNob3QgPSB7IGlkOiBudWxsLCB0ZXh0OiAnJyB9XG4gICAgZW1pdENoYW5nZSgpXG4gIH0sXG4gIC8qKiBBUEkgcGFyYSB1c2VTeW5jRXh0ZXJuYWxTdG9yZS4gKi9cbiAgc3Vic2NyaWJlKGxpc3RlbmVyOiAoKSA9PiB2b2lkKSB7XG4gICAgbGlzdGVuZXJzLmFkZChsaXN0ZW5lcilcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbGlzdGVuZXJzLmRlbGV0ZShsaXN0ZW5lcilcbiAgICB9XG4gIH0sXG4gIC8qKiBTbmFwc2hvdCByZWZlcmVuY2lhbG1lbnRlIGVzdGFibGUgbWllbnRyYXMgbm8gaGF5YSBjYW1iaW9zLiAqL1xuICBnZXRTbmFwc2hvdCgpOiBTdHJlYW1pbmdTbmFwc2hvdCB7XG4gICAgcmV0dXJuIHNuYXBzaG90XG4gIH0sXG4gIC8qKiBTZXJ2ZXIgc25hcHNob3QgKFNTUik6IHNpZW1wcmUgdmFjw61vLiAqL1xuICBnZXRTZXJ2ZXJTbmFwc2hvdCgpOiBTdHJlYW1pbmdTbmFwc2hvdCB7XG4gICAgcmV0dXJuIHsgaWQ6IG51bGwsIHRleHQ6ICcnIH1cbiAgfSxcbn1cblxuZXhwb3J0IHR5cGUgeyBTdHJlYW1pbmdTbmFwc2hvdCB9XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFPQSxJQUFJQSxRQUEyQixHQUFHO0VBQUVDLEVBQUUsRUFBRSxJQUFJO0VBQUVDLElBQUksRUFBRTtBQUFHLENBQUM7QUFDeEQsSUFBTUMsU0FBUyxHQUFHLElBQUlDLEdBQUcsQ0FBYSxDQUFDO0FBRXZDLElBQU1DLFVBQVUsR0FBRyxTQUFiQSxVQUFVQSxDQUFBLEVBQVM7RUFDdkJGLFNBQVMsQ0FBQ0csT0FBTyxDQUFDLFVBQUFDLFFBQVEsRUFBSTtJQUM1QkEsUUFBUSxDQUFDLENBQUM7RUFDWixDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsT0FBTyxJQUFNQyxjQUFjLEdBQUc7RUFDNUIsd0VBQ0FDLEtBQUssV0FBTEEsS0FBS0EsQ0FBQ1IsRUFBVSxFQUFFO0lBQ2hCRCxRQUFRLEdBQUc7TUFBRUMsRUFBRSxFQUFGQSxFQUFFO01BQUVDLElBQUksRUFBRTtJQUFHLENBQUM7SUFDM0JHLFVBQVUsQ0FBQyxDQUFDO0VBQ2QsQ0FBQztFQUNELDhFQUNBSyxPQUFPLFdBQVBBLE9BQU9BLENBQUNULEVBQVUsRUFBRUMsSUFBWSxFQUFFO0lBQ2hDLElBQUlGLFFBQVEsQ0FBQ0MsRUFBRSxLQUFLQSxFQUFFLEVBQUU7TUFDdEJELFFBQVEsR0FBRztRQUFFQyxFQUFFLEVBQUZBLEVBQUU7UUFBRUMsSUFBSSxFQUFKQTtNQUFLLENBQUM7SUFDekIsQ0FBQyxNQUFNLElBQUlGLFFBQVEsQ0FBQ0UsSUFBSSxLQUFLQSxJQUFJLEVBQUU7TUFDakNGLFFBQVEsR0FBRztRQUFFQyxFQUFFLEVBQUZBLEVBQUU7UUFBRUMsSUFBSSxFQUFKQTtNQUFLLENBQUM7SUFDekIsQ0FBQyxNQUFNO01BQ0w7SUFDRjtJQUNBRyxVQUFVLENBQUMsQ0FBQztFQUNkLENBQUM7RUFDRCx5RUFDQU0sS0FBSyxXQUFMQSxLQUFLQSxDQUFBLEVBQUc7SUFDTixJQUFJWCxRQUFRLENBQUNDLEVBQUUsSUFBSSxJQUFJLElBQUlELFFBQVEsQ0FBQ0UsSUFBSSxLQUFLLEVBQUUsRUFBRTtJQUNqREYsUUFBUSxHQUFHO01BQUVDLEVBQUUsRUFBRSxJQUFJO01BQUVDLElBQUksRUFBRTtJQUFHLENBQUM7SUFDakNHLFVBQVUsQ0FBQyxDQUFDO0VBQ2QsQ0FBQztFQUNELHFDQUNBTyxTQUFTLFdBQVRBLFNBQVNBLENBQUNMLFFBQW9CLEVBQUU7SUFDOUJKLFNBQVMsQ0FBQ1UsR0FBRyxDQUFDTixRQUFRLENBQUM7SUFDdkIsT0FBTyxZQUFNO01BQ1hKLFNBQVMsVUFBTyxDQUFDSSxRQUFRLENBQUM7SUFDNUIsQ0FBQztFQUNILENBQUM7RUFDRCxrRUFDQU8sV0FBVyxXQUFYQSxXQUFXQSxDQUFBLEVBQXNCO0lBQy9CLE9BQU9kLFFBQVE7RUFDakIsQ0FBQztFQUNELDRDQUNBZSxpQkFBaUIsV0FBakJBLGlCQUFpQkEsQ0FBQSxFQUFzQjtJQUNyQyxPQUFPO01BQUVkLEVBQUUsRUFBRSxJQUFJO01BQUVDLElBQUksRUFBRTtJQUFHLENBQUM7RUFDL0I7QUFDRixDQUFDIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,22 @@
1
+ import { useSyncExternalStore } from 'react';
2
+ import { streamingStore } from './streamingStore';
3
+
4
+ /**
5
+ * Devuelve el texto actual del mensaje en streaming si el `id` coincide con
6
+ * el mensaje activo. Si no hay streaming activo o el id no coincide, devuelve
7
+ * una cadena vacía. Esto permite que solo el componente del mensaje en
8
+ * streaming se re-renderice, sin afectar al resto del árbol.
9
+ */
10
+ export var useStreamingMessage = function useStreamingMessage(messageId) {
11
+ var snapshot = useSyncExternalStore(streamingStore.subscribe, streamingStore.getSnapshot, streamingStore.getServerSnapshot);
12
+ if (!messageId) return '';
13
+ if (snapshot.id !== messageId) return '';
14
+ return snapshot.text;
15
+ };
16
+
17
+ /** Devuelve el id del mensaje que está actualmente en streaming (o null). */
18
+ export var useStreamingMessageId = function useStreamingMessageId() {
19
+ var snapshot = useSyncExternalStore(streamingStore.subscribe, streamingStore.getSnapshot, streamingStore.getServerSnapshot);
20
+ return snapshot.id;
21
+ };
22
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTeW5jRXh0ZXJuYWxTdG9yZSIsInN0cmVhbWluZ1N0b3JlIiwidXNlU3RyZWFtaW5nTWVzc2FnZSIsIm1lc3NhZ2VJZCIsInNuYXBzaG90Iiwic3Vic2NyaWJlIiwiZ2V0U25hcHNob3QiLCJnZXRTZXJ2ZXJTbmFwc2hvdCIsImlkIiwidGV4dCIsInVzZVN0cmVhbWluZ01lc3NhZ2VJZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob29rcy91c2VTdHJlYW1pbmdNZXNzYWdlL3VzZVN0cmVhbWluZ01lc3NhZ2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlU3luY0V4dGVybmFsU3RvcmUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHN0cmVhbWluZ1N0b3JlIH0gZnJvbSAnLi9zdHJlYW1pbmdTdG9yZSdcblxuLyoqXG4gKiBEZXZ1ZWx2ZSBlbCB0ZXh0byBhY3R1YWwgZGVsIG1lbnNhamUgZW4gc3RyZWFtaW5nIHNpIGVsIGBpZGAgY29pbmNpZGUgY29uXG4gKiBlbCBtZW5zYWplIGFjdGl2by4gU2kgbm8gaGF5IHN0cmVhbWluZyBhY3Rpdm8gbyBlbCBpZCBubyBjb2luY2lkZSwgZGV2dWVsdmVcbiAqIHVuYSBjYWRlbmEgdmFjw61hLiBFc3RvIHBlcm1pdGUgcXVlIHNvbG8gZWwgY29tcG9uZW50ZSBkZWwgbWVuc2FqZSBlblxuICogc3RyZWFtaW5nIHNlIHJlLXJlbmRlcmljZSwgc2luIGFmZWN0YXIgYWwgcmVzdG8gZGVsIMOhcmJvbC5cbiAqL1xuZXhwb3J0IGNvbnN0IHVzZVN0cmVhbWluZ01lc3NhZ2UgPSAobWVzc2FnZUlkOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgc25hcHNob3QgPSB1c2VTeW5jRXh0ZXJuYWxTdG9yZShcbiAgICBzdHJlYW1pbmdTdG9yZS5zdWJzY3JpYmUsXG4gICAgc3RyZWFtaW5nU3RvcmUuZ2V0U25hcHNob3QsXG4gICAgc3RyZWFtaW5nU3RvcmUuZ2V0U2VydmVyU25hcHNob3RcbiAgKVxuICBpZiAoIW1lc3NhZ2VJZCkgcmV0dXJuICcnXG4gIGlmIChzbmFwc2hvdC5pZCAhPT0gbWVzc2FnZUlkKSByZXR1cm4gJydcbiAgcmV0dXJuIHNuYXBzaG90LnRleHRcbn1cblxuLyoqIERldnVlbHZlIGVsIGlkIGRlbCBtZW5zYWplIHF1ZSBlc3TDoSBhY3R1YWxtZW50ZSBlbiBzdHJlYW1pbmcgKG8gbnVsbCkuICovXG5leHBvcnQgY29uc3QgdXNlU3RyZWFtaW5nTWVzc2FnZUlkID0gKCk6IHN0cmluZyB8IG51bGwgPT4ge1xuICBjb25zdCBzbmFwc2hvdCA9IHVzZVN5bmNFeHRlcm5hbFN0b3JlKFxuICAgIHN0cmVhbWluZ1N0b3JlLnN1YnNjcmliZSxcbiAgICBzdHJlYW1pbmdTdG9yZS5nZXRTbmFwc2hvdCxcbiAgICBzdHJlYW1pbmdTdG9yZS5nZXRTZXJ2ZXJTbmFwc2hvdFxuICApXG4gIHJldHVybiBzbmFwc2hvdC5pZFxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxvQkFBb0IsUUFBUSxPQUFPO0FBQzVDLFNBQVNDLGNBQWMsUUFBUSxrQkFBa0I7O0FBRWpEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sSUFBTUMsbUJBQW1CLEdBQUcsU0FBdEJBLG1CQUFtQkEsQ0FBSUMsU0FBb0MsRUFBYTtFQUNuRixJQUFNQyxRQUFRLEdBQUdKLG9CQUFvQixDQUNuQ0MsY0FBYyxDQUFDSSxTQUFTLEVBQ3hCSixjQUFjLENBQUNLLFdBQVcsRUFDMUJMLGNBQWMsQ0FBQ00saUJBQ2pCLENBQUM7RUFDRCxJQUFJLENBQUNKLFNBQVMsRUFBRSxPQUFPLEVBQUU7RUFDekIsSUFBSUMsUUFBUSxDQUFDSSxFQUFFLEtBQUtMLFNBQVMsRUFBRSxPQUFPLEVBQUU7RUFDeEMsT0FBT0MsUUFBUSxDQUFDSyxJQUFJO0FBQ3RCLENBQUM7O0FBRUQ7QUFDQSxPQUFPLElBQU1DLHFCQUFxQixHQUFHLFNBQXhCQSxxQkFBcUJBLENBQUEsRUFBd0I7RUFDeEQsSUFBTU4sUUFBUSxHQUFHSixvQkFBb0IsQ0FDbkNDLGNBQWMsQ0FBQ0ksU0FBUyxFQUN4QkosY0FBYyxDQUFDSyxXQUFXLEVBQzFCTCxjQUFjLENBQUNNLGlCQUNqQixDQUFDO0VBQ0QsT0FBT0gsUUFBUSxDQUFDSSxFQUFFO0FBQ3BCLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@projectcor/maia-components",
3
- "version": "2.11.30",
3
+ "version": "2.11.31-0",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "repository": {