@projectcor/maia-components 2.11.32-1 → 2.11.32-2

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.
Files changed (62) hide show
  1. package/lib/components/atoms/FeedbackButton/FeedbackButton.styles.js +2 -2
  2. package/lib/components/atoms/icons/ChatConversation.js +40 -0
  3. package/lib/components/atoms/icons/index.js +2 -2
  4. package/lib/components/molecules/ChatAIClientSelector/ChatAIClientSelector.js +41 -10
  5. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +8 -7
  6. package/lib/components/molecules/ChatAIHistory/ChatAIHistory.js +16 -3
  7. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +2 -6
  8. package/lib/components/molecules/ChatAIHome/styles.js +7 -14
  9. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +165 -178
  10. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +347 -254
  11. package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +15 -28
  12. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +16 -81
  13. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.styles.js +2 -17
  14. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.js +10 -9
  15. package/lib/components/molecules/ChatAIProjectSelector/ChatAIProjectSelector.js +37 -6
  16. package/lib/components/molecules/Sidebar/Sidebar.js +269 -323
  17. package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +17 -22
  18. package/lib/components/molecules/Sidebar/Sidebar.styles.js +54 -37
  19. package/lib/components/molecules/Sidebar/SidebarChats.styles.js +73 -0
  20. package/lib/components/molecules/Sidebar/SidebarChatsSection.js +69 -0
  21. package/lib/components/molecules/Sidebar/SidebarChatsSectionModal.js +150 -0
  22. package/lib/components/molecules/Sidebar/SidebarHistoryChat.js +238 -0
  23. package/lib/components/molecules/Sidebar/sidebarChats.helpers.js +70 -0
  24. package/lib/components/molecules/Sidebar/sidebarChats.types.js +14 -0
  25. package/lib/dev/Providers.js +2 -2
  26. package/lib/dev/fixtures/devUser.js +173 -0
  27. package/lib/dev/fixtures/mockedUser.js +169 -0
  28. package/lib/hooks/useChatManager/useChatManager.js +65 -121
  29. package/lib/hooks/useChats/useChats.js +12 -4
  30. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +73 -145
  31. package/lib/hooks/useProjectSearch.js +4 -11
  32. package/lib/lang/br/index.js +11 -6
  33. package/lib/lang/en/index.js +11 -6
  34. package/lib/lang/es/index.js +11 -6
  35. package/lib/lang/fr/index.js +11 -6
  36. package/lib/services/maia/Chats/getChatMessagesV2.js +114 -0
  37. package/lib/services/maia/Chats/getChatsByUserId.js +14 -8
  38. package/lib/services/maia/Chats/getSessionByAgent.js +66 -0
  39. package/lib/services/maia/Chats/getSessionsGroupedV2.js +70 -0
  40. package/lib/services/maia/Chats/index.js +7 -1
  41. package/lib/services/maia/Orchestrator/orchestrator.js +4 -6
  42. package/lib/services/maia/client.js +44 -9
  43. package/lib/services/query/projectSearchByValueQuery.js +2 -2
  44. package/lib/store/chatsStore.types.js +10 -2
  45. package/lib/store/useChatsStore.js +75 -37
  46. package/lib/types/Chat.js +3 -1
  47. package/lib/types/Project.js +1 -1
  48. package/package.json +1 -1
  49. package/lib/components/atoms/icons/MaiaChatLayoutMenuIcon.js +0 -33
  50. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/FloatingPanelMotion.js +0 -16
  51. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/FloatingPanelMotion.styles.js +0 -12
  52. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/constants.js +0 -13
  53. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/index.js +0 -3
  54. package/lib/components/molecules/ChatAIModal/floatingPanelMotion/useFloatingPanelDragTilt.js +0 -57
  55. package/lib/components/molecules/ChatAIModal/layout.js +0 -35
  56. package/lib/hooks/useSmoothStreamText/index.js +0 -2
  57. package/lib/hooks/useSmoothStreamText/useSmoothStreamText.js +0 -189
  58. package/lib/hooks/useStreamingMessage/index.js +0 -3
  59. package/lib/hooks/useStreamingMessage/streamingStore.js +0 -69
  60. package/lib/hooks/useStreamingMessage/useStreamingMessage.js +0 -22
  61. package/lib/mocks/mockChats.js +0 -395
  62. package/lib/mocks/mockedUser.js +0 -169
@@ -1,33 +0,0 @@
1
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
- import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
- var _excluded = ["width", "height", "color"];
4
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
5
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
6
- import { jsx as _jsx } from "react/jsx-runtime";
7
- export var MaiaChatLayoutMenuIcon = function MaiaChatLayoutMenuIcon(_ref) {
8
- var _ref$width = _ref.width,
9
- width = _ref$width === void 0 ? 24 : _ref$width,
10
- _ref$height = _ref.height,
11
- height = _ref$height === void 0 ? 24 : _ref$height,
12
- _ref$color = _ref.color,
13
- color = _ref$color === void 0 ? '#0D0D0D' : _ref$color,
14
- props = _objectWithoutProperties(_ref, _excluded);
15
- return /*#__PURE__*/_jsx("svg", _objectSpread(_objectSpread({
16
- xmlns: "http://www.w3.org/2000/svg",
17
- width: width,
18
- height: height,
19
- viewBox: "0 0 24 24",
20
- fill: "none"
21
- }, props), {}, {
22
- children: /*#__PURE__*/_jsx("path", {
23
- className: "no-fill",
24
- fill: "none",
25
- stroke: color,
26
- strokeLinecap: "round",
27
- strokeLinejoin: "round",
28
- strokeWidth: 2,
29
- d: "M19 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V5a2 2 0 0 0-2-2ZM9 3v18M9 15h12"
30
- })
31
- }));
32
- };
33
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJNYWlhQ2hhdExheW91dE1lbnVJY29uIiwiX3JlZiIsIl9yZWYkd2lkdGgiLCJ3aWR0aCIsIl9yZWYkaGVpZ2h0IiwiaGVpZ2h0IiwiX3JlZiRjb2xvciIsImNvbG9yIiwicHJvcHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJfanN4IiwiX29iamVjdFNwcmVhZCIsInhtbG5zIiwidmlld0JveCIsImZpbGwiLCJjaGlsZHJlbiIsImNsYXNzTmFtZSIsInN0cm9rZSIsInN0cm9rZUxpbmVjYXAiLCJzdHJva2VMaW5lam9pbiIsInN0cm9rZVdpZHRoIiwiZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2F0b21zL2ljb25zL01haWFDaGF0TGF5b3V0TWVudUljb24udHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU1ZHUHJvcHMgfSBmcm9tICdyZWFjdCdcblxudHlwZSBNYWlhQ2hhdExheW91dE1lbnVJY29uUHJvcHMgPSBTVkdQcm9wczxTVkdTVkdFbGVtZW50PiAmIHtcbiAgLyoqIENvbG9yIGRlbCB0cmF6bzsgYWxpbmVhZG8gY29uIGljb25vcyBlbiBJY29uQnV0dG9uICh+IzBEMEQwRCkgKi9cbiAgY29sb3I/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGNvbnN0IE1haWFDaGF0TGF5b3V0TWVudUljb24gPSAoe1xuICB3aWR0aCA9IDI0LFxuICBoZWlnaHQgPSAyNCxcbiAgY29sb3IgPSAnIzBEMEQwRCcsXG4gIC4uLnByb3BzXG59OiBNYWlhQ2hhdExheW91dE1lbnVJY29uUHJvcHMpID0+IChcbiAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9e3dpZHRofSBoZWlnaHQ9e2hlaWdodH0gdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgey4uLnByb3BzfT5cbiAgICA8cGF0aFxuICAgICAgY2xhc3NOYW1lPVwibm8tZmlsbFwiXG4gICAgICBmaWxsPVwibm9uZVwiXG4gICAgICBzdHJva2U9e2NvbG9yfVxuICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgc3Ryb2tlV2lkdGg9ezJ9XG4gICAgICBkPVwiTTE5IDNINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoMTRhMiAyIDAgMCAwIDItMlY1YTIgMiAwIDAgMC0yLTJaTTkgM3YxOE05IDE1aDEyXCJcbiAgICAvPlxuICA8L3N2Zz5cbilcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBT0EsT0FBTyxJQUFNQSxzQkFBc0IsR0FBRyxTQUF6QkEsc0JBQXNCQSxDQUFBQyxJQUFBO0VBQUEsSUFBQUMsVUFBQSxHQUFBRCxJQUFBLENBQ2pDRSxLQUFLO0lBQUxBLEtBQUssR0FBQUQsVUFBQSxjQUFHLEVBQUUsR0FBQUEsVUFBQTtJQUFBRSxXQUFBLEdBQUFILElBQUEsQ0FDVkksTUFBTTtJQUFOQSxNQUFNLEdBQUFELFdBQUEsY0FBRyxFQUFFLEdBQUFBLFdBQUE7SUFBQUUsVUFBQSxHQUFBTCxJQUFBLENBQ1hNLEtBQUs7SUFBTEEsS0FBSyxHQUFBRCxVQUFBLGNBQUcsU0FBUyxHQUFBQSxVQUFBO0lBQ2RFLEtBQUssR0FBQUMsd0JBQUEsQ0FBQVIsSUFBQSxFQUFBUyxTQUFBO0VBQUEsb0JBRVJDLElBQUEsUUFBQUMsYUFBQSxDQUFBQSxhQUFBO0lBQUtDLEtBQUssRUFBQyw0QkFBNEI7SUFBQ1YsS0FBSyxFQUFFQSxLQUFNO0lBQUNFLE1BQU0sRUFBRUEsTUFBTztJQUFDUyxPQUFPLEVBQUMsV0FBVztJQUFDQyxJQUFJLEVBQUM7RUFBTSxHQUFLUCxLQUFLO0lBQUFRLFFBQUEsZUFDN0dMLElBQUE7TUFDRU0sU0FBUyxFQUFDLFNBQVM7TUFDbkJGLElBQUksRUFBQyxNQUFNO01BQ1hHLE1BQU0sRUFBRVgsS0FBTTtNQUNkWSxhQUFhLEVBQUMsT0FBTztNQUNyQkMsY0FBYyxFQUFDLE9BQU87TUFDdEJDLFdBQVcsRUFBRSxDQUFFO01BQ2ZDLENBQUMsRUFBQztJQUF5RixDQUM1RjtFQUFDLEVBQ0MsQ0FBQztBQUFBLENBQ1AiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -1,16 +0,0 @@
1
- import { SCCAIMFloatingPanelMotionRoot } from './FloatingPanelMotion.styles';
2
- import { jsx as _jsx } from "react/jsx-runtime";
3
- export function FloatingPanelMotion(_ref) {
4
- var tilt = _ref.tilt,
5
- children = _ref.children,
6
- _ref$expanded = _ref.expanded,
7
- expanded = _ref$expanded === void 0 ? false : _ref$expanded;
8
- return /*#__PURE__*/_jsx(SCCAIMFloatingPanelMotionRoot, {
9
- $expanded: expanded,
10
- style: {
11
- rotate: tilt
12
- },
13
- children: children
14
- });
15
- }
16
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTQ0NBSU1GbG9hdGluZ1BhbmVsTW90aW9uUm9vdCIsImpzeCIsIl9qc3giLCJGbG9hdGluZ1BhbmVsTW90aW9uIiwiX3JlZiIsInRpbHQiLCJjaGlsZHJlbiIsIl9yZWYkZXhwYW5kZWQiLCJleHBhbmRlZCIsIiRleHBhbmRlZCIsInN0eWxlIiwicm90YXRlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRBSU1vZGFsL2Zsb2F0aW5nUGFuZWxNb3Rpb24vRmxvYXRpbmdQYW5lbE1vdGlvbi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBNb3Rpb25WYWx1ZSB9IGZyb20gJ2ZyYW1lci1tb3Rpb24nXG5pbXBvcnQgdHlwZSB7IFJlYWN0Tm9kZSB9IGZyb20gJ3JlYWN0J1xuXG5pbXBvcnQgeyBTQ0NBSU1GbG9hdGluZ1BhbmVsTW90aW9uUm9vdCB9IGZyb20gJy4vRmxvYXRpbmdQYW5lbE1vdGlvbi5zdHlsZXMnXG5cbnR5cGUgRmxvYXRpbmdQYW5lbE1vdGlvblByb3BzID0ge1xuICB0aWx0OiBNb3Rpb25WYWx1ZTxudW1iZXI+XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGVcbiAgZXhwYW5kZWQ/OiBib29sZWFuXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBGbG9hdGluZ1BhbmVsTW90aW9uKHsgdGlsdCwgY2hpbGRyZW4sIGV4cGFuZGVkID0gZmFsc2UgfTogRmxvYXRpbmdQYW5lbE1vdGlvblByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPFNDQ0FJTUZsb2F0aW5nUGFuZWxNb3Rpb25Sb290ICRleHBhbmRlZD17ZXhwYW5kZWR9IHN0eWxlPXt7IHJvdGF0ZTogdGlsdCB9fT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L1NDQ0FJTUZsb2F0aW5nUGFuZWxNb3Rpb25Sb290PlxuICApXG59XG4iXSwibWFwcGluZ3MiOiJBQUdBLFNBQVNBLDZCQUE2QixRQUFRLDhCQUE4QjtBQUFBLFNBQUFDLEdBQUEsSUFBQUMsSUFBQTtBQVE1RSxPQUFPLFNBQVNDLG1CQUFtQkEsQ0FBQUMsSUFBQSxFQUFpRTtFQUFBLElBQTlEQyxJQUFJLEdBQUFELElBQUEsQ0FBSkMsSUFBSTtJQUFFQyxRQUFRLEdBQUFGLElBQUEsQ0FBUkUsUUFBUTtJQUFBQyxhQUFBLEdBQUFILElBQUEsQ0FBRUksUUFBUTtJQUFSQSxRQUFRLEdBQUFELGFBQUEsY0FBRyxLQUFLLEdBQUFBLGFBQUE7RUFDcEUsb0JBQ0VMLElBQUEsQ0FBQ0YsNkJBQTZCO0lBQUNTLFNBQVMsRUFBRUQsUUFBUztJQUFDRSxLQUFLLEVBQUU7TUFBRUMsTUFBTSxFQUFFTjtJQUFLLENBQUU7SUFBQUMsUUFBQSxFQUN6RUE7RUFBUSxDQUNvQixDQUFDO0FBRXBDIiwiaWdub3JlTGlzdCI6W119
@@ -1,12 +0,0 @@
1
- import { motion } from 'framer-motion';
2
- import styled, { css } from 'styled-components';
3
-
4
- /** Contenedor motion del panel flotante: pivote inferior (cuelga desde abajo). */
5
- export var SCCAIMFloatingPanelMotionRoot = styled(motion.div).withConfig({
6
- displayName: "FloatingPanelMotionstyles__SCCAIMFloatingPanelMotionRoot",
7
- componentId: "sc-1omxcem-0"
8
- })(["display:flex;height:100%;transform-origin:50% 100%;", ""], function (_ref) {
9
- var $expanded = _ref.$expanded;
10
- return $expanded && css(["flex:1 1 0%;min-width:0;width:100%;max-width:100%;"]);
11
- });
12
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtb3Rpb24iLCJzdHlsZWQiLCJjc3MiLCJTQ0NBSU1GbG9hdGluZ1BhbmVsTW90aW9uUm9vdCIsImRpdiIsIndpdGhDb25maWciLCJkaXNwbGF5TmFtZSIsImNvbXBvbmVudElkIiwiX3JlZiIsIiRleHBhbmRlZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0QUlNb2RhbC9mbG9hdGluZ1BhbmVsTW90aW9uL0Zsb2F0aW5nUGFuZWxNb3Rpb24uc3R5bGVzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtb3Rpb24gfSBmcm9tICdmcmFtZXItbW90aW9uJ1xuaW1wb3J0IHN0eWxlZCwgeyBjc3MgfSBmcm9tICdzdHlsZWQtY29tcG9uZW50cydcblxuLyoqIENvbnRlbmVkb3IgbW90aW9uIGRlbCBwYW5lbCBmbG90YW50ZTogcGl2b3RlIGluZmVyaW9yIChjdWVsZ2EgZGVzZGUgYWJham8pLiAqL1xuZXhwb3J0IGNvbnN0IFNDQ0FJTUZsb2F0aW5nUGFuZWxNb3Rpb25Sb290ID0gc3R5bGVkKG1vdGlvbi5kaXYpPHsgJGV4cGFuZGVkPzogYm9vbGVhbiB9PmBcbiAgZGlzcGxheTogZmxleDtcbiAgaGVpZ2h0OiAxMDAlO1xuICB0cmFuc2Zvcm0tb3JpZ2luOiA1MCUgMTAwJTtcbiAgLyogRW4gY2hhdCBjb21wbGV0byBlbCBtb3Rpb24gcm9vdCBkZWJlIGxsZW5hciBlbCBhbmNobyBkZWwgd3JhcHBlcjsgc2kgbm8sIHdpZHRoOjEwMCUgZGVsIGhpam8gY29sYXBzYS4gKi9cbiAgJHsoeyAkZXhwYW5kZWQgfSkgPT5cbiAgICAkZXhwYW5kZWQgJiZcbiAgICBjc3NgXG4gICAgICBmbGV4OiAxIDEgMCU7XG4gICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBgfVxuYFxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxNQUFNLFFBQVEsZUFBZTtBQUN0QyxPQUFPQyxNQUFNLElBQUlDLEdBQUcsUUFBUSxtQkFBbUI7O0FBRS9DO0FBQ0EsT0FBTyxJQUFNQyw2QkFBNkIsR0FBR0YsTUFBTSxDQUFDRCxNQUFNLENBQUNJLEdBQUcsQ0FBQyxDQUFBQyxVQUFBO0VBQUFDLFdBQUE7RUFBQUMsV0FBQTtBQUFBLGdFQUszRCxVQUFBQyxJQUFBO0VBQUEsSUFBR0MsU0FBUyxHQUFBRCxJQUFBLENBQVRDLFNBQVM7RUFBQSxPQUNaQSxTQUFTLElBQ1RQLEdBQUcsd0RBS0Y7QUFBQSxFQUNKIiwiaWdub3JlTGlzdCI6W119
@@ -1,13 +0,0 @@
1
- export var FLOATING_DRAG_TILT_SPRING = {
2
- stiffness: 420,
3
- damping: 34,
4
- mass: 0.42
5
- };
6
- export var FLOATING_DRAG_TILT_DX = 0.11;
7
- export var FLOATING_DRAG_TILT_DY = 0.035;
8
- export var FLOATING_DRAG_TILT_MAX_DEG = 5.5;
9
- export var FLOATING_DRAG_TILT_IDLE_MS = 48;
10
- export function clampFloatingDragTilt(deg) {
11
- return Math.max(-FLOATING_DRAG_TILT_MAX_DEG, Math.min(FLOATING_DRAG_TILT_MAX_DEG, deg));
12
- }
13
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGTE9BVElOR19EUkFHX1RJTFRfU1BSSU5HIiwic3RpZmZuZXNzIiwiZGFtcGluZyIsIm1hc3MiLCJGTE9BVElOR19EUkFHX1RJTFRfRFgiLCJGTE9BVElOR19EUkFHX1RJTFRfRFkiLCJGTE9BVElOR19EUkFHX1RJTFRfTUFYX0RFRyIsIkZMT0FUSU5HX0RSQUdfVElMVF9JRExFX01TIiwiY2xhbXBGbG9hdGluZ0RyYWdUaWx0IiwiZGVnIiwiTWF0aCIsIm1heCIsIm1pbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0QUlNb2RhbC9mbG9hdGluZ1BhbmVsTW90aW9uL2NvbnN0YW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgRkxPQVRJTkdfRFJBR19USUxUX1NQUklORyA9IHtcbiAgc3RpZmZuZXNzOiA0MjAsXG4gIGRhbXBpbmc6IDM0LFxuICBtYXNzOiAwLjQyLFxufSBhcyBjb25zdFxuXG5leHBvcnQgY29uc3QgRkxPQVRJTkdfRFJBR19USUxUX0RYID0gMC4xMVxuZXhwb3J0IGNvbnN0IEZMT0FUSU5HX0RSQUdfVElMVF9EWSA9IDAuMDM1XG5leHBvcnQgY29uc3QgRkxPQVRJTkdfRFJBR19USUxUX01BWF9ERUcgPSA1LjVcbmV4cG9ydCBjb25zdCBGTE9BVElOR19EUkFHX1RJTFRfSURMRV9NUyA9IDQ4XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGFtcEZsb2F0aW5nRHJhZ1RpbHQoZGVnOiBudW1iZXIpIHtcbiAgcmV0dXJuIE1hdGgubWF4KC1GTE9BVElOR19EUkFHX1RJTFRfTUFYX0RFRywgTWF0aC5taW4oRkxPQVRJTkdfRFJBR19USUxUX01BWF9ERUcsIGRlZykpXG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBTUEseUJBQXlCLEdBQUc7RUFDdkNDLFNBQVMsRUFBRSxHQUFHO0VBQ2RDLE9BQU8sRUFBRSxFQUFFO0VBQ1hDLElBQUksRUFBRTtBQUNSLENBQVU7QUFFVixPQUFPLElBQU1DLHFCQUFxQixHQUFHLElBQUk7QUFDekMsT0FBTyxJQUFNQyxxQkFBcUIsR0FBRyxLQUFLO0FBQzFDLE9BQU8sSUFBTUMsMEJBQTBCLEdBQUcsR0FBRztBQUM3QyxPQUFPLElBQU1DLDBCQUEwQixHQUFHLEVBQUU7QUFFNUMsT0FBTyxTQUFTQyxxQkFBcUJBLENBQUNDLEdBQVcsRUFBRTtFQUNqRCxPQUFPQyxJQUFJLENBQUNDLEdBQUcsQ0FBQyxDQUFDTCwwQkFBMEIsRUFBRUksSUFBSSxDQUFDRSxHQUFHLENBQUNOLDBCQUEwQixFQUFFRyxHQUFHLENBQUMsQ0FBQztBQUN6RiIsImlnbm9yZUxpc3QiOltdfQ==
@@ -1,3 +0,0 @@
1
- export { FloatingPanelMotion } from './FloatingPanelMotion';
2
- export { useFloatingPanelDragTilt } from './useFloatingPanelDragTilt';
3
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGbG9hdGluZ1BhbmVsTW90aW9uIiwidXNlRmxvYXRpbmdQYW5lbERyYWdUaWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRBSU1vZGFsL2Zsb2F0aW5nUGFuZWxNb3Rpb24vaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgRmxvYXRpbmdQYW5lbE1vdGlvbiB9IGZyb20gJy4vRmxvYXRpbmdQYW5lbE1vdGlvbidcbmV4cG9ydCB7IHVzZUZsb2F0aW5nUGFuZWxEcmFnVGlsdCB9IGZyb20gJy4vdXNlRmxvYXRpbmdQYW5lbERyYWdUaWx0J1xuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxtQkFBbUIsUUFBUSx1QkFBdUI7QUFDM0QsU0FBU0Msd0JBQXdCLFFBQVEsNEJBQTRCIiwiaWdub3JlTGlzdCI6W119
@@ -1,57 +0,0 @@
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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
@@ -1,35 +0,0 @@
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=
@@ -1,2 +0,0 @@
1
- export { useSmoothStreamText } from './useSmoothStreamText';
2
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTbW9vdGhTdHJlYW1UZXh0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL3VzZVNtb290aFN0cmVhbVRleHQvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgdXNlU21vb3RoU3RyZWFtVGV4dCB9IGZyb20gJy4vdXNlU21vb3RoU3RyZWFtVGV4dCdcbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsbUJBQW1CLFFBQVEsdUJBQXVCIiwiaWdub3JlTGlzdCI6W119
@@ -1,189 +0,0 @@
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 ? 450 : _ref$targetLagMs,
21
- _ref$snapToWordBounda = _ref.snapToWordBoundary,
22
- snapToWordBoundary = _ref$snapToWordBounda === void 0 ? false : _ref$snapToWordBounda,
23
- _ref$adaptToBackendRa = _ref.adaptToBackendRate,
24
- adaptToBackendRate = _ref$adaptToBackendRa === void 0 ? true : _ref$adaptToBackendRa,
25
- _ref$backendRateFacto = _ref.backendRateFactor,
26
- backendRateFactor = _ref$backendRateFacto === void 0 ? 0.95 : _ref$backendRateFacto,
27
- _ref$targetBufferMs = _ref.targetBufferMs,
28
- targetBufferMs = _ref$targetBufferMs === void 0 ? 600 : _ref$targetBufferMs,
29
- _ref$bufferCorrection = _ref.bufferCorrectionMs,
30
- bufferCorrectionMs = _ref$bufferCorrection === void 0 ? 500 : _ref$bufferCorrection,
31
- _ref$minBufferChars = _ref.minBufferChars,
32
- minBufferChars = _ref$minBufferChars === void 0 ? 70 : _ref$minBufferChars,
33
- _ref$warmupMs = _ref.warmupMs,
34
- warmupMs = _ref$warmupMs === void 0 ? 400 : _ref$warmupMs;
35
- var _useState = useState(function () {
36
- return enabled ? '' : targetText;
37
- }),
38
- _useState2 = _slicedToArray(_useState, 2),
39
- displayed = _useState2[0],
40
- setDisplayed = _useState2[1];
41
- var targetRef = useRef(targetText);
42
- var displayedLenRef = useRef(displayed.length);
43
- var rafRef = useRef(null);
44
- var lastTickRef = useRef(0);
45
-
46
- // Medición de la cadencia del backend: se actualiza cuando cambia targetText.
47
- var lastTargetLenRef = useRef(0);
48
- var lastTargetUpdateRef = useRef(0);
49
- // Estimación EMA de chars/ms producidos por el backend.
50
- var backendCharsPerMsRef = useRef(0);
51
- // Timestamp del primer chunk recibido (para warmup).
52
- var firstChunkAtRef = useRef(0);
53
- // Si el warmup ya terminó (una vez true, no vuelve a activarse en este stream).
54
- var warmupDoneRef = useRef(false);
55
- useEffect(function () {
56
- var now = typeof performance !== 'undefined' ? performance.now() : Date.now();
57
- var prevTargetLen = lastTargetLenRef.current;
58
- var deltaChars = targetText.length - prevTargetLen;
59
- var prevTargetAt = lastTargetUpdateRef.current;
60
- if (enabled && deltaChars > 0) {
61
- if (firstChunkAtRef.current === 0) firstChunkAtRef.current = now;
62
- }
63
- if (enabled && deltaChars > 0 && prevTargetAt > 0) {
64
- var dt = Math.max(1, now - prevTargetAt);
65
- var rate = deltaChars / dt;
66
- var prevRate = backendCharsPerMsRef.current;
67
- // EMA suave (alpha = 0.2) para absorber jitter y seguir la tendencia.
68
- backendCharsPerMsRef.current = prevRate === 0 ? rate : prevRate * 0.8 + rate * 0.2;
69
- }
70
- if (enabled && targetText.length !== prevTargetLen) {
71
- lastTargetLenRef.current = targetText.length;
72
- lastTargetUpdateRef.current = now;
73
- }
74
- targetRef.current = targetText;
75
- if (!enabled) {
76
- if (rafRef.current != null) {
77
- cancelAnimationFrame(rafRef.current);
78
- rafRef.current = null;
79
- }
80
- lastTickRef.current = 0;
81
- if (displayedLenRef.current !== targetText.length) {
82
- displayedLenRef.current = targetText.length;
83
- setDisplayed(targetText);
84
- }
85
- // Reset de cadencia cuando se apaga para no contaminar el próximo stream.
86
- lastTargetLenRef.current = 0;
87
- lastTargetUpdateRef.current = 0;
88
- backendCharsPerMsRef.current = 0;
89
- firstChunkAtRef.current = 0;
90
- warmupDoneRef.current = false;
91
- return undefined;
92
- }
93
- if (displayedLenRef.current > targetText.length) {
94
- displayedLenRef.current = 0;
95
- setDisplayed('');
96
- }
97
- if (rafRef.current != null) return undefined;
98
- var _tick = function tick(tickNow) {
99
- var prev = lastTickRef.current;
100
- var dt = prev ? Math.min(tickNow - prev, 64) : 16;
101
- lastTickRef.current = tickNow;
102
- var target = targetRef.current;
103
- var currentLen = displayedLenRef.current;
104
- var remaining = target.length - currentLen;
105
- if (remaining <= 0) {
106
- rafRef.current = requestAnimationFrame(_tick);
107
- return;
108
- }
109
-
110
- // Warmup: al comienzo del stream esperamos `warmupMs` desde el primer
111
- // chunk antes de empezar a pintar. Esto construye un colchón inicial y
112
- // evita arrancar rápido para congelarnos acto seguido si el backend
113
- // tarda mucho en emitir el segundo chunk.
114
- if (!warmupDoneRef.current) {
115
- var firstAt = firstChunkAtRef.current;
116
- var waitedMs = firstAt > 0 ? tickNow - firstAt : 0;
117
- var warmupComplete = warmupMs <= 0 || waitedMs >= warmupMs || target.length >= minBufferChars * 2;
118
- if (!warmupComplete) {
119
- rafRef.current = requestAnimationFrame(_tick);
120
- return;
121
- }
122
- warmupDoneRef.current = true;
123
- }
124
-
125
- // Velocidad base: vaciar el buffer en ~targetLagMs.
126
- var charsPerMs = remaining / targetLagMs;
127
- var effectiveCharsPerMs = charsPerMs;
128
- var backendRate = backendCharsPerMsRef.current;
129
- if (adaptToBackendRate && backendRate > 0) {
130
- if (typeof targetBufferMs === 'number') {
131
- // Control proporcional: mantener el buffer en torno al colchón
132
- // objetivo. Si bufferMs < target → frenamos por debajo del backend
133
- // para acumular; si bufferMs > target → aceleramos para descargar.
134
- // En equilibrio, pintamos al ritmo promedio del backend.
135
- //
136
- // El colchón objetivo se calcula sobre la tasa **efectiva** que
137
- // podemos pintar (capeada por `maxCharsPerFrame` a 60fps), no sobre
138
- // la del backend pura. Esto evita el caso patológico de ráfagas:
139
- // si el backend tira a 6500 ch/s, el target NO se vuelve 3900 chars
140
- // (que el render jamás podría sostener), sino algo razonable que
141
- // la animación pueda mantener.
142
- //
143
- // Piso absoluto: el colchón nunca baja de `minBufferChars` aunque
144
- // el backend esté mandando lento al inicio del stream.
145
- var renderRateCap = maxCharsPerFrame * 60 / 1000;
146
- var effectiveBufferRate = Math.min(backendRate, renderRateCap);
147
- var targetBufferChars = Math.max(minBufferChars, targetBufferMs * effectiveBufferRate);
148
- var bufferDelta = remaining - targetBufferChars;
149
- // Corrección tiene unidades de chars/ms. bufferCorrectionMs controla
150
- // qué tan rápido el buffer real converge al objetivo.
151
- var correction = bufferDelta / Math.max(1, bufferCorrectionMs);
152
- effectiveCharsPerMs = Math.max(0, backendRate + correction);
153
- // Acotar por la velocidad de "vaciar en targetLagMs" para que si
154
- // de pronto hay un pico gigante de buffer no salgamos disparados.
155
- effectiveCharsPerMs = Math.min(effectiveCharsPerMs, charsPerMs);
156
- } else {
157
- // Modo simple: cap a la tasa del backend * factor.
158
- var cap = backendRate * backendRateFactor;
159
- effectiveCharsPerMs = Math.min(effectiveCharsPerMs, cap);
160
- }
161
- }
162
- var rawStep = Math.ceil(effectiveCharsPerMs * dt);
163
- var step = Math.max(minCharsPerFrame, Math.min(maxCharsPerFrame, rawStep));
164
- var nextLen = Math.min(target.length, currentLen + step);
165
- if (snapToWordBoundary && nextLen < target.length) {
166
- var slice = target.slice(currentLen, nextLen);
167
- var lastBoundary = Math.max(slice.lastIndexOf(' '), slice.lastIndexOf('\n'), slice.lastIndexOf('\t'));
168
- if (lastBoundary >= 0) {
169
- nextLen = currentLen + lastBoundary + 1;
170
- }
171
- }
172
- if (nextLen !== currentLen) {
173
- displayedLenRef.current = nextLen;
174
- setDisplayed(target.slice(0, nextLen));
175
- }
176
- rafRef.current = requestAnimationFrame(_tick);
177
- };
178
- rafRef.current = requestAnimationFrame(_tick);
179
- return function () {
180
- if (rafRef.current != null) {
181
- cancelAnimationFrame(rafRef.current);
182
- rafRef.current = null;
183
- }
184
- lastTickRef.current = 0;
185
- };
186
- }, [targetText, enabled, minCharsPerFrame, maxCharsPerFrame, targetLagMs, snapToWordBoundary, adaptToBackendRate, backendRateFactor, targetBufferMs, bufferCorrectionMs, minBufferChars, warmupMs]);
187
- return displayed;
188
- };
189
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZVNtb290aFN0cmVhbVRleHQiLCJ0YXJnZXRUZXh0IiwiX3JlZiIsImVuYWJsZWQiLCJfcmVmJG1pbkNoYXJzUGVyRnJhbWUiLCJtaW5DaGFyc1BlckZyYW1lIiwiX3JlZiRtYXhDaGFyc1BlckZyYW1lIiwibWF4Q2hhcnNQZXJGcmFtZSIsIl9yZWYkdGFyZ2V0TGFnTXMiLCJ0YXJnZXRMYWdNcyIsIl9yZWYkc25hcFRvV29yZEJvdW5kYSIsInNuYXBUb1dvcmRCb3VuZGFyeSIsIl9yZWYkYWRhcHRUb0JhY2tlbmRSYSIsImFkYXB0VG9CYWNrZW5kUmF0ZSIsIl9yZWYkYmFja2VuZFJhdGVGYWN0byIsImJhY2tlbmRSYXRlRmFjdG9yIiwiX3JlZiR0YXJnZXRCdWZmZXJNcyIsInRhcmdldEJ1ZmZlck1zIiwiX3JlZiRidWZmZXJDb3JyZWN0aW9uIiwiYnVmZmVyQ29ycmVjdGlvbk1zIiwiX3JlZiRtaW5CdWZmZXJDaGFycyIsIm1pbkJ1ZmZlckNoYXJzIiwiX3JlZiR3YXJtdXBNcyIsIndhcm11cE1zIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiZGlzcGxheWVkIiwic2V0RGlzcGxheWVkIiwidGFyZ2V0UmVmIiwiZGlzcGxheWVkTGVuUmVmIiwibGVuZ3RoIiwicmFmUmVmIiwibGFzdFRpY2tSZWYiLCJsYXN0VGFyZ2V0TGVuUmVmIiwibGFzdFRhcmdldFVwZGF0ZVJlZiIsImJhY2tlbmRDaGFyc1Blck1zUmVmIiwiZmlyc3RDaHVua0F0UmVmIiwid2FybXVwRG9uZVJlZiIsIm5vdyIsInBlcmZvcm1hbmNlIiwiRGF0ZSIsInByZXZUYXJnZXRMZW4iLCJjdXJyZW50IiwiZGVsdGFDaGFycyIsInByZXZUYXJnZXRBdCIsImR0IiwiTWF0aCIsIm1heCIsInJhdGUiLCJwcmV2UmF0ZSIsImNhbmNlbEFuaW1hdGlvbkZyYW1lIiwidW5kZWZpbmVkIiwidGljayIsInRpY2tOb3ciLCJwcmV2IiwibWluIiwidGFyZ2V0IiwiY3VycmVudExlbiIsInJlbWFpbmluZyIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImZpcnN0QXQiLCJ3YWl0ZWRNcyIsIndhcm11cENvbXBsZXRlIiwiY2hhcnNQZXJNcyIsImVmZmVjdGl2ZUNoYXJzUGVyTXMiLCJiYWNrZW5kUmF0ZSIsInJlbmRlclJhdGVDYXAiLCJlZmZlY3RpdmVCdWZmZXJSYXRlIiwidGFyZ2V0QnVmZmVyQ2hhcnMiLCJidWZmZXJEZWx0YSIsImNvcnJlY3Rpb24iLCJjYXAiLCJyYXdTdGVwIiwiY2VpbCIsInN0ZXAiLCJuZXh0TGVuIiwic2xpY2UiLCJsYXN0Qm91bmRhcnkiLCJsYXN0SW5kZXhPZiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob29rcy91c2VTbW9vdGhTdHJlYW1UZXh0L3VzZVNtb290aFN0cmVhbVRleHQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5cbnR5cGUgVXNlU21vb3RoU3RyZWFtVGV4dE9wdGlvbnMgPSB7XG4gIC8qKiBTaSBlc3TDoSBkZXNoYWJpbGl0YWRvLCBkZXZ1ZWx2ZSBlbCB0YXJnZXQgdGFsIGN1YWwgKHNpbiBhbmltYWNpw7NuKS4gKi9cbiAgZW5hYmxlZDogYm9vbGVhblxuICAvKiogQ2FudGlkYWQgbcOtbmltYSBkZSBjaGFycyBhIGxpYmVyYXIgcG9yIGZyYW1lIGN1YW5kbyBoYXkgYnVmZmVyLiAqL1xuICBtaW5DaGFyc1BlckZyYW1lPzogbnVtYmVyXG4gIC8qKiBDb3RhIHN1cGVyaW9yIGRlIGNoYXJzIHBvciBmcmFtZSBwYXJhIGV2aXRhciBzYWx0b3MgZ3JhbmRlcy4gKi9cbiAgbWF4Q2hhcnNQZXJGcmFtZT86IG51bWJlclxuICAvKipcbiAgICogTGFnIG9iamV0aXZvIChtcykgZW50cmUgZWwgdGV4dG8gcmVjaWJpZG8geSBlbCBtb3N0cmFkby4gRWwgaG9vayBjYWxjdWxhXG4gICAqIGRpbsOhbWljYW1lbnRlIGVsIHN0ZXAgcG9yIGZyYW1lIHBhcmEgdmFjaWFyIGVsIGJ1ZmZlciBlbiB+dGFyZ2V0TGFnTXMuXG4gICAqIFZhbG9yZXMgbcOhcyBiYWpvcyA9IHNlIHBvbmUgYWwgZMOtYSBtw6FzIHLDoXBpZG8gKG1lbm9zIFwic3VhdmVcIikuXG4gICAqL1xuICB0YXJnZXRMYWdNcz86IG51bWJlclxuICAvKipcbiAgICogU2kgZXN0w6EgYWN0aXZvLCBhbCBhdmFuemFyIHNlIGRldGllbmUgZW4gZWwgw7psdGltbyBzZXBhcmFkb3IgZGUgcGFsYWJyYVxuICAgKiAoZXNwYWNpbywgc2FsdG8gZGUgbMOtbmVhLCBzaWdub3MgZGUgcHVudHVhY2nDs24pIHBhcmEgZXZpdGFyIHJlbmRlcml6YXJcbiAgICogbWFya2Rvd24gXCJjb3J0YWRvIGEgbGEgbWl0YWRcIiB5IGRhciB1bmEgc2Vuc2FjacOzbiBtw6FzIG5hdHVyYWwuXG4gICAqL1xuICBzbmFwVG9Xb3JkQm91bmRhcnk/OiBib29sZWFuXG4gIC8qKlxuICAgKiBTaSBlc3TDoSBhY3Rpdm8sIG1pZGUgbGEgdGFzYSBwcm9tZWRpbyBhIGxhIHF1ZSBjcmVjZSBlbCB0YXJnZXQgKGNhZGVuY2lhXG4gICAqIGRlbCBiYWNrZW5kIGVuIGNoYXJzL21zKSB5IGxpbWl0YSBsYSB2ZWxvY2lkYWQgZGUgcGludGFkbyBhIGVzYSB0YXNhXG4gICAqIChtdWx0aXBsaWNhZGEgcG9yIGBiYWNrZW5kUmF0ZUZhY3RvcmApLiBFc3RvIGV2aXRhIGVsIGNhc28gdMOtcGljbyBkZVxuICAgKiBcInBpbnRvIHLDoXBpZG8gaGFzdGEgdmFjaWFyIGVsIGJ1ZmZlciB5IGRlc3B1w6lzIHNlIGNvbmdlbGEgZXNwZXJhbmRvXG4gICAqIGFsIHByw7N4aW1vIGNodW5rIGRlbCBiYWNrZW5kXCIuXG4gICAqL1xuICBhZGFwdFRvQmFja2VuZFJhdGU/OiBib29sZWFuXG4gIC8qKlxuICAgKiBGYWN0b3IgYXBsaWNhZG8gYSBsYSB0YXNhIGRlbCBiYWNrZW5kIGN1YW5kbyBgYWRhcHRUb0JhY2tlbmRSYXRlYCBlc3TDoVxuICAgKiBhY3Rpdm8uIFZhbG9yZXMgPCAxIGRlamFuIHVuIGNvbGNow7NuIGNyZWNpZW50ZSAobcOhcyB0b2xlcmFudGUgYSBwYXVzYXMpO1xuICAgKiB2YWxvcmVzID4gMSBpbnRlbnRhbiBhbGNhbnphci4gRGVmYXVsdDogMC45NS5cbiAgICovXG4gIGJhY2tlbmRSYXRlRmFjdG9yPzogbnVtYmVyXG4gIC8qKlxuICAgKiBDb2xjaMOzbiBvYmpldGl2byBkZSBidWZmZXIgZXhwcmVzYWRvIGVuIG1zIChjdcOhbnRvIHRpZW1wbyBkZSB0ZXh0byBxdWVyZW1vc1xuICAgKiB0ZW5lciBzaWVtcHJlIGFkZWxhbnRhZG8gYWwgcGludGFkbykuIFNpIGVzdMOhIGRlZmluaWRvIGp1bnRvIGNvblxuICAgKiBgYWRhcHRUb0JhY2tlbmRSYXRlYCwgc2UgdXNhIHVuIGNvbnRyb2wgcHJvcG9yY2lvbmFsOiBjdWFuZG8gZWwgYnVmZmVyXG4gICAqIGJhamEgZGVsIG9iamV0aXZvLCBsYSB2ZWxvY2lkYWQgY2FlIHBvciBkZWJham8gZGUgbGEgZGVsIGJhY2tlbmQgcGFyYVxuICAgKiByZWxsZW5hcmxvOyBjdWFuZG8gbG8gc3VwZXJhLCBzZSBhY2VsZXJhIHBhcmEgZGVzY2FyZ2FybG8uIEFzw60gbGFcbiAgICogYW5pbWFjacOzbiBhYnNvcmJlIHBhdXNhcyBkZWwgYmFja2VuZCBzaW4gcXVlZGFyc2UgaWRsZS5cbiAgICpcbiAgICogVmFsb3IgcmVjb21lbmRhZG86IDMwMOKAkzYwMG1zIHNlZ8O6biBsYSBlc3RhYmlsaWRhZCBkZWwgYmFja2VuZC5cbiAgICovXG4gIHRhcmdldEJ1ZmZlck1zPzogbnVtYmVyXG4gIC8qKlxuICAgKiBDb25zdGFudGUgZGUgdGllbXBvIChtcykgZGVsIGNvbnRyb2xhZG9yIGRlbCBidWZmZXIuIEN1YW50byBtw6FzIGJham8sXG4gICAqIG3DoXMgYWdyZXNpdmFtZW50ZSBjb3JyaWdlIGRlc3bDrW9zLiBEZWZhdWx0OiA1MDAuXG4gICAqL1xuICBidWZmZXJDb3JyZWN0aW9uTXM/OiBudW1iZXJcbiAgLyoqXG4gICAqIFBpc28gYWJzb2x1dG8gZGVsIGNvbGNow7NuIGVuIGNoYXJzOiBlbCBgdGFyZ2V0QnVmZmVyQ2hhcnNgIGNhbGN1bGFkbyBhXG4gICAqIHBhcnRpciBkZSBgdGFyZ2V0QnVmZmVyTXMgw5cgYmFja2VuZFJhdGVgIG51bmNhIGJhamEgZGUgZXN0ZSB2YWxvci4gw5p0aWxcbiAgICogYWwgY29taWVuem8gZGVsIHN0cmVhbSBjdWFuZG8gbGEgdGFzYSBlc3RpbWFkYSBkZWwgYmFja2VuZCBlcyBiYWphLlxuICAgKiBEZWZhdWx0OiA3MC5cbiAgICovXG4gIG1pbkJ1ZmZlckNoYXJzPzogbnVtYmVyXG4gIC8qKlxuICAgKiBXYXJtdXA6IG1zIHF1ZSBlbCBob29rIGVzcGVyYSBcImFjdW11bGFuZG9cIiBhbnRlcyBkZSBlbXBlemFyIGEgcGludGFyLFxuICAgKiBpbmNsdXNvIHNpIHlhIGhheSBjaGFycyBlbiBlbCBidWZmZXIuIEV2aXRhIGVsIHTDrXBpY28gXCJhcnJhbnF1ZSByw6FwaWRvLFxuICAgKiBjb25nZWxhbWllbnRvXCIgY3VhbmRvIGVsIHByaW1lciBjaHVuayBsbGVnYSBhbnRlcyBxdWUgZWwgc2VndW5kbyBzZVxuICAgKiB0YXJkYSBtdWNoby4gU2kgc2UgZGVmaW5lIGNvbW8gMCwgbm8gaGF5IHdhcm11cC4gRGVmYXVsdDogNDAwLlxuICAgKi9cbiAgd2FybXVwTXM/OiBudW1iZXJcbn1cblxuLyoqXG4gKiBIb29rIHF1ZSBkZXNhY29wbGEgbGEgY2FkZW5jaWEgZGUgbGxlZ2FkYSBkZWwgdGV4dG8gKHN0cmVhbSBTU0UpIGRlIGxhXG4gKiBjYWRlbmNpYSBkZSByZW5kZXJpemFkby4gVXNhIGByZXF1ZXN0QW5pbWF0aW9uRnJhbWVgIHBhcmEgbGliZXJhciBjaGFyc1xuICogYSByaXRtbyBjb25zdGFudGUgaGFjaWEgZWwgRE9NLCBlbGltaW5hbmRvIGxvcyBcImZyZW5vc1wiIHF1ZSBzZSBwcm9kdWNlblxuICogY3VhbmRvIGVsIGJhY2tlbmQgZW1pdGUgcsOhZmFnYXMgZGUgdG9rZW5zLlxuICpcbiAqIEN1YW5kbyBgZW5hYmxlZGAgcGFzYSBhIGZhbHNlIChmaW4gZGUgc3RyZWFtKSwgZWwgdGV4dG8gc2UgY29tcGxldGEgYWxcbiAqIGluc3RhbnRlLiBEdXJhbnRlIGVsIHN0cmVhbWluZywgZWwgYnVmZmVyIHNlIHZhY8OtYSBkaW7DoW1pY2FtZW50ZSBhcHVudGFuZG9cbiAqIGFsIGxhZyBjb25maWd1cmFkby5cbiAqL1xuZXhwb3J0IGNvbnN0IHVzZVNtb290aFN0cmVhbVRleHQgPSAoXG4gIHRhcmdldFRleHQ6IHN0cmluZyxcbiAge1xuICAgIGVuYWJsZWQsXG4gICAgbWluQ2hhcnNQZXJGcmFtZSA9IDEsXG4gICAgbWF4Q2hhcnNQZXJGcmFtZSA9IDI0LFxuICAgIHRhcmdldExhZ01zID0gNDUwLFxuICAgIHNuYXBUb1dvcmRCb3VuZGFyeSA9IGZhbHNlLFxuICAgIGFkYXB0VG9CYWNrZW5kUmF0ZSA9IHRydWUsXG4gICAgYmFja2VuZFJhdGVGYWN0b3IgPSAwLjk1LFxuICAgIHRhcmdldEJ1ZmZlck1zID0gNjAwLFxuICAgIGJ1ZmZlckNvcnJlY3Rpb25NcyA9IDUwMCxcbiAgICBtaW5CdWZmZXJDaGFycyA9IDcwLFxuICAgIHdhcm11cE1zID0gNDAwLFxuICB9OiBVc2VTbW9vdGhTdHJlYW1UZXh0T3B0aW9uc1xuKTogc3RyaW5nID0+IHtcbiAgY29uc3QgW2Rpc3BsYXllZCwgc2V0RGlzcGxheWVkXSA9IHVzZVN0YXRlPHN0cmluZz4oKCkgPT4gKGVuYWJsZWQgPyAnJyA6IHRhcmdldFRleHQpKVxuXG4gIGNvbnN0IHRhcmdldFJlZiA9IHVzZVJlZih0YXJnZXRUZXh0KVxuICBjb25zdCBkaXNwbGF5ZWRMZW5SZWYgPSB1c2VSZWYoZGlzcGxheWVkLmxlbmd0aClcbiAgY29uc3QgcmFmUmVmID0gdXNlUmVmPG51bWJlciB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGxhc3RUaWNrUmVmID0gdXNlUmVmPG51bWJlcj4oMClcblxuICAvLyBNZWRpY2nDs24gZGUgbGEgY2FkZW5jaWEgZGVsIGJhY2tlbmQ6IHNlIGFjdHVhbGl6YSBjdWFuZG8gY2FtYmlhIHRhcmdldFRleHQuXG4gIGNvbnN0IGxhc3RUYXJnZXRMZW5SZWYgPSB1c2VSZWY8bnVtYmVyPigwKVxuICBjb25zdCBsYXN0VGFyZ2V0VXBkYXRlUmVmID0gdXNlUmVmPG51bWJlcj4oMClcbiAgLy8gRXN0aW1hY2nDs24gRU1BIGRlIGNoYXJzL21zIHByb2R1Y2lkb3MgcG9yIGVsIGJhY2tlbmQuXG4gIGNvbnN0IGJhY2tlbmRDaGFyc1Blck1zUmVmID0gdXNlUmVmPG51bWJlcj4oMClcbiAgLy8gVGltZXN0YW1wIGRlbCBwcmltZXIgY2h1bmsgcmVjaWJpZG8gKHBhcmEgd2FybXVwKS5cbiAgY29uc3QgZmlyc3RDaHVua0F0UmVmID0gdXNlUmVmPG51bWJlcj4oMClcbiAgLy8gU2kgZWwgd2FybXVwIHlhIHRlcm1pbsOzICh1bmEgdmV6IHRydWUsIG5vIHZ1ZWx2ZSBhIGFjdGl2YXJzZSBlbiBlc3RlIHN0cmVhbSkuXG4gIGNvbnN0IHdhcm11cERvbmVSZWYgPSB1c2VSZWY8Ym9vbGVhbj4oZmFsc2UpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBub3cgPSB0eXBlb2YgcGVyZm9ybWFuY2UgIT09ICd1bmRlZmluZWQnID8gcGVyZm9ybWFuY2Uubm93KCkgOiBEYXRlLm5vdygpXG4gICAgY29uc3QgcHJldlRhcmdldExlbiA9IGxhc3RUYXJnZXRMZW5SZWYuY3VycmVudFxuICAgIGNvbnN0IGRlbHRhQ2hhcnMgPSB0YXJnZXRUZXh0Lmxlbmd0aCAtIHByZXZUYXJnZXRMZW5cbiAgICBjb25zdCBwcmV2VGFyZ2V0QXQgPSBsYXN0VGFyZ2V0VXBkYXRlUmVmLmN1cnJlbnRcblxuICAgIGlmIChlbmFibGVkICYmIGRlbHRhQ2hhcnMgPiAwKSB7XG4gICAgICBpZiAoZmlyc3RDaHVua0F0UmVmLmN1cnJlbnQgPT09IDApIGZpcnN0Q2h1bmtBdFJlZi5jdXJyZW50ID0gbm93XG4gICAgfVxuXG4gICAgaWYgKGVuYWJsZWQgJiYgZGVsdGFDaGFycyA+IDAgJiYgcHJldlRhcmdldEF0ID4gMCkge1xuICAgICAgY29uc3QgZHQgPSBNYXRoLm1heCgxLCBub3cgLSBwcmV2VGFyZ2V0QXQpXG4gICAgICBjb25zdCByYXRlID0gZGVsdGFDaGFycyAvIGR0XG4gICAgICBjb25zdCBwcmV2UmF0ZSA9IGJhY2tlbmRDaGFyc1Blck1zUmVmLmN1cnJlbnRcbiAgICAgIC8vIEVNQSBzdWF2ZSAoYWxwaGEgPSAwLjIpIHBhcmEgYWJzb3JiZXIgaml0dGVyIHkgc2VndWlyIGxhIHRlbmRlbmNpYS5cbiAgICAgIGJhY2tlbmRDaGFyc1Blck1zUmVmLmN1cnJlbnQgPSBwcmV2UmF0ZSA9PT0gMCA/IHJhdGUgOiBwcmV2UmF0ZSAqIDAuOCArIHJhdGUgKiAwLjJcbiAgICB9XG4gICAgaWYgKGVuYWJsZWQgJiYgdGFyZ2V0VGV4dC5sZW5ndGggIT09IHByZXZUYXJnZXRMZW4pIHtcbiAgICAgIGxhc3RUYXJnZXRMZW5SZWYuY3VycmVudCA9IHRhcmdldFRleHQubGVuZ3RoXG4gICAgICBsYXN0VGFyZ2V0VXBkYXRlUmVmLmN1cnJlbnQgPSBub3dcbiAgICB9XG5cbiAgICB0YXJnZXRSZWYuY3VycmVudCA9IHRhcmdldFRleHRcblxuICAgIGlmICghZW5hYmxlZCkge1xuICAgICAgaWYgKHJhZlJlZi5jdXJyZW50ICE9IG51bGwpIHtcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmFmUmVmLmN1cnJlbnQpXG4gICAgICAgIHJhZlJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgfVxuICAgICAgbGFzdFRpY2tSZWYuY3VycmVudCA9IDBcbiAgICAgIGlmIChkaXNwbGF5ZWRMZW5SZWYuY3VycmVudCAhPT0gdGFyZ2V0VGV4dC5sZW5ndGgpIHtcbiAgICAgICAgZGlzcGxheWVkTGVuUmVmLmN1cnJlbnQgPSB0YXJnZXRUZXh0Lmxlbmd0aFxuICAgICAgICBzZXREaXNwbGF5ZWQodGFyZ2V0VGV4dClcbiAgICAgIH1cbiAgICAgIC8vIFJlc2V0IGRlIGNhZGVuY2lhIGN1YW5kbyBzZSBhcGFnYSBwYXJhIG5vIGNvbnRhbWluYXIgZWwgcHLDs3hpbW8gc3RyZWFtLlxuICAgICAgbGFzdFRhcmdldExlblJlZi5jdXJyZW50ID0gMFxuICAgICAgbGFzdFRhcmdldFVwZGF0ZVJlZi5jdXJyZW50ID0gMFxuICAgICAgYmFja2VuZENoYXJzUGVyTXNSZWYuY3VycmVudCA9IDBcbiAgICAgIGZpcnN0Q2h1bmtBdFJlZi5jdXJyZW50ID0gMFxuICAgICAgd2FybXVwRG9uZVJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBpZiAoZGlzcGxheWVkTGVuUmVmLmN1cnJlbnQgPiB0YXJnZXRUZXh0Lmxlbmd0aCkge1xuICAgICAgZGlzcGxheWVkTGVuUmVmLmN1cnJlbnQgPSAwXG4gICAgICBzZXREaXNwbGF5ZWQoJycpXG4gICAgfVxuXG4gICAgaWYgKHJhZlJlZi5jdXJyZW50ICE9IG51bGwpIHJldHVybiB1bmRlZmluZWRcblxuICAgIGNvbnN0IHRpY2sgPSAodGlja05vdzogbnVtYmVyKSA9PiB7XG4gICAgICBjb25zdCBwcmV2ID0gbGFzdFRpY2tSZWYuY3VycmVudFxuICAgICAgY29uc3QgZHQgPSBwcmV2ID8gTWF0aC5taW4odGlja05vdyAtIHByZXYsIDY0KSA6IDE2XG4gICAgICBsYXN0VGlja1JlZi5jdXJyZW50ID0gdGlja05vd1xuXG4gICAgICBjb25zdCB0YXJnZXQgPSB0YXJnZXRSZWYuY3VycmVudFxuICAgICAgY29uc3QgY3VycmVudExlbiA9IGRpc3BsYXllZExlblJlZi5jdXJyZW50XG4gICAgICBjb25zdCByZW1haW5pbmcgPSB0YXJnZXQubGVuZ3RoIC0gY3VycmVudExlblxuXG4gICAgICBpZiAocmVtYWluaW5nIDw9IDApIHtcbiAgICAgICAgcmFmUmVmLmN1cnJlbnQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGljaylcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIC8vIFdhcm11cDogYWwgY29taWVuem8gZGVsIHN0cmVhbSBlc3BlcmFtb3MgYHdhcm11cE1zYCBkZXNkZSBlbCBwcmltZXJcbiAgICAgIC8vIGNodW5rIGFudGVzIGRlIGVtcGV6YXIgYSBwaW50YXIuIEVzdG8gY29uc3RydXllIHVuIGNvbGNow7NuIGluaWNpYWwgeVxuICAgICAgLy8gZXZpdGEgYXJyYW5jYXIgcsOhcGlkbyBwYXJhIGNvbmdlbGFybm9zIGFjdG8gc2VndWlkbyBzaSBlbCBiYWNrZW5kXG4gICAgICAvLyB0YXJkYSBtdWNobyBlbiBlbWl0aXIgZWwgc2VndW5kbyBjaHVuay5cbiAgICAgIGlmICghd2FybXVwRG9uZVJlZi5jdXJyZW50KSB7XG4gICAgICAgIGNvbnN0IGZpcnN0QXQgPSBmaXJzdENodW5rQXRSZWYuY3VycmVudFxuICAgICAgICBjb25zdCB3YWl0ZWRNcyA9IGZpcnN0QXQgPiAwID8gdGlja05vdyAtIGZpcnN0QXQgOiAwXG4gICAgICAgIGNvbnN0IHdhcm11cENvbXBsZXRlID0gd2FybXVwTXMgPD0gMCB8fCB3YWl0ZWRNcyA+PSB3YXJtdXBNcyB8fCB0YXJnZXQubGVuZ3RoID49IG1pbkJ1ZmZlckNoYXJzICogMlxuICAgICAgICBpZiAoIXdhcm11cENvbXBsZXRlKSB7XG4gICAgICAgICAgcmFmUmVmLmN1cnJlbnQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGljaylcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuICAgICAgICB3YXJtdXBEb25lUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICB9XG5cbiAgICAgIC8vIFZlbG9jaWRhZCBiYXNlOiB2YWNpYXIgZWwgYnVmZmVyIGVuIH50YXJnZXRMYWdNcy5cbiAgICAgIGNvbnN0IGNoYXJzUGVyTXMgPSByZW1haW5pbmcgLyB0YXJnZXRMYWdNc1xuICAgICAgbGV0IGVmZmVjdGl2ZUNoYXJzUGVyTXMgPSBjaGFyc1Blck1zXG5cbiAgICAgIGNvbnN0IGJhY2tlbmRSYXRlID0gYmFja2VuZENoYXJzUGVyTXNSZWYuY3VycmVudFxuXG4gICAgICBpZiAoYWRhcHRUb0JhY2tlbmRSYXRlICYmIGJhY2tlbmRSYXRlID4gMCkge1xuICAgICAgICBpZiAodHlwZW9mIHRhcmdldEJ1ZmZlck1zID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIC8vIENvbnRyb2wgcHJvcG9yY2lvbmFsOiBtYW50ZW5lciBlbCBidWZmZXIgZW4gdG9ybm8gYWwgY29sY2jDs25cbiAgICAgICAgICAvLyBvYmpldGl2by4gU2kgYnVmZmVyTXMgPCB0YXJnZXQg4oaSIGZyZW5hbW9zIHBvciBkZWJham8gZGVsIGJhY2tlbmRcbiAgICAgICAgICAvLyBwYXJhIGFjdW11bGFyOyBzaSBidWZmZXJNcyA+IHRhcmdldCDihpIgYWNlbGVyYW1vcyBwYXJhIGRlc2Nhcmdhci5cbiAgICAgICAgICAvLyBFbiBlcXVpbGlicmlvLCBwaW50YW1vcyBhbCByaXRtbyBwcm9tZWRpbyBkZWwgYmFja2VuZC5cbiAgICAgICAgICAvL1xuICAgICAgICAgIC8vIEVsIGNvbGNow7NuIG9iamV0aXZvIHNlIGNhbGN1bGEgc29icmUgbGEgdGFzYSAqKmVmZWN0aXZhKiogcXVlXG4gICAgICAgICAgLy8gcG9kZW1vcyBwaW50YXIgKGNhcGVhZGEgcG9yIGBtYXhDaGFyc1BlckZyYW1lYCBhIDYwZnBzKSwgbm8gc29icmVcbiAgICAgICAgICAvLyBsYSBkZWwgYmFja2VuZCBwdXJhLiBFc3RvIGV2aXRhIGVsIGNhc28gcGF0b2zDs2dpY28gZGUgcsOhZmFnYXM6XG4gICAgICAgICAgLy8gc2kgZWwgYmFja2VuZCB0aXJhIGEgNjUwMCBjaC9zLCBlbCB0YXJnZXQgTk8gc2UgdnVlbHZlIDM5MDAgY2hhcnNcbiAgICAgICAgICAvLyAocXVlIGVsIHJlbmRlciBqYW3DoXMgcG9kcsOtYSBzb3N0ZW5lciksIHNpbm8gYWxnbyByYXpvbmFibGUgcXVlXG4gICAgICAgICAgLy8gbGEgYW5pbWFjacOzbiBwdWVkYSBtYW50ZW5lci5cbiAgICAgICAgICAvL1xuICAgICAgICAgIC8vIFBpc28gYWJzb2x1dG86IGVsIGNvbGNow7NuIG51bmNhIGJhamEgZGUgYG1pbkJ1ZmZlckNoYXJzYCBhdW5xdWVcbiAgICAgICAgICAvLyBlbCBiYWNrZW5kIGVzdMOpIG1hbmRhbmRvIGxlbnRvIGFsIGluaWNpbyBkZWwgc3RyZWFtLlxuICAgICAgICAgIGNvbnN0IHJlbmRlclJhdGVDYXAgPSAobWF4Q2hhcnNQZXJGcmFtZSAqIDYwKSAvIDEwMDBcbiAgICAgICAgICBjb25zdCBlZmZlY3RpdmVCdWZmZXJSYXRlID0gTWF0aC5taW4oYmFja2VuZFJhdGUsIHJlbmRlclJhdGVDYXApXG4gICAgICAgICAgY29uc3QgdGFyZ2V0QnVmZmVyQ2hhcnMgPSBNYXRoLm1heChtaW5CdWZmZXJDaGFycywgdGFyZ2V0QnVmZmVyTXMgKiBlZmZlY3RpdmVCdWZmZXJSYXRlKVxuICAgICAgICAgIGNvbnN0IGJ1ZmZlckRlbHRhID0gcmVtYWluaW5nIC0gdGFyZ2V0QnVmZmVyQ2hhcnNcbiAgICAgICAgICAvLyBDb3JyZWNjacOzbiB0aWVuZSB1bmlkYWRlcyBkZSBjaGFycy9tcy4gYnVmZmVyQ29ycmVjdGlvbk1zIGNvbnRyb2xhXG4gICAgICAgICAgLy8gcXXDqSB0YW4gcsOhcGlkbyBlbCBidWZmZXIgcmVhbCBjb252ZXJnZSBhbCBvYmpldGl2by5cbiAgICAgICAgICBjb25zdCBjb3JyZWN0aW9uID0gYnVmZmVyRGVsdGEgLyBNYXRoLm1heCgxLCBidWZmZXJDb3JyZWN0aW9uTXMpXG4gICAgICAgICAgZWZmZWN0aXZlQ2hhcnNQZXJNcyA9IE1hdGgubWF4KDAsIGJhY2tlbmRSYXRlICsgY29ycmVjdGlvbilcbiAgICAgICAgICAvLyBBY290YXIgcG9yIGxhIHZlbG9jaWRhZCBkZSBcInZhY2lhciBlbiB0YXJnZXRMYWdNc1wiIHBhcmEgcXVlIHNpXG4gICAgICAgICAgLy8gZGUgcHJvbnRvIGhheSB1biBwaWNvIGdpZ2FudGUgZGUgYnVmZmVyIG5vIHNhbGdhbW9zIGRpc3BhcmFkb3MuXG4gICAgICAgICAgZWZmZWN0aXZlQ2hhcnNQZXJNcyA9IE1hdGgubWluKGVmZmVjdGl2ZUNoYXJzUGVyTXMsIGNoYXJzUGVyTXMpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gTW9kbyBzaW1wbGU6IGNhcCBhIGxhIHRhc2EgZGVsIGJhY2tlbmQgKiBmYWN0b3IuXG4gICAgICAgICAgY29uc3QgY2FwID0gYmFja2VuZFJhdGUgKiBiYWNrZW5kUmF0ZUZhY3RvclxuICAgICAgICAgIGVmZmVjdGl2ZUNoYXJzUGVyTXMgPSBNYXRoLm1pbihlZmZlY3RpdmVDaGFyc1Blck1zLCBjYXApXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgcmF3U3RlcCA9IE1hdGguY2VpbChlZmZlY3RpdmVDaGFyc1Blck1zICogZHQpXG4gICAgICBjb25zdCBzdGVwID0gTWF0aC5tYXgobWluQ2hhcnNQZXJGcmFtZSwgTWF0aC5taW4obWF4Q2hhcnNQZXJGcmFtZSwgcmF3U3RlcCkpXG5cbiAgICAgIGxldCBuZXh0TGVuID0gTWF0aC5taW4odGFyZ2V0Lmxlbmd0aCwgY3VycmVudExlbiArIHN0ZXApXG5cbiAgICAgIGlmIChzbmFwVG9Xb3JkQm91bmRhcnkgJiYgbmV4dExlbiA8IHRhcmdldC5sZW5ndGgpIHtcbiAgICAgICAgY29uc3Qgc2xpY2UgPSB0YXJnZXQuc2xpY2UoY3VycmVudExlbiwgbmV4dExlbilcbiAgICAgICAgY29uc3QgbGFzdEJvdW5kYXJ5ID0gTWF0aC5tYXgoc2xpY2UubGFzdEluZGV4T2YoJyAnKSwgc2xpY2UubGFzdEluZGV4T2YoJ1xcbicpLCBzbGljZS5sYXN0SW5kZXhPZignXFx0JykpXG4gICAgICAgIGlmIChsYXN0Qm91bmRhcnkgPj0gMCkge1xuICAgICAgICAgIG5leHRMZW4gPSBjdXJyZW50TGVuICsgbGFzdEJvdW5kYXJ5ICsgMVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChuZXh0TGVuICE9PSBjdXJyZW50TGVuKSB7XG4gICAgICAgIGRpc3BsYXllZExlblJlZi5jdXJyZW50ID0gbmV4dExlblxuICAgICAgICBzZXREaXNwbGF5ZWQodGFyZ2V0LnNsaWNlKDAsIG5leHRMZW4pKVxuICAgICAgfVxuXG4gICAgICByYWZSZWYuY3VycmVudCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aWNrKVxuICAgIH1cblxuICAgIHJhZlJlZi5jdXJyZW50ID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRpY2spXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKHJhZlJlZi5jdXJyZW50ICE9IG51bGwpIHtcbiAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUocmFmUmVmLmN1cnJlbnQpXG4gICAgICAgIHJhZlJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgfVxuICAgICAgbGFzdFRpY2tSZWYuY3VycmVudCA9IDBcbiAgICB9XG4gIH0sIFtcbiAgICB0YXJnZXRUZXh0LFxuICAgIGVuYWJsZWQsXG4gICAgbWluQ2hhcnNQZXJGcmFtZSxcbiAgICBtYXhDaGFyc1BlckZyYW1lLFxuICAgIHRhcmdldExhZ01zLFxuICAgIHNuYXBUb1dvcmRCb3VuZGFyeSxcbiAgICBhZGFwdFRvQmFja2VuZFJhdGUsXG4gICAgYmFja2VuZFJhdGVGYWN0b3IsXG4gICAgdGFyZ2V0QnVmZmVyTXMsXG4gICAgYnVmZmVyQ29ycmVjdGlvbk1zLFxuICAgIG1pbkJ1ZmZlckNoYXJzLFxuICAgIHdhcm11cE1zLFxuICBdKVxuXG4gIHJldHVybiBkaXNwbGF5ZWRcbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBLFNBQVNBLFNBQVMsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQW1FbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLElBQU1DLG1CQUFtQixHQUFHLFNBQXRC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
@@ -1,3 +0,0 @@
1
- export { useStreamingMessage, useStreamingMessageId } from './useStreamingMessage';
2
- export { streamingStore } from './streamingStore';
3
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdHJlYW1pbmdNZXNzYWdlIiwidXNlU3RyZWFtaW5nTWVzc2FnZUlkIiwic3RyZWFtaW5nU3RvcmUiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvdXNlU3RyZWFtaW5nTWVzc2FnZS9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyB1c2VTdHJlYW1pbmdNZXNzYWdlLCB1c2VTdHJlYW1pbmdNZXNzYWdlSWQgfSBmcm9tICcuL3VzZVN0cmVhbWluZ01lc3NhZ2UnXG5leHBvcnQgeyBzdHJlYW1pbmdTdG9yZSB9IGZyb20gJy4vc3RyZWFtaW5nU3RvcmUnXG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLG1CQUFtQixFQUFFQyxxQkFBcUIsUUFBUSx1QkFBdUI7QUFDbEYsU0FBU0MsY0FBYyxRQUFRLGtCQUFrQiIsImlnbm9yZUxpc3QiOltdfQ==
@@ -1,69 +0,0 @@
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
@@ -1,22 +0,0 @@
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=