@stack-spot/ai-chat-widget 0.2.0 → 0.4.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.
Files changed (148) hide show
  1. package/dist/StackspotAIWidget.d.ts.map +1 -1
  2. package/dist/StackspotAIWidget.js +2 -1
  3. package/dist/StackspotAIWidget.js.map +1 -1
  4. package/dist/chat-interceptors/quick-commands.js +2 -2
  5. package/dist/chat-interceptors/quick-commands.js.map +1 -1
  6. package/dist/chat-interceptors/send-message.d.ts.map +1 -1
  7. package/dist/chat-interceptors/send-message.js +6 -9
  8. package/dist/chat-interceptors/send-message.js.map +1 -1
  9. package/dist/components/HistoryList.d.ts +2 -5
  10. package/dist/components/HistoryList.d.ts.map +1 -1
  11. package/dist/components/HistoryList.js +70 -2
  12. package/dist/components/HistoryList.js.map +1 -1
  13. package/dist/components/OverlayMenu.d.ts +3 -2
  14. package/dist/components/OverlayMenu.d.ts.map +1 -1
  15. package/dist/components/OverlayMenu.js +57 -1
  16. package/dist/components/OverlayMenu.js.map +1 -1
  17. package/dist/components/Tooltip/Tooltip.d.ts +2 -1
  18. package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
  19. package/dist/components/Tooltip/Tooltip.js +10 -2
  20. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  21. package/dist/components/Tooltip/TooltipAPI.d.ts +5 -2
  22. package/dist/components/Tooltip/TooltipAPI.d.ts.map +1 -1
  23. package/dist/components/Tooltip/TooltipAPI.js +50 -8
  24. package/dist/components/Tooltip/TooltipAPI.js.map +1 -1
  25. package/dist/components/Tooltip/context.js +1 -1
  26. package/dist/components/Tooltip/context.js.map +1 -1
  27. package/dist/components/Tooltip/style.d.ts.map +1 -1
  28. package/dist/components/Tooltip/style.js +0 -1
  29. package/dist/components/Tooltip/style.js.map +1 -1
  30. package/dist/components/Tooltip/types.d.ts +6 -0
  31. package/dist/components/Tooltip/types.d.ts.map +1 -1
  32. package/dist/features.d.ts.map +1 -1
  33. package/dist/features.js +1 -0
  34. package/dist/features.js.map +1 -1
  35. package/dist/layout.css +6 -0
  36. package/dist/state/ChatEntry.d.ts +3 -2
  37. package/dist/state/ChatEntry.d.ts.map +1 -1
  38. package/dist/state/ChatEntry.js +2 -2
  39. package/dist/state/ChatEntry.js.map +1 -1
  40. package/dist/state/ChatState.d.ts +1 -7
  41. package/dist/state/ChatState.d.ts.map +1 -1
  42. package/dist/state/ChatState.js.map +1 -1
  43. package/dist/state/types.d.ts +8 -0
  44. package/dist/state/types.d.ts.map +1 -0
  45. package/dist/state/types.js +2 -0
  46. package/dist/state/types.js.map +1 -0
  47. package/dist/types.d.ts +1 -1
  48. package/dist/types.d.ts.map +1 -1
  49. package/dist/utils/date.d.ts +1 -0
  50. package/dist/utils/date.d.ts.map +1 -1
  51. package/dist/utils/date.js +3 -0
  52. package/dist/utils/date.js.map +1 -1
  53. package/dist/utils/download.d.ts +2 -0
  54. package/dist/utils/download.d.ts.map +1 -0
  55. package/dist/utils/download.js +10 -0
  56. package/dist/utils/download.js.map +1 -0
  57. package/dist/utils/knowledge-source.d.ts +3 -1
  58. package/dist/utils/knowledge-source.d.ts.map +1 -1
  59. package/dist/utils/knowledge-source.js +8 -0
  60. package/dist/utils/knowledge-source.js.map +1 -1
  61. package/dist/views/Agents.js +2 -1
  62. package/dist/views/Agents.js.map +1 -1
  63. package/dist/views/Chat/AgentInfo.d.ts +3 -2
  64. package/dist/views/Chat/AgentInfo.d.ts.map +1 -1
  65. package/dist/views/Chat/AgentInfo.js +3 -3
  66. package/dist/views/Chat/AgentInfo.js.map +1 -1
  67. package/dist/views/Chat/ChatMessage.d.ts.map +1 -1
  68. package/dist/views/Chat/ChatMessage.js +3 -3
  69. package/dist/views/Chat/ChatMessage.js.map +1 -1
  70. package/dist/views/Chat/chat-scroll.d.ts.map +1 -0
  71. package/dist/{hooks → views/Chat}/chat-scroll.js +5 -3
  72. package/dist/views/Chat/chat-scroll.js.map +1 -0
  73. package/dist/views/Chat/styled.d.ts.map +1 -1
  74. package/dist/views/Chat/styled.js +8 -1
  75. package/dist/views/Chat/styled.js.map +1 -1
  76. package/dist/views/ChatHistory/ChatHistoryPanel.d.ts +5 -0
  77. package/dist/views/ChatHistory/ChatHistoryPanel.d.ts.map +1 -0
  78. package/dist/views/ChatHistory/ChatHistoryPanel.js +10 -0
  79. package/dist/views/ChatHistory/ChatHistoryPanel.js.map +1 -0
  80. package/dist/views/ChatHistory/HistoryItem.d.ts +7 -0
  81. package/dist/views/ChatHistory/HistoryItem.d.ts.map +1 -0
  82. package/dist/views/ChatHistory/HistoryItem.js +116 -0
  83. package/dist/views/ChatHistory/HistoryItem.js.map +1 -0
  84. package/dist/views/ChatHistory/dictionary.d.ts +2 -0
  85. package/dist/views/ChatHistory/dictionary.d.ts.map +1 -0
  86. package/dist/views/ChatHistory/dictionary.js +19 -0
  87. package/dist/views/ChatHistory/dictionary.js.map +1 -0
  88. package/dist/views/ChatHistory/index.d.ts +5 -0
  89. package/dist/views/ChatHistory/index.d.ts.map +1 -0
  90. package/dist/views/ChatHistory/index.js +23 -0
  91. package/dist/views/ChatHistory/index.js.map +1 -0
  92. package/dist/views/ChatHistory/styled.d.ts +2 -0
  93. package/dist/views/ChatHistory/styled.d.ts.map +1 -0
  94. package/dist/views/ChatHistory/styled.js +60 -0
  95. package/dist/views/ChatHistory/styled.js.map +1 -0
  96. package/dist/views/ChatHistory/utils.d.ts +5 -0
  97. package/dist/views/ChatHistory/utils.d.ts.map +1 -0
  98. package/dist/views/ChatHistory/utils.js +39 -0
  99. package/dist/views/ChatHistory/utils.js.map +1 -0
  100. package/dist/views/ChatTabSelection.js +1 -1
  101. package/dist/views/ChatTabSelection.js.map +1 -1
  102. package/dist/views/KnowledgeSources.d.ts.map +1 -1
  103. package/dist/views/KnowledgeSources.js +30 -21
  104. package/dist/views/KnowledgeSources.js.map +1 -1
  105. package/dist/views/MessageInput/dictionary.d.ts +1 -1
  106. package/dist/views/Stacks.js +2 -1
  107. package/dist/views/Stacks.js.map +1 -1
  108. package/dist/views/Workspaces.d.ts.map +1 -1
  109. package/dist/views/Workspaces.js +3 -2
  110. package/dist/views/Workspaces.js.map +1 -1
  111. package/package.json +3 -2
  112. package/src/StackspotAIWidget.tsx +3 -1
  113. package/src/chat-interceptors/quick-commands.ts +2 -2
  114. package/src/chat-interceptors/send-message.ts +6 -9
  115. package/src/components/HistoryList.tsx +80 -7
  116. package/src/components/OverlayMenu.tsx +70 -3
  117. package/src/components/Tooltip/Tooltip.tsx +13 -7
  118. package/src/components/Tooltip/TooltipAPI.ts +47 -9
  119. package/src/components/Tooltip/context.tsx +1 -1
  120. package/src/components/Tooltip/style.tsx +0 -1
  121. package/src/components/Tooltip/types.ts +7 -0
  122. package/src/features.ts +1 -0
  123. package/src/layout.css +6 -0
  124. package/src/state/ChatEntry.ts +5 -4
  125. package/src/state/ChatState.ts +1 -9
  126. package/src/state/types.ts +8 -0
  127. package/src/types.ts +1 -1
  128. package/src/utils/date.ts +4 -0
  129. package/src/utils/download.ts +12 -0
  130. package/src/utils/knowledge-source.ts +13 -1
  131. package/src/views/Agents.tsx +2 -1
  132. package/src/views/Chat/AgentInfo.tsx +8 -8
  133. package/src/views/Chat/ChatMessage.tsx +4 -4
  134. package/src/{hooks → views/Chat}/chat-scroll.ts +6 -3
  135. package/src/views/Chat/styled.ts +8 -1
  136. package/src/views/ChatHistory/ChatHistoryPanel.tsx +28 -0
  137. package/src/views/ChatHistory/HistoryItem.tsx +139 -0
  138. package/src/views/ChatHistory/dictionary.ts +20 -0
  139. package/src/views/ChatHistory/index.tsx +31 -0
  140. package/src/views/ChatHistory/styled.ts +60 -0
  141. package/src/views/ChatHistory/utils.ts +37 -0
  142. package/src/views/ChatTabSelection.tsx +1 -1
  143. package/src/views/KnowledgeSources.tsx +39 -20
  144. package/src/views/Stacks.tsx +2 -1
  145. package/src/views/Workspaces.tsx +3 -2
  146. package/dist/hooks/chat-scroll.d.ts.map +0 -1
  147. package/dist/hooks/chat-scroll.js.map +0 -1
  148. /package/dist/{hooks → views/Chat}/chat-scroll.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"StackspotAIWidget.d.ts","sourceRoot":"","sources":["../src/StackspotAIWidget.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,gBAAgB,EAAmB,MAAM,YAAY,CAAA;AAC9D,OAAO,cAAc,CAAA;AAGrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAY1C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACpC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAED,eAAO,MAAM,iBAAiB,uFACoF,aAAa,4CAoC9H,CAAA"}
1
+ {"version":3,"file":"StackspotAIWidget.d.ts","sourceRoot":"","sources":["../src/StackspotAIWidget.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,gBAAgB,EAAmB,MAAM,YAAY,CAAA;AAC9D,OAAO,cAAc,CAAA;AAGrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAa1C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACpC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAED,eAAO,MAAM,iBAAiB,uFACoF,aAAa,4CAqC9H,CAAA"}
@@ -11,6 +11,7 @@ import { RightPanel } from './right-panel/RightPanel.js';
11
11
  import { RightPanelProvider } from './right-panel/RightPanelProvider.js';
12
12
  import { Agents } from './views/Agents.js';
13
13
  import { Chat } from './views/Chat/index.js';
14
+ import { ChatHistory } from './views/ChatHistory/index.js';
14
15
  import { ChatTabSelection } from './views/ChatTabSelection.js';
15
16
  import { Home } from './views/Home.js';
16
17
  import { KnowledgeSources } from './views/KnowledgeSources.js';
@@ -29,6 +30,6 @@ export const StackspotAIWidget = ({ username, features = defaultFeatures, interc
29
30
  const isCurrentChatEmpty = currentChat.length === 0;
30
31
  return useMemo(() => (_jsx(TooltipProvider, { children: _jsx(RightPanelProvider, { chatWindow: chatWindowRef, panel: rightPanelRef, children: _jsxs("div", { className: listToClass(['ai-chat-widget', isMinimized && 'minimized']), children: [_jsxs("div", { className: "chat-window", ref: chatWindowRef, children: [isMinimized
31
32
  ? _jsx(MinimizedHeader, { ...minimizedActions })
32
- : _jsx(ChatTabSelection, { history: features?.chatHistory, interceptors: interceptors }), _jsxs("div", { className: "chat-container", children: [_jsx("div", { className: "chat-content", children: isCurrentChatEmpty ? (children ?? _jsx(Home, { username: username })) : _jsx(Chat, { username: username }) }), _jsx(MessageInput, { features: features })] })] }), _jsx(Stacks, {}), _jsx(Workspaces, {}), _jsx(KnowledgeSources, {}), _jsx(KSDocument, {}), _jsx(Agents, {}), !isMinimized && _jsx("div", { className: "chat-right-panel", ref: rightPanelRef, children: _jsx(RightPanel, {}) })] }) }) })), [isCurrentChatEmpty, features, username, isMinimized]);
33
+ : _jsx(ChatTabSelection, { history: features?.chatHistory, interceptors: interceptors }), _jsxs("div", { className: "chat-container", children: [_jsx("div", { className: "chat-content", children: isCurrentChatEmpty ? (children ?? _jsx(Home, { username: username })) : _jsx(Chat, { username: username }) }), _jsx(MessageInput, { features: features })] })] }), _jsx(Stacks, {}), _jsx(Workspaces, {}), _jsx(KnowledgeSources, {}), _jsx(KSDocument, {}), _jsx(Agents, {}), _jsx(ChatHistory, { interceptors: interceptors }), _jsx("div", { className: "chat-right-panel", ref: rightPanelRef, children: _jsx(RightPanel, {}) })] }) }) })), [isCurrentChatEmpty, features, username, isMinimized]);
33
34
  };
34
35
  //# sourceMappingURL=StackspotAIWidget.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StackspotAIWidget.js","sourceRoot":"","sources":["../src/StackspotAIWidget.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StackspotAIWidget.js","sourceRoot":"","sources":["../src/StackspotAIWidget.tsx"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2
2
  export function quickCommandInterceptor(entry, _chat) {
3
- const { agent, content } = entry.getValue();
4
- if (agent !== 'user')
3
+ const { agentType, content } = entry.getValue();
4
+ if (agentType !== 'user')
5
5
  return;
6
6
  if (content.startsWith('/')) {
7
7
  alert('Quick commands are not yet supported!'); /* todo */
@@ -1 +1 @@
1
- {"version":3,"file":"quick-commands.js","sourceRoot":"","sources":["../../src/chat-interceptors/quick-commands.ts"],"names":[],"mappings":"AAGA,6DAA6D;AAC7D,MAAM,UAAU,uBAAuB,CAAC,KAAgB,EAAE,KAAgB;IACxE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;IAC3C,IAAI,KAAK,KAAK,MAAM;QAAE,OAAM;IAC5B,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,KAAK,CAAC,uCAAuC,CAAC,CAAA,CAAC,UAAU;QACzD,OAAO,KAAK,CAAA,CAAC,sGAAsG;IACrH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"quick-commands.js","sourceRoot":"","sources":["../../src/chat-interceptors/quick-commands.ts"],"names":[],"mappings":"AAGA,6DAA6D;AAC7D,MAAM,UAAU,uBAAuB,CAAC,KAAgB,EAAE,KAAgB;IACxE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;IAC/C,IAAI,SAAS,KAAK,MAAM;QAAE,OAAM;IAChC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,KAAK,CAAC,uCAAuC,CAAC,CAAA,CAAC,UAAU;QACzD,OAAO,KAAK,CAAA,CAAC,sGAAsG;IACrH,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"send-message.d.ts","sourceRoot":"","sources":["../../src/chat-interceptors/send-message.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAmB,MAAM,oBAAoB,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAG9C,wBAAsB,sBAAsB,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,iBAyC7E"}
1
+ {"version":3,"file":"send-message.d.ts","sourceRoot":"","sources":["../../src/chat-interceptors/send-message.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAmB,MAAM,oBAAoB,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAI9C,wBAAsB,sBAAsB,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,iBAqC7E"}
@@ -1,9 +1,10 @@
1
1
  import { aiClient, StackspotAPIError } from '@stack-spot/portal-network';
2
2
  import { ChatEntry } from '../state/ChatEntry.js';
3
3
  import { buildConversationContext } from '../utils/chat.js';
4
+ import { genericSourcesToKnowledgeSources } from '../utils/knowledge-source.js';
4
5
  export async function sendMessageInterceptor(entry, chat) {
5
- const { agent, content } = entry.getValue();
6
- if (agent !== 'user')
6
+ const { agentType, content } = entry.getValue();
7
+ if (agentType !== 'user')
7
8
  return;
8
9
  const context = buildConversationContext(chat);
9
10
  chat.set('isLoading', true);
@@ -17,20 +18,16 @@ export async function sendMessageInterceptor(entry, chat) {
17
18
  let knowledgeSources;
18
19
  stream.onChange(value => {
19
20
  if (value.sources?.length !== knowledgeSources?.length) {
20
- knowledgeSources = value.sources?.filter(s => s.type === 'knowledge_source').map(ks => ({
21
- documentId: ks.document_id,
22
- documentScore: ks.document_score,
23
- name: ks.name,
24
- slug: ks.slug,
25
- }));
21
+ knowledgeSources = genericSourcesToKnowledgeSources(value.sources);
26
22
  }
27
23
  botEntry.setValue({
28
- agent: 'bot',
24
+ agentType: 'bot',
29
25
  type: 'md',
30
26
  content: value.answer ?? '',
31
27
  messageId: value.message_id ?? undefined,
32
28
  knowledgeSources,
33
29
  updated: new Date().toISOString(),
30
+ agent: chat.get('agent'),
34
31
  });
35
32
  });
36
33
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"send-message.js","sourceRoot":"","sources":["../../src/chat-interceptors/send-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AACxE,OAAO,EAAE,SAAS,EAAmB,MAAM,oBAAoB,CAAA;AAE/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAA;AAExD,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,KAAgB,EAAE,IAAe;IAC5E,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;IAC3C,IAAI,KAAK,KAAK,MAAM;QAAE,OAAM;IAC5B,MAAM,OAAO,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAA;IAC9C,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;IAC3B,uDAAuD;IACvD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC5B,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAA;IAC1E,MAAM,QAAQ,GAAG,SAAS,CAAC,sBAAsB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;IACxE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;IAC1B,IAAI,gBAA+C,CAAA;IACnD,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;QACtB,IAAI,KAAK,CAAC,OAAO,EAAE,MAAM,KAAK,gBAAgB,EAAE,MAAM,EAAE,CAAC;YACvD,gBAAgB,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,kBAAkB,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBACtF,UAAU,EAAE,EAAE,CAAC,WAAW;gBAC1B,aAAa,EAAE,EAAE,CAAC,cAAc;gBAChC,IAAI,EAAE,EAAE,CAAC,IAAI;gBACb,IAAI,EAAE,EAAE,CAAC,IAAI;aACd,CAAC,CAAC,CAAA;QACL,CAAC;QACD,QAAQ,CAAC,QAAQ,CAAC;YAChB,KAAK,EAAE,KAAK;YACZ,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE;YAC3B,SAAS,EAAE,KAAK,CAAC,UAAU,IAAI,SAAS;YACxC,gBAAgB;YAChB,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SAClC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IACF,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAA;IACzB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,QAAQ,CAAC,QAAQ,CAAC;YAChB,GAAG,QAAQ,CAAC,QAAQ,EAAE;YACtB,KAAK,EAAE,KAAK,YAAY,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,GAAG,KAAK,EAAE,CAAC;SAC9F,CAAC,CAAA;IACJ,CAAC;IACD,QAAQ,CAAC,MAAM,EAAE,CAAA;IACjB,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;AAC9B,CAAC"}
1
+ {"version":3,"file":"send-message.js","sourceRoot":"","sources":["../../src/chat-interceptors/send-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AACxE,OAAO,EAAE,SAAS,EAAmB,MAAM,oBAAoB,CAAA;AAE/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAA;AACxD,OAAO,EAAE,gCAAgC,EAAE,MAAM,2BAA2B,CAAA;AAE5E,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,KAAgB,EAAE,IAAe;IAC5E,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;IAC/C,IAAI,SAAS,KAAK,MAAM;QAAE,OAAM;IAChC,MAAM,OAAO,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAA;IAC9C,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;IAC3B,uDAAuD;IACvD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC5B,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAA;IAC1E,MAAM,QAAQ,GAAG,SAAS,CAAC,sBAAsB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;IACxE,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;IAC1B,IAAI,gBAA+C,CAAA;IACnD,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;QACtB,IAAI,KAAK,CAAC,OAAO,EAAE,MAAM,KAAK,gBAAgB,EAAE,MAAM,EAAE,CAAC;YACvD,gBAAgB,GAAG,gCAAgC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QACpE,CAAC;QACD,QAAQ,CAAC,QAAQ,CAAC;YAChB,SAAS,EAAE,KAAK;YAChB,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE;YAC3B,SAAS,EAAE,KAAK,CAAC,UAAU,IAAI,SAAS;YACxC,gBAAgB;YAChB,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACjC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;SACzB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IACF,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAA;IACzB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,QAAQ,CAAC,QAAQ,CAAC;YAChB,GAAG,QAAQ,CAAC,QAAQ,EAAE;YACtB,KAAK,EAAE,KAAK,YAAY,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,GAAG,KAAK,EAAE,CAAC;SAC9F,CAAC,CAAA;IACJ,CAAC;IACD,QAAQ,CAAC,MAAM,EAAE,CAAA;IACjB,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;AAC9B,CAAC"}
@@ -1,13 +1,10 @@
1
1
  import { WithStyle } from '@stack-spot/portal-theme';
2
- import { ButtonAction } from '../types.js';
3
2
  interface Props<T> extends WithStyle {
4
3
  items: T[];
5
- renderLabel: (item: T) => React.ReactElement;
4
+ renderItem: (item: T) => React.ReactNode;
6
5
  getDate: (item: T) => Date;
7
6
  keygen: (item: T) => React.Key;
8
- getActions?: (item: T) => ButtonAction[];
9
- onSelect?: (item: T) => void;
10
7
  }
11
- export declare function HistoryList<T>({}: Props<T>): null;
8
+ export declare function HistoryList<T>({ getDate, items, keygen, className, style, renderItem }: Props<T>): import("react/jsx-runtime").JSX.Element;
12
9
  export {};
13
10
  //# sourceMappingURL=HistoryList.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HistoryList.d.ts","sourceRoot":"","sources":["../../src/components/HistoryList.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAEvC,UAAU,KAAK,CAAC,CAAC,CAAE,SAAQ,SAAS;IAClC,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,KAAK,CAAC,YAAY,CAAC;IAC7C,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAC3B,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC;IAC/B,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,YAAY,EAAE,CAAC;IACzC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;CAC9B;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,QAE1C"}
1
+ {"version":3,"file":"HistoryList.d.ts","sourceRoot":"","sources":["../../src/components/HistoryList.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAS,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAS3D,UAAU,KAAK,CAAC,CAAC,CAAE,SAAQ,SAAS;IAClC,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC;IACzC,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAC3B,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC;CAChC;AAuCD,wBAAgB,WAAW,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,2CAehG"}
@@ -1,4 +1,72 @@
1
- export function HistoryList({}) {
2
- return null;
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /* eslint-disable no-empty-pattern */
3
+ import { Text } from '@citric/core';
4
+ import { theme } from '@stack-spot/portal-theme';
5
+ import { useTranslate } from '@stack-spot/portal-translate';
6
+ import { groupBy, map } from 'lodash';
7
+ import { useMemo } from 'react';
8
+ import { styled } from 'styled-components';
9
+ import { subtractDays } from '../utils/date.js';
10
+ const HistoryBox = styled.div `
11
+ display: flex;
12
+ flex-direction: column;
13
+ gap: 4px;
14
+
15
+ > section {
16
+ > header {
17
+ background-color: ${theme.color.light[500]};
18
+ padding: 8px;
19
+ border-radius: 4px;
20
+ color: ${theme.color.light[700]};
21
+ margin-bottom: 4px;
22
+ }
23
+
24
+ > ul {
25
+ margin: 0;
26
+ padding: 0;
27
+ list-style: none;
28
+ display: flex;
29
+ flex-direction: column;
30
+ gap: 2px;
31
+ }
32
+ }
33
+ `;
34
+ function dateToSectionName(date) {
35
+ const now = new Date();
36
+ if (date.toDateString() === now.toDateString())
37
+ return 'today';
38
+ const yesterday = subtractDays(now, 1);
39
+ if (date.toDateString() === yesterday.toDateString())
40
+ return 'yesterday';
41
+ const todayAtMidnight = new Date(now.toDateString());
42
+ const last7Days = subtractDays(todayAtMidnight, 7);
43
+ if (date.getTime() >= last7Days.getTime())
44
+ return 'last7';
45
+ const last30Days = subtractDays(todayAtMidnight, 30);
46
+ return date.getTime() >= last30Days.getTime() ? 'last30' : 'older';
3
47
  }
48
+ export function HistoryList({ getDate, items, keygen, className, style, renderItem }) {
49
+ const t = useTranslate(dictionary);
50
+ const sections = useMemo(() => {
51
+ const byDate = groupBy(items, item => dateToSectionName(getDate(item)));
52
+ return map(byDate, (value, key) => (_jsxs("section", { children: [_jsx("header", { children: _jsx(Text, { children: t[key] }) }), _jsx("ul", { children: value.map(item => _jsx("li", { children: renderItem(item) }, keygen(item))) })] }, key)));
53
+ }, [items]);
54
+ return _jsx(HistoryBox, { className: className, style: style, children: sections });
55
+ }
56
+ const dictionary = {
57
+ en: {
58
+ today: 'Today',
59
+ yesterday: 'Yesterday',
60
+ last7: 'Last 7 days',
61
+ last30: 'Last 30 days',
62
+ older: 'Older',
63
+ },
64
+ pt: {
65
+ today: 'Hoje',
66
+ yesterday: 'Ontem',
67
+ last7: 'Últimos 7 dias',
68
+ last30: 'Últimos 30 dias',
69
+ older: 'Mais antigo',
70
+ },
71
+ };
4
72
  //# sourceMappingURL=HistoryList.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HistoryList.js","sourceRoot":"","sources":["../../src/components/HistoryList.tsx"],"names":[],"mappings":"AAaA,MAAM,UAAU,WAAW,CAAI,EAAY;IACzC,OAAO,IAAI,CAAA;AACb,CAAC"}
1
+ {"version":3,"file":"HistoryList.js","sourceRoot":"","sources":["../../src/components/HistoryList.tsx"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
1
  import { WithStyle } from '@stack-spot/portal-theme';
2
2
  import { ButtonAction, WithChildren } from '../types.js';
3
+ import { TooltipPosition } from './Tooltip/types.js';
3
4
  interface Props extends WithStyle, WithChildren {
4
- position?: 'left' | 'top' | 'bottom' | 'right';
5
+ position?: TooltipPosition;
5
6
  actions: ButtonAction[];
6
7
  }
7
- export declare const OverlayMenu: ({}: Props) => null;
8
+ export declare const OverlayMenu: ({ actions, children, className, position, style }: Props) => import("react/jsx-runtime").JSX.Element;
8
9
  export {};
9
10
  //# sourceMappingURL=OverlayMenu.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OverlayMenu.d.ts","sourceRoot":"","sources":["../../src/components/OverlayMenu.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAErD,UAAU,KAAM,SAAQ,SAAS,EAAE,YAAY;IAC7C,QAAQ,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC/C,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AAED,eAAO,MAAM,WAAW,OAAQ,KAAK,SAAS,CAAA"}
1
+ {"version":3,"file":"OverlayMenu.d.ts","sourceRoot":"","sources":["../../src/components/OverlayMenu.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAS,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAG3D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAGrD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEjD,UAAU,KAAM,SAAQ,SAAS,EAAE,YAAY;IAC7C,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AA0CD,eAAO,MAAM,WAAW,sDAAuD,KAAK,4CAqBnF,CAAA"}
@@ -1,2 +1,58 @@
1
- export const OverlayMenu = ({}) => null;
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /* eslint-disable no-empty-pattern */
3
+ import { IconBox, Text } from '@citric/core';
4
+ import { theme } from '@stack-spot/portal-theme';
5
+ import { useMemo } from 'react';
6
+ import { styled } from 'styled-components';
7
+ import { Tooltip } from './Tooltip/index.js';
8
+ import { useTooltip } from './Tooltip/context.js';
9
+ const MenuList = styled.ul `
10
+ margin: 0;
11
+ padding: 0;
12
+ list-style: none;
13
+ border-radius: 8px;
14
+ background-color: ${theme.color.light[400]};
15
+ overflow: hidden;
16
+ display: flex;
17
+ flex-direction: column;
18
+
19
+ > li {
20
+ display: flex;
21
+ flex-direction: column;
22
+
23
+ > button {
24
+ padding: 8px 12px;
25
+ transition: background-color 0.2s;
26
+ cursor: pointer;
27
+ display: flex;
28
+ flex-direction: row;
29
+ align-items: center;
30
+ gap: 8px;
31
+ background-color: transparent;
32
+ border: none;
33
+
34
+ &:hover {
35
+ background-color: ${theme.color.light[500]};
36
+ }
37
+ }
38
+ }
39
+ `;
40
+ const StyledButton = styled.button `
41
+ color: ${({ $color }) => $color || theme.color.light.contrastText};
42
+
43
+ svg {
44
+ fill: ${({ $color }) => $color || theme.color.light.contrastText};
45
+ }
46
+ `;
47
+ export const OverlayMenu = ({ actions, children, className, position, style }) => {
48
+ const tooltip = useTooltip();
49
+ const menu = useMemo(() => {
50
+ const items = actions.map(({ label, onClick, className, color, icon, style }) => (_jsx("li", { className: className, style: style, children: _jsxs(StyledButton, { "$color": color, onClick: () => {
51
+ onClick();
52
+ tooltip.hide();
53
+ }, children: [_jsx(IconBox, { children: icon }), _jsx(Text, { children: label })] }) }, label)));
54
+ return _jsx(MenuList, { children: items });
55
+ }, [actions]);
56
+ return (_jsx(Tooltip, { content: menu, custom: true, position: position, className: className, style: style, triggeredBy: "click", children: children }));
57
+ };
2
58
  //# sourceMappingURL=OverlayMenu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OverlayMenu.js","sourceRoot":"","sources":["../../src/components/OverlayMenu.tsx"],"names":[],"mappings":"AASA,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAS,EAAE,EAAE,CAAC,IAAI,CAAA"}
1
+ {"version":3,"file":"OverlayMenu.js","sourceRoot":"","sources":["../../src/components/OverlayMenu.tsx"],"names":[],"mappings":";AAAA,qCAAqC;AACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,KAAK,EAAa,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE1C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAQ9C,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAA;;;;;sBAKJ,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;4BAqBhB,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;;;;CAIjD,CAAA;AAED,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAgC;WACvD,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY;;;YAGvD,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY;;CAEnE,CAAA;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAS,EAAE,EAAE;IACtF,MAAM,OAAO,GAAG,UAAU,EAAE,CAAA;IAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE;QACxB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAC/E,aAAgB,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,YAChD,MAAC,YAAY,cAAS,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE;oBACzC,OAAO,EAAE,CAAA;oBACT,OAAO,CAAC,IAAI,EAAE,CAAA;gBAChB,CAAC,aACC,KAAC,OAAO,cAAE,IAAI,GAAW,EACzB,KAAC,IAAI,cAAE,KAAK,GAAQ,IACP,IAPR,KAAK,CAQT,CACN,CAAC,CAAA;QACF,OAAO,KAAC,QAAQ,cAAE,KAAK,GAAY,CAAA;IACrC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;IACb,OAAO,CACL,KAAC,OAAO,IAAC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAC,OAAO,YACvG,QAAQ,GACD,CACX,CAAA;AACH,CAAC,CAAA"}
@@ -4,8 +4,9 @@ import { TooltipPosition } from './types.js';
4
4
  interface Props extends WithChildren, WithStyle {
5
5
  content: React.ReactNode;
6
6
  position?: TooltipPosition;
7
+ triggeredBy?: 'click' | 'hover';
7
8
  custom?: boolean;
8
9
  }
9
- export declare const Tooltip: ({ content, custom, position, children, className, style }: Props) => import("react/jsx-runtime").JSX.Element;
10
+ export declare const Tooltip: ({ content, custom, position, triggeredBy, children, className, style }: Props) => import("react/jsx-runtime").JSX.Element;
10
11
  export {};
11
12
  //# sourceMappingURL=Tooltip.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.d.ts","sourceRoot":"","sources":["../../../src/components/Tooltip/Tooltip.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAG1C,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAEzC,UAAU,KAAM,SAAQ,YAAY,EAAE,SAAS;IAC7C,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,eAAO,MAAM,OAAO,8DAA0E,KAAK,4CAgBlG,CAAA"}
1
+ {"version":3,"file":"Tooltip.d.ts","sourceRoot":"","sources":["../../../src/components/Tooltip/Tooltip.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAG1C,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAEzC,UAAU,KAAM,SAAQ,YAAY,EAAE,SAAS;IAC7C,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,WAAW,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,eAAO,MAAM,OAAO,2EAAsF,KAAK,4CAqB9G,CAAA"}
@@ -2,8 +2,16 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { Text } from '@citric/core';
3
3
  import { useTooltip } from './context.js';
4
4
  import { DefaultTooltip } from './style.js';
5
- export const Tooltip = ({ content, custom, position = 'bottom', children, className, style }) => {
5
+ export const Tooltip = ({ content, custom, position, triggeredBy = 'hover', children, className, style }) => {
6
6
  const api = useTooltip();
7
- return (_jsx("div", { onMouseEnter: e => api.show(custom ? content : _jsx(DefaultTooltip, { children: _jsx(Text, { appearance: "microtext1", children: content }) }), e.target, position), onMouseLeave: () => api.hide(), className: className, style: style, children: children }));
7
+ function show(e, hideOnClickOutside) {
8
+ api.show({
9
+ content: custom ? content : _jsx(DefaultTooltip, { children: _jsx(Text, { appearance: "microtext1", children: content }) }),
10
+ anchor: e.target,
11
+ position,
12
+ hideOnClickOutside,
13
+ });
14
+ }
15
+ return (_jsx("div", { ...(triggeredBy === 'hover' ? { onMouseEnter: show, onMouseLeave: () => api.hide() } : { onClick: (e) => show(e, true) }), className: className, style: style, tabIndex: triggeredBy === 'click' ? 0 : undefined, children: children }));
8
16
  };
9
17
  //# sourceMappingURL=Tooltip.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.js","sourceRoot":"","sources":["../../../src/components/Tooltip/Tooltip.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAGnC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AASxC,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAG,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAS,EAAE,EAAE;IACrG,MAAM,GAAG,GAAG,UAAU,EAAE,CAAA;IACxB,OAAO,CACL,cACE,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CACzB,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAC,cAAc,cAAC,KAAC,IAAI,IAAC,UAAU,EAAC,YAAY,YAAE,OAAO,GAAQ,GAAiB,EAClG,CAAC,CAAC,MAAqB,EACvB,QAAQ,CACT,EACD,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,EAC9B,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,YAEX,QAAQ,GACL,CACP,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"Tooltip.js","sourceRoot":"","sources":["../../../src/components/Tooltip/Tooltip.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AAGnC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAUxC,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,GAAG,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAS,EAAE,EAAE;IACjH,MAAM,GAAG,GAAG,UAAU,EAAE,CAAA;IAExB,SAAS,IAAI,CAAC,CAA+C,EAAE,kBAA4B;QACzF,GAAG,CAAC,IAAI,CAAC;YACP,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAC,cAAc,cAAC,KAAC,IAAI,IAAC,UAAU,EAAC,YAAY,YAAE,OAAO,GAAQ,GAAiB;YAC3G,MAAM,EAAE,CAAC,CAAC,MAAqB;YAC/B,QAAQ;YACR,kBAAkB;SACnB,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,CACL,iBACM,CAAC,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,EAC1H,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,YAEhD,QAAQ,GACL,CACP,CAAA;AACH,CAAC,CAAA"}
@@ -1,10 +1,13 @@
1
- import { TooltipPosition } from './types.js';
1
+ import { ShowOptions } from './types.js';
2
2
  export declare class TooltipAPI {
3
3
  private tooltipRef;
4
4
  private setContent;
5
5
  private hideTimeoutId;
6
+ private clickListener;
7
+ private relativeTo;
6
8
  constructor(tooltipRef: React.RefObject<HTMLDivElement>, setContent: React.Dispatch<React.SetStateAction<React.ReactNode>>);
7
- show(content: React.ReactNode, anchor: HTMLElement, position: TooltipPosition): void;
9
+ private computeRelativeTo;
10
+ show({ content, anchor, position, hideOnClickOutside }: ShowOptions): void;
8
11
  hide(): void;
9
12
  }
10
13
  //# sourceMappingURL=TooltipAPI.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TooltipAPI.d.ts","sourceRoot":"","sources":["../../../src/components/Tooltip/TooltipAPI.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAGzC,qBAAa,UAAU;IACrB,OAAO,CAAC,UAAU,CAAiC;IACnD,OAAO,CAAC,UAAU,CAAuD;IACzE,OAAO,CAAC,aAAa,CAAoB;gBAE7B,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAK1H,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,eAAe,GAAG,IAAI;IA0BpF,IAAI,IAAI,IAAI;CAKb"}
1
+ {"version":3,"file":"TooltipAPI.d.ts","sourceRoot":"","sources":["../../../src/components/Tooltip/TooltipAPI.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAQrC,qBAAa,UAAU;IACrB,OAAO,CAAC,UAAU,CAAiC;IACnD,OAAO,CAAC,UAAU,CAAuD;IACzE,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,aAAa,CAAuC;IAC5D,OAAO,CAAC,UAAU,CAAyB;gBAE/B,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAK1H,OAAO,CAAC,iBAAiB;IAQzB,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,QAAmB,EAAE,kBAAkB,EAAE,EAAE,WAAW,GAAG,IAAI;IAgDrF,IAAI,IAAI,IAAI;CAMb"}
@@ -1,41 +1,81 @@
1
1
  import { animationTimeMS } from './style.js';
2
+ const MARGIN_TO_CORNERS_PX = 10;
3
+ function isRelative(element) {
4
+ return ['relative', 'absolute', 'fixed'].includes(element.computedStyleMap().get('position')?.toString() ?? '');
5
+ }
2
6
  export class TooltipAPI {
3
7
  tooltipRef;
4
8
  setContent;
5
9
  hideTimeoutId;
10
+ clickListener;
11
+ relativeTo;
6
12
  constructor(tooltipRef, setContent) {
7
13
  this.tooltipRef = tooltipRef;
8
14
  this.setContent = setContent;
9
15
  }
10
- show(content, anchor, position) {
16
+ computeRelativeTo() {
17
+ if (this.relativeTo)
18
+ return;
19
+ this.relativeTo = this.tooltipRef.current?.parentElement;
20
+ while (this.relativeTo && this.relativeTo !== document.body && !isRelative(this.relativeTo)) {
21
+ this.relativeTo = this.relativeTo.parentElement;
22
+ }
23
+ }
24
+ show({ content, anchor, position = 'bottom', hideOnClickOutside }) {
11
25
  window.clearTimeout(this.hideTimeoutId);
12
26
  this.hideTimeoutId = undefined;
27
+ if (this.clickListener)
28
+ document.removeEventListener('click', this.clickListener);
13
29
  this.setContent(content);
14
30
  setTimeout(() => {
15
31
  if (!this.tooltipRef.current)
16
32
  return;
17
- const rect = anchor.getClientRects()[0];
33
+ const anchorRect = anchor.getClientRects()[0];
18
34
  this.tooltipRef.current.classList.add('visible');
19
35
  const tooltipWidth = this.tooltipRef.current.clientWidth;
20
36
  const tooltipHeight = this.tooltipRef.current.clientHeight;
21
37
  let top = 0;
22
38
  let left = 0;
23
39
  if (position === 'left' || position === 'right') {
24
- top = rect.top + rect.height / 2 - tooltipHeight / 2;
40
+ top = anchorRect.top + anchorRect.height / 2 - tooltipHeight / 2;
25
41
  if (position === 'left')
26
- left = rect.left - tooltipWidth;
42
+ left = anchorRect.left - tooltipWidth;
27
43
  else
28
- left = rect.left + rect.width;
44
+ left = anchorRect.left + anchorRect.width;
29
45
  }
30
46
  else {
31
- left = rect.left + rect.width / 2 - tooltipWidth / 2;
47
+ left = anchorRect.left + anchorRect.width / 2 - tooltipWidth / 2;
32
48
  if (position === 'top')
33
- top = rect.top - tooltipHeight;
49
+ top = anchorRect.top - tooltipHeight;
34
50
  else
35
- top = rect.top + rect.height;
51
+ top = anchorRect.top + anchorRect.height;
52
+ }
53
+ // takes the parent the tooltip is positioned relative to into consideration
54
+ this.computeRelativeTo();
55
+ const relativeRect = this.relativeTo?.getClientRects()[0] ?? { top: 0, left: 0 };
56
+ top -= relativeRect.top;
57
+ left -= relativeRect.left;
58
+ // adjusts positions in order to avoid overflowing the window and leaving a margin to the corners
59
+ if (top <= 0)
60
+ top += MARGIN_TO_CORNERS_PX;
61
+ else if (top + tooltipHeight >= document.body.clientHeight - MARGIN_TO_CORNERS_PX) {
62
+ top = document.body.clientHeight - MARGIN_TO_CORNERS_PX + tooltipHeight;
63
+ }
64
+ if (left <= 0)
65
+ left += MARGIN_TO_CORNERS_PX;
66
+ else if (left + tooltipWidth >= document.body.clientWidth - MARGIN_TO_CORNERS_PX) {
67
+ left = document.body.clientWidth - MARGIN_TO_CORNERS_PX - tooltipWidth;
36
68
  }
37
69
  this.tooltipRef.current.style.top = `${top}px`;
38
70
  this.tooltipRef.current.style.left = `${left}px`;
71
+ if (hideOnClickOutside) {
72
+ this.clickListener = (e) => {
73
+ if (this.tooltipRef.current?.contains(e.target))
74
+ return;
75
+ this.hide();
76
+ };
77
+ document.addEventListener('click', this.clickListener);
78
+ }
39
79
  }, 10);
40
80
  }
41
81
  hide() {
@@ -43,6 +83,8 @@ export class TooltipAPI {
43
83
  return;
44
84
  this.tooltipRef.current.classList.remove('visible');
45
85
  this.hideTimeoutId = window.setTimeout(() => this.setContent(undefined), animationTimeMS);
86
+ if (this.clickListener)
87
+ document.removeEventListener('click', this.clickListener);
46
88
  }
47
89
  }
48
90
  //# sourceMappingURL=TooltipAPI.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TooltipAPI.js","sourceRoot":"","sources":["../../../src/components/Tooltip/TooltipAPI.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAIzC,MAAM,OAAO,UAAU;IACb,UAAU,CAAiC;IAC3C,UAAU,CAAuD;IACjE,aAAa,CAAoB;IAEzC,YAAY,UAA2C,EAAE,UAAiE;QACxH,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAC9B,CAAC;IAED,IAAI,CAAC,OAAwB,EAAE,MAAmB,EAAE,QAAyB;QAC3E,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QACvC,IAAI,CAAC,aAAa,GAAG,SAAS,CAAA;QAC9B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;QACxB,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO;gBAAE,OAAM;YACpC,MAAM,IAAI,GAAG,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAA;YACvC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;YAChD,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAA;YACxD,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,YAAY,CAAA;YAC1D,IAAI,GAAG,GAAG,CAAC,CAAA;YACX,IAAI,IAAI,GAAG,CAAC,CAAA;YACZ,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;gBAChD,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,aAAa,GAAG,CAAC,CAAA;gBACpD,IAAI,QAAQ,KAAK,MAAM;oBAAE,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,YAAY,CAAA;;oBACnD,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAA;YACpC,CAAC;iBAAM,CAAC;gBACN,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC,CAAA;gBACpD,IAAI,QAAQ,KAAK,KAAK;oBAAE,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,aAAa,CAAA;;oBACjD,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAA;YACnC,CAAC;YACD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAA;YAC9C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,IAAI,IAAI,CAAA;QAClD,CAAC,EAAE,EAAE,CAAC,CAAA;IACR,CAAC;IAED,IAAI;QACF,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO;YAAE,OAAM;QACpC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QACnD,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC,CAAA;IAC3F,CAAC;CACF"}
1
+ {"version":3,"file":"TooltipAPI.js","sourceRoot":"","sources":["../../../src/components/Tooltip/TooltipAPI.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ export const TooltipProvider = ({ children }) => {
7
7
  const ref = useRef(null);
8
8
  const [content, setContent] = useState();
9
9
  const api = useMemo(() => new TooltipAPI(ref, setContent), []);
10
- return (_jsxs(Context.Provider, { value: api, children: [children, _jsx(TooltipBox, { ref: ref, "aria-hidden": true, children: content })] }));
10
+ return (_jsxs(Context.Provider, { value: api, children: [children, _jsx(TooltipBox, { ref: ref, children: content })] }));
11
11
  };
12
12
  export function useTooltip() {
13
13
  const api = useContext(Context);
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/components/Tooltip/context.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAE5E,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,MAAM,OAAO,GAAG,aAAa,CAAyB,SAAS,CAAC,CAAA;AAEhE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAAE,QAAQ,EAA0B,EAAE,EAAE;IACtE,MAAM,GAAG,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAA;IACxC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,EAAmB,CAAA;IACzD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAA;IAC9D,OAAO,CACL,MAAC,OAAO,CAAC,QAAQ,IAAC,KAAK,EAAE,GAAG,aACzB,QAAQ,EACT,KAAC,UAAU,IAAC,GAAG,EAAE,GAAG,iCAAe,OAAO,GAAc,IACvC,CACpB,CAAA;AACH,CAAC,CAAA;AAED,MAAM,UAAU,UAAU;IACxB,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;IAC/B,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAA;IACzG,OAAO,GAAG,CAAA;AACZ,CAAC"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/components/Tooltip/context.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAE5E,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,MAAM,OAAO,GAAG,aAAa,CAAyB,SAAS,CAAC,CAAA;AAEhE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAAE,QAAQ,EAA0B,EAAE,EAAE;IACtE,MAAM,GAAG,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAA;IACxC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,EAAmB,CAAA;IACzD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAA;IAC9D,OAAO,CACL,MAAC,OAAO,CAAC,QAAQ,IAAC,KAAK,EAAE,GAAG,aACzB,QAAQ,EACT,KAAC,UAAU,IAAC,GAAG,EAAE,GAAG,YAAG,OAAO,GAAc,IAC3B,CACpB,CAAA;AACH,CAAC,CAAA;AAED,MAAM,UAAU,UAAU;IACxB,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;IAC/B,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAA;IACzG,OAAO,GAAG,CAAA;AACZ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../../../src/components/Tooltip/style.tsx"],"names":[],"mappings":"AAGA,eAAO,MAAM,eAAe,MAAM,CAAA;AAElC,eAAO,MAAM,UAAU,wOAWtB,CAAA;AAED,eAAO,MAAM,cAAc,wOAM1B,CAAA"}
1
+ {"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../../../src/components/Tooltip/style.tsx"],"names":[],"mappings":"AAGA,eAAO,MAAM,eAAe,MAAM,CAAA;AAElC,eAAO,MAAM,UAAU,wOAUtB,CAAA;AAED,eAAO,MAAM,cAAc,wOAM1B,CAAA"}
@@ -3,7 +3,6 @@ import { styled } from 'styled-components';
3
3
  export const animationTimeMS = 300;
4
4
  export const TooltipBox = styled.div `
5
5
  position: absolute;
6
- pointer-events: none;
7
6
  opacity: 0;
8
7
  transition: opacity ${animationTimeMS / 1000}s;
9
8
  top: 0;
@@ -1 +1 @@
1
- {"version":3,"file":"style.js","sourceRoot":"","sources":["../../../src/components/Tooltip/style.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE1C,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAA;AAElC,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAA;;;;wBAIZ,eAAe,GAAE,IAAI;;;;;;;CAO5C,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAA;;sBAElB,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;WACnC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY;;;CAG1C,CAAA"}
1
+ {"version":3,"file":"style.js","sourceRoot":"","sources":["../../../src/components/Tooltip/style.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE1C,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAA;AAElC,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAA;;;wBAGZ,eAAe,GAAE,IAAI;;;;;;;CAO5C,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAA;;sBAElB,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;WACnC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY;;;CAG1C,CAAA"}
@@ -5,4 +5,10 @@ export interface BoxPosition {
5
5
  y1: number;
6
6
  y2: number;
7
7
  }
8
+ export interface ShowOptions {
9
+ content: React.ReactNode;
10
+ anchor: HTMLElement;
11
+ position?: TooltipPosition;
12
+ hideOnClickOutside?: boolean;
13
+ }
8
14
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/Tooltip/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAA;AAEjE,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;CACZ"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/Tooltip/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAA;AAEjE,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../src/features.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,gBAAiB,SAAQ,oBAAoB;IAC5D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,eAAO,MAAM,eAAe,EAAE,gBAK7B,CAAA"}
1
+ {"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../src/features.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,gBAAiB,SAAQ,oBAAoB;IAC5D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,eAAO,MAAM,eAAe,EAAE,gBAM7B,CAAA"}
package/dist/features.js CHANGED
@@ -3,5 +3,6 @@ export const defaultFeatures = {
3
3
  workspace: true,
4
4
  knowledgeSource: true,
5
5
  agent: true,
6
+ chatHistory: true,
6
7
  };
7
8
  //# sourceMappingURL=features.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"features.js","sourceRoot":"","sources":["../src/features.ts"],"names":[],"mappings":"AAaA,MAAM,CAAC,MAAM,eAAe,GAAqB;IAC/C,KAAK,EAAE,IAAI;IACX,SAAS,EAAE,IAAI;IACf,eAAe,EAAE,IAAI;IACrB,KAAK,EAAE,IAAI;CACZ,CAAA"}
1
+ {"version":3,"file":"features.js","sourceRoot":"","sources":["../src/features.ts"],"names":[],"mappings":"AAaA,MAAM,CAAC,MAAM,eAAe,GAAqB;IAC/C,KAAK,EAAE,IAAI;IACX,SAAS,EAAE,IAAI;IACf,eAAe,EAAE,IAAI;IACrB,KAAK,EAAE,IAAI;IACX,WAAW,EAAE,IAAI;CAClB,CAAA"}
package/dist/layout.css CHANGED
@@ -44,6 +44,12 @@
44
44
  padding: 0 10px;
45
45
  width: calc(100% - 20px);
46
46
  }
47
+ .chat-window.narrow {
48
+ width: auto;
49
+ }
50
+ .chat-right-panel {
51
+ display: none;
52
+ }
47
53
  .home-page {
48
54
  .title {
49
55
  margin-top: 40px;
@@ -1,3 +1,4 @@
1
+ import { LabeledWithImage } from './types.js';
1
2
  export interface SerializableAction {
2
3
  title: string;
3
4
  type: 'link' | 'command';
@@ -20,13 +21,13 @@ export interface KnowledgeSource {
20
21
  }
21
22
  export interface TextChatEntry {
22
23
  type: 'text' | 'md';
23
- agent: 'bot' | 'user' | 'system';
24
+ agentType: 'bot' | 'user' | 'system';
24
25
  actions?: ChatAction[];
25
26
  subtitle?: string;
26
27
  content: string;
27
28
  knowledgeSources?: KnowledgeSource[];
28
29
  updated?: string;
29
- agentId?: string;
30
+ agent?: LabeledWithImage;
30
31
  messageId?: string;
31
32
  error?: string;
32
33
  }