@projectcor/maia-components 2.11.31 → 2.11.32-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.
- package/lib/components/atoms/icons/MaiaChatLayoutMenuIcon.js +33 -0
- package/lib/components/atoms/icons/index.js +2 -1
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +178 -165
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +196 -61
- package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +28 -15
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +91 -18
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.styles.js +17 -2
- package/lib/components/molecules/ChatAIModal/floatingPanelMotion/FloatingPanelMotion.js +16 -0
- package/lib/components/molecules/ChatAIModal/floatingPanelMotion/FloatingPanelMotion.styles.js +12 -0
- package/lib/components/molecules/ChatAIModal/floatingPanelMotion/constants.js +13 -0
- package/lib/components/molecules/ChatAIModal/floatingPanelMotion/index.js +3 -0
- package/lib/components/molecules/ChatAIModal/floatingPanelMotion/useFloatingPanelDragTilt.js +57 -0
- package/lib/components/molecules/ChatAIModal/layout.js +35 -0
- package/lib/hooks/useChatManager/useChatManager.js +78 -16
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +139 -70
- package/lib/hooks/useSmoothStreamText/index.js +2 -0
- package/lib/hooks/useSmoothStreamText/useSmoothStreamText.js +189 -0
- package/lib/hooks/useStreamingMessage/index.js +3 -0
- package/lib/hooks/useStreamingMessage/streamingStore.js +69 -0
- package/lib/hooks/useStreamingMessage/useStreamingMessage.js +22 -0
- package/lib/lang/br/index.js +5 -1
- package/lib/lang/en/index.js +5 -1
- package/lib/lang/es/index.js +5 -1
- package/lib/lang/fr/index.js +5 -1
- package/package.json +1 -1
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { useSpring } from 'framer-motion';
|
|
2
|
+
import { useCallback, useEffect, useRef } from 'react';
|
|
3
|
+
import { FLOATING_DRAG_TILT_DX, FLOATING_DRAG_TILT_DY, FLOATING_DRAG_TILT_IDLE_MS, FLOATING_DRAG_TILT_SPRING, clampFloatingDragTilt } from './constants';
|
|
4
|
+
export function useFloatingPanelDragTilt(isFloating) {
|
|
5
|
+
var tilt = useSpring(0, FLOATING_DRAG_TILT_SPRING);
|
|
6
|
+
var lastPointerDragRef = useRef(null);
|
|
7
|
+
var idleTimerRef = useRef(null);
|
|
8
|
+
var clearIdleTimer = useCallback(function () {
|
|
9
|
+
if (idleTimerRef.current) {
|
|
10
|
+
clearTimeout(idleTimerRef.current);
|
|
11
|
+
idleTimerRef.current = null;
|
|
12
|
+
}
|
|
13
|
+
}, []);
|
|
14
|
+
useEffect(function () {
|
|
15
|
+
if (!isFloating) {
|
|
16
|
+
clearIdleTimer();
|
|
17
|
+
tilt.set(0);
|
|
18
|
+
lastPointerDragRef.current = null;
|
|
19
|
+
}
|
|
20
|
+
}, [isFloating, tilt, clearIdleTimer]);
|
|
21
|
+
var startPointerTracking = useCallback(function (clientX, clientY) {
|
|
22
|
+
lastPointerDragRef.current = {
|
|
23
|
+
x: clientX,
|
|
24
|
+
y: clientY
|
|
25
|
+
};
|
|
26
|
+
tilt.set(0);
|
|
27
|
+
}, [tilt]);
|
|
28
|
+
var samplePointerMove = useCallback(function (clientX, clientY) {
|
|
29
|
+
var lastPtr = lastPointerDragRef.current;
|
|
30
|
+
if (lastPtr) {
|
|
31
|
+
var dx = clientX - lastPtr.x;
|
|
32
|
+
var dy = clientY - lastPtr.y;
|
|
33
|
+
tilt.set(clampFloatingDragTilt(dx * FLOATING_DRAG_TILT_DX - dy * FLOATING_DRAG_TILT_DY));
|
|
34
|
+
}
|
|
35
|
+
lastPointerDragRef.current = {
|
|
36
|
+
x: clientX,
|
|
37
|
+
y: clientY
|
|
38
|
+
};
|
|
39
|
+
clearIdleTimer();
|
|
40
|
+
idleTimerRef.current = setTimeout(function () {
|
|
41
|
+
tilt.set(0);
|
|
42
|
+
idleTimerRef.current = null;
|
|
43
|
+
}, FLOATING_DRAG_TILT_IDLE_MS);
|
|
44
|
+
}, [tilt, clearIdleTimer]);
|
|
45
|
+
var endPointerTracking = useCallback(function () {
|
|
46
|
+
clearIdleTimer();
|
|
47
|
+
lastPointerDragRef.current = null;
|
|
48
|
+
tilt.set(0);
|
|
49
|
+
}, [tilt, clearIdleTimer]);
|
|
50
|
+
return {
|
|
51
|
+
tiltMotion: tilt,
|
|
52
|
+
startPointerTracking: startPointerTracking,
|
|
53
|
+
samplePointerMove: samplePointerMove,
|
|
54
|
+
endPointerTracking: endPointerTracking
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTcHJpbmciLCJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZVJlZiIsIkZMT0FUSU5HX0RSQUdfVElMVF9EWCIsIkZMT0FUSU5HX0RSQUdfVElMVF9EWSIsIkZMT0FUSU5HX0RSQUdfVElMVF9JRExFX01TIiwiRkxPQVRJTkdfRFJBR19USUxUX1NQUklORyIsImNsYW1wRmxvYXRpbmdEcmFnVGlsdCIsInVzZUZsb2F0aW5nUGFuZWxEcmFnVGlsdCIsImlzRmxvYXRpbmciLCJ0aWx0IiwibGFzdFBvaW50ZXJEcmFnUmVmIiwiaWRsZVRpbWVyUmVmIiwiY2xlYXJJZGxlVGltZXIiLCJjdXJyZW50IiwiY2xlYXJUaW1lb3V0Iiwic2V0Iiwic3RhcnRQb2ludGVyVHJhY2tpbmciLCJjbGllbnRYIiwiY2xpZW50WSIsIngiLCJ5Iiwic2FtcGxlUG9pbnRlck1vdmUiLCJsYXN0UHRyIiwiZHgiLCJkeSIsInNldFRpbWVvdXQiLCJlbmRQb2ludGVyVHJhY2tpbmciLCJ0aWx0TW90aW9uIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRBSU1vZGFsL2Zsb2F0aW5nUGFuZWxNb3Rpb24vdXNlRmxvYXRpbmdQYW5lbERyYWdUaWx0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZVNwcmluZyB9IGZyb20gJ2ZyYW1lci1tb3Rpb24nXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHtcbiAgRkxPQVRJTkdfRFJBR19USUxUX0RYLFxuICBGTE9BVElOR19EUkFHX1RJTFRfRFksXG4gIEZMT0FUSU5HX0RSQUdfVElMVF9JRExFX01TLFxuICBGTE9BVElOR19EUkFHX1RJTFRfU1BSSU5HLFxuICBjbGFtcEZsb2F0aW5nRHJhZ1RpbHQsXG59IGZyb20gJy4vY29uc3RhbnRzJ1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlRmxvYXRpbmdQYW5lbERyYWdUaWx0KGlzRmxvYXRpbmc6IGJvb2xlYW4pIHtcbiAgY29uc3QgdGlsdCA9IHVzZVNwcmluZygwLCBGTE9BVElOR19EUkFHX1RJTFRfU1BSSU5HKVxuICBjb25zdCBsYXN0UG9pbnRlckRyYWdSZWYgPSB1c2VSZWY8eyB4OiBudW1iZXI7IHk6IG51bWJlciB9IHwgbnVsbD4obnVsbClcbiAgY29uc3QgaWRsZVRpbWVyUmVmID0gdXNlUmVmPFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbD4obnVsbClcblxuICBjb25zdCBjbGVhcklkbGVUaW1lciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoaWRsZVRpbWVyUmVmLmN1cnJlbnQpIHtcbiAgICAgIGNsZWFyVGltZW91dChpZGxlVGltZXJSZWYuY3VycmVudClcbiAgICAgIGlkbGVUaW1lclJlZi5jdXJyZW50ID0gbnVsbFxuICAgIH1cbiAgfSwgW10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzRmxvYXRpbmcpIHtcbiAgICAgIGNsZWFySWRsZVRpbWVyKClcbiAgICAgIHRpbHQuc2V0KDApXG4gICAgICBsYXN0UG9pbnRlckRyYWdSZWYuY3VycmVudCA9IG51bGxcbiAgICB9XG4gIH0sIFtpc0Zsb2F0aW5nLCB0aWx0LCBjbGVhcklkbGVUaW1lcl0pXG5cbiAgY29uc3Qgc3RhcnRQb2ludGVyVHJhY2tpbmcgPSB1c2VDYWxsYmFjayhcbiAgICAoY2xpZW50WDogbnVtYmVyLCBjbGllbnRZOiBudW1iZXIpID0+IHtcbiAgICAgIGxhc3RQb2ludGVyRHJhZ1JlZi5jdXJyZW50ID0geyB4OiBjbGllbnRYLCB5OiBjbGllbnRZIH1cbiAgICAgIHRpbHQuc2V0KDApXG4gICAgfSxcbiAgICBbdGlsdF1cbiAgKVxuXG4gIGNvbnN0IHNhbXBsZVBvaW50ZXJNb3ZlID0gdXNlQ2FsbGJhY2soXG4gICAgKGNsaWVudFg6IG51bWJlciwgY2xpZW50WTogbnVtYmVyKSA9PiB7XG4gICAgICBjb25zdCBsYXN0UHRyID0gbGFzdFBvaW50ZXJEcmFnUmVmLmN1cnJlbnRcbiAgICAgIGlmIChsYXN0UHRyKSB7XG4gICAgICAgIGNvbnN0IGR4ID0gY2xpZW50WCAtIGxhc3RQdHIueFxuICAgICAgICBjb25zdCBkeSA9IGNsaWVudFkgLSBsYXN0UHRyLnlcbiAgICAgICAgdGlsdC5zZXQoY2xhbXBGbG9hdGluZ0RyYWdUaWx0KGR4ICogRkxPQVRJTkdfRFJBR19USUxUX0RYIC0gZHkgKiBGTE9BVElOR19EUkFHX1RJTFRfRFkpKVxuICAgICAgfVxuICAgICAgbGFzdFBvaW50ZXJEcmFnUmVmLmN1cnJlbnQgPSB7IHg6IGNsaWVudFgsIHk6IGNsaWVudFkgfVxuXG4gICAgICBjbGVhcklkbGVUaW1lcigpXG4gICAgICBpZGxlVGltZXJSZWYuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aWx0LnNldCgwKVxuICAgICAgICBpZGxlVGltZXJSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIH0sIEZMT0FUSU5HX0RSQUdfVElMVF9JRExFX01TKVxuICAgIH0sXG4gICAgW3RpbHQsIGNsZWFySWRsZVRpbWVyXVxuICApXG5cbiAgY29uc3QgZW5kUG9pbnRlclRyYWNraW5nID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNsZWFySWRsZVRpbWVyKClcbiAgICBsYXN0UG9pbnRlckRyYWdSZWYuY3VycmVudCA9IG51bGxcbiAgICB0aWx0LnNldCgwKVxuICB9LCBbdGlsdCwgY2xlYXJJZGxlVGltZXJdKVxuXG4gIHJldHVybiB7XG4gICAgdGlsdE1vdGlvbjogdGlsdCxcbiAgICBzdGFydFBvaW50ZXJUcmFja2luZyxcbiAgICBzYW1wbGVQb2ludGVyTW92ZSxcbiAgICBlbmRQb2ludGVyVHJhY2tpbmcsXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsU0FBUyxRQUFRLGVBQWU7QUFDekMsU0FBU0MsV0FBVyxFQUFFQyxTQUFTLEVBQUVDLE1BQU0sUUFBUSxPQUFPO0FBRXRE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
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/** Ancho del panel flotante en px: base y escalado en pantallas muy anchas */
|
|
2
|
+
export var MAIA_FLOATING_PANEL_WIDTH_PX = {
|
|
3
|
+
"default": 480,
|
|
4
|
+
large: 600,
|
|
5
|
+
xxl: 720
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
/** Alto del panel flotante en px: base y escalado en pantallas muy anchas (el CSS aplica max-height: 85vh) */
|
|
9
|
+
export var MAIA_FLOATING_PANEL_HEIGHT_PX = {
|
|
10
|
+
"default": 620,
|
|
11
|
+
large: 720,
|
|
12
|
+
xxl: 960
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
/** Viewport mínimo (ancho) para usar medidas `large` */
|
|
16
|
+
export var MAIA_FLOATING_BREAKPOINT_LARGE = 1920;
|
|
17
|
+
|
|
18
|
+
/** Viewport mínimo (ancho) para usar medidas `xxl` */
|
|
19
|
+
export var MAIA_FLOATING_BREAKPOINT_XXL = 2560;
|
|
20
|
+
|
|
21
|
+
/** Ancho efectivo del panel (misma lógica que los @media del CSS) */
|
|
22
|
+
export function getMaiaFloatingPanelWidthPx() {
|
|
23
|
+
if (typeof window === 'undefined') {
|
|
24
|
+
return MAIA_FLOATING_PANEL_WIDTH_PX["default"];
|
|
25
|
+
}
|
|
26
|
+
var vw = window.innerWidth;
|
|
27
|
+
if (vw >= MAIA_FLOATING_BREAKPOINT_XXL) {
|
|
28
|
+
return MAIA_FLOATING_PANEL_WIDTH_PX.xxl;
|
|
29
|
+
}
|
|
30
|
+
if (vw >= MAIA_FLOATING_BREAKPOINT_LARGE) {
|
|
31
|
+
return MAIA_FLOATING_PANEL_WIDTH_PX.large;
|
|
32
|
+
}
|
|
33
|
+
return MAIA_FLOATING_PANEL_WIDTH_PX["default"];
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNQUlBX0ZMT0FUSU5HX1BBTkVMX1dJRFRIX1BYIiwibGFyZ2UiLCJ4eGwiLCJNQUlBX0ZMT0FUSU5HX1BBTkVMX0hFSUdIVF9QWCIsIk1BSUFfRkxPQVRJTkdfQlJFQUtQT0lOVF9MQVJHRSIsIk1BSUFfRkxPQVRJTkdfQlJFQUtQT0lOVF9YWEwiLCJnZXRNYWlhRmxvYXRpbmdQYW5lbFdpZHRoUHgiLCJ3aW5kb3ciLCJ2dyIsImlubmVyV2lkdGgiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQ2hhdEFJTW9kYWwvbGF5b3V0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIE1haWFDaGF0TW9kYWxMYXlvdXRNb2RlID0gJ3NpZGViYXInIHwgJ2Z1bGxzY3JlZW4nIHwgJ2Zsb2F0aW5nJ1xuXG4vKiogQW5jaG8gZGVsIHBhbmVsIGZsb3RhbnRlIGVuIHB4OiBiYXNlIHkgZXNjYWxhZG8gZW4gcGFudGFsbGFzIG11eSBhbmNoYXMgKi9cbmV4cG9ydCBjb25zdCBNQUlBX0ZMT0FUSU5HX1BBTkVMX1dJRFRIX1BYID0ge1xuICBkZWZhdWx0OiA0ODAsXG4gIGxhcmdlOiA2MDAsXG4gIHh4bDogNzIwLFxufSBhcyBjb25zdFxuXG4vKiogQWx0byBkZWwgcGFuZWwgZmxvdGFudGUgZW4gcHg6IGJhc2UgeSBlc2NhbGFkbyBlbiBwYW50YWxsYXMgbXV5IGFuY2hhcyAoZWwgQ1NTIGFwbGljYSBtYXgtaGVpZ2h0OiA4NXZoKSAqL1xuZXhwb3J0IGNvbnN0IE1BSUFfRkxPQVRJTkdfUEFORUxfSEVJR0hUX1BYID0ge1xuICBkZWZhdWx0OiA2MjAsXG4gIGxhcmdlOiA3MjAsXG4gIHh4bDogOTYwLFxufSBhcyBjb25zdFxuXG4vKiogVmlld3BvcnQgbcOtbmltbyAoYW5jaG8pIHBhcmEgdXNhciBtZWRpZGFzIGBsYXJnZWAgKi9cbmV4cG9ydCBjb25zdCBNQUlBX0ZMT0FUSU5HX0JSRUFLUE9JTlRfTEFSR0UgPSAxOTIwXG5cbi8qKiBWaWV3cG9ydCBtw61uaW1vIChhbmNobykgcGFyYSB1c2FyIG1lZGlkYXMgYHh4bGAgKi9cbmV4cG9ydCBjb25zdCBNQUlBX0ZMT0FUSU5HX0JSRUFLUE9JTlRfWFhMID0gMjU2MFxuXG4vKiogQW5jaG8gZWZlY3Rpdm8gZGVsIHBhbmVsIChtaXNtYSBsw7NnaWNhIHF1ZSBsb3MgQG1lZGlhIGRlbCBDU1MpICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFpYUZsb2F0aW5nUGFuZWxXaWR0aFB4KCk6IG51bWJlciB7XG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBNQUlBX0ZMT0FUSU5HX1BBTkVMX1dJRFRIX1BYLmRlZmF1bHRcbiAgfVxuICBjb25zdCB2dyA9IHdpbmRvdy5pbm5lcldpZHRoXG4gIGlmICh2dyA+PSBNQUlBX0ZMT0FUSU5HX0JSRUFLUE9JTlRfWFhMKSB7XG4gICAgcmV0dXJuIE1BSUFfRkxPQVRJTkdfUEFORUxfV0lEVEhfUFgueHhsXG4gIH1cbiAgaWYgKHZ3ID49IE1BSUFfRkxPQVRJTkdfQlJFQUtQT0lOVF9MQVJHRSkge1xuICAgIHJldHVybiBNQUlBX0ZMT0FUSU5HX1BBTkVMX1dJRFRIX1BYLmxhcmdlXG4gIH1cbiAgcmV0dXJuIE1BSUFfRkxPQVRJTkdfUEFORUxfV0lEVEhfUFguZGVmYXVsdFxufVxuIl0sIm1hcHBpbmdzIjoiQUFFQTtBQUNBLE9BQU8sSUFBTUEsNEJBQTRCLEdBQUc7RUFDMUMsV0FBUyxHQUFHO0VBQ1pDLEtBQUssRUFBRSxHQUFHO0VBQ1ZDLEdBQUcsRUFBRTtBQUNQLENBQVU7O0FBRVY7QUFDQSxPQUFPLElBQU1DLDZCQUE2QixHQUFHO0VBQzNDLFdBQVMsR0FBRztFQUNaRixLQUFLLEVBQUUsR0FBRztFQUNWQyxHQUFHLEVBQUU7QUFDUCxDQUFVOztBQUVWO0FBQ0EsT0FBTyxJQUFNRSw4QkFBOEIsR0FBRyxJQUFJOztBQUVsRDtBQUNBLE9BQU8sSUFBTUMsNEJBQTRCLEdBQUcsSUFBSTs7QUFFaEQ7QUFDQSxPQUFPLFNBQVNDLDJCQUEyQkEsQ0FBQSxFQUFXO0VBQ3BELElBQUksT0FBT0MsTUFBTSxLQUFLLFdBQVcsRUFBRTtJQUNqQyxPQUFPUCw0QkFBNEIsV0FBUTtFQUM3QztFQUNBLElBQU1RLEVBQUUsR0FBR0QsTUFBTSxDQUFDRSxVQUFVO0VBQzVCLElBQUlELEVBQUUsSUFBSUgsNEJBQTRCLEVBQUU7SUFDdEMsT0FBT0wsNEJBQTRCLENBQUNFLEdBQUc7RUFDekM7RUFDQSxJQUFJTSxFQUFFLElBQUlKLDhCQUE4QixFQUFFO0lBQ3hDLE9BQU9KLDRCQUE0QixDQUFDQyxLQUFLO0VBQzNDO0VBQ0EsT0FBT0QsNEJBQTRCLFdBQVE7QUFDN0MiLCJpZ25vcmVMaXN0IjpbXX0=
|