@memori.ai/memori-react 8.45.4 → 8.45.5

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 (225) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/components/Chat/Chat.d.ts +1 -0
  3. package/dist/components/Chat/Chat.js +2 -2
  4. package/dist/components/Chat/Chat.js.map +1 -1
  5. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.css +78 -0
  6. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.d.ts +3 -3
  7. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.js +5 -28
  8. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.js.map +1 -1
  9. package/dist/components/ChatInputs/ChatInputs.d.ts +1 -0
  10. package/dist/components/ChatInputs/ChatInputs.js +2 -2
  11. package/dist/components/ChatInputs/ChatInputs.js.map +1 -1
  12. package/dist/components/ContentPreviewModal/DocumentMarkdown.d.ts +7 -0
  13. package/dist/components/ContentPreviewModal/DocumentMarkdown.js +31 -0
  14. package/dist/components/ContentPreviewModal/DocumentMarkdown.js.map +1 -0
  15. package/dist/components/DrawerFooter/DrawerFooter.css +62 -0
  16. package/dist/components/IconButton/IconButton.css +135 -0
  17. package/dist/components/IconButton/IconButton.d.ts +1 -1
  18. package/dist/components/LoginModal/LoginModal.css +270 -0
  19. package/dist/components/LoginModal/LoginModal.d.ts +19 -0
  20. package/dist/components/LoginModal/LoginModal.js +355 -0
  21. package/dist/components/LoginModal/LoginModal.js.map +1 -0
  22. package/dist/components/MemoriWidget/MemoriWidget.d.ts +1 -1
  23. package/dist/components/MemoriWidget/MemoriWidget.js +11 -20
  24. package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
  25. package/dist/components/MobileSessionPanel/MobileSessionPanel.css +540 -0
  26. package/dist/components/MobileSessionPanel/MobileSessionPanel.js +72 -112
  27. package/dist/components/MobileSessionPanel/MobileSessionPanel.js.map +1 -1
  28. package/dist/components/PositionPopover/PositionPopover.css +218 -0
  29. package/dist/components/ReasoningBlock/ReasoningBlock.css +156 -0
  30. package/dist/components/ReasoningBlock/ReasoningBlock.d.ts +7 -0
  31. package/dist/components/ReasoningBlock/ReasoningBlock.js +61 -0
  32. package/dist/components/ReasoningBlock/ReasoningBlock.js.map +1 -0
  33. package/dist/components/SideDrawer/SideDrawer.css +112 -0
  34. package/dist/components/SideDrawer/SideDrawer.d.ts +22 -0
  35. package/dist/components/SideDrawer/SideDrawer.js +17 -0
  36. package/dist/components/SideDrawer/SideDrawer.js.map +1 -0
  37. package/dist/components/UploadButton/UploadButton.d.ts +2 -0
  38. package/dist/components/UploadButton/UploadButton.js +2 -2
  39. package/dist/components/UploadButton/UploadButton.js.map +1 -1
  40. package/dist/components/UploadButton/UploadImages/UploadImages.d.ts +2 -0
  41. package/dist/components/UploadButton/UploadImages/UploadImages.js +7 -1
  42. package/dist/components/UploadButton/UploadImages/UploadImages.js.map +1 -1
  43. package/dist/components/layouts/WebsiteAssistant/WebsiteAssistant.js +87 -7
  44. package/dist/components/layouts/WebsiteAssistant/WebsiteAssistant.js.map +1 -1
  45. package/dist/components/layouts/WebsiteAssistant/website-assistant.css +889 -0
  46. package/dist/components/layouts/fullpage.css +628 -0
  47. package/dist/helpers/artifactPanel.d.ts +6 -0
  48. package/dist/helpers/artifactPanel.js +42 -0
  49. package/dist/helpers/artifactPanel.js.map +1 -0
  50. package/dist/helpers/chatScroll.d.ts +12 -0
  51. package/dist/helpers/chatScroll.js +14 -0
  52. package/dist/helpers/chatScroll.js.map +1 -0
  53. package/dist/helpers/conversationHistory.d.ts +16 -0
  54. package/dist/helpers/conversationHistory.js +89 -0
  55. package/dist/helpers/conversationHistory.js.map +1 -0
  56. package/dist/helpers/conversationTitle.d.ts +8 -0
  57. package/dist/helpers/conversationTitle.js +27 -0
  58. package/dist/helpers/conversationTitle.js.map +1 -0
  59. package/dist/helpers/enhanceBubbleCodeBlocks.d.ts +5 -0
  60. package/dist/helpers/enhanceBubbleCodeBlocks.js +97 -0
  61. package/dist/helpers/enhanceBubbleCodeBlocks.js.map +1 -0
  62. package/dist/helpers/highlightMatches.d.ts +2 -0
  63. package/dist/helpers/highlightMatches.js +54 -0
  64. package/dist/helpers/highlightMatches.js.map +1 -0
  65. package/dist/helpers/nats/dialogStateCatchUp.d.ts +3 -0
  66. package/dist/helpers/nats/dialogStateCatchUp.js +40 -0
  67. package/dist/helpers/nats/dialogStateCatchUp.js.map +1 -0
  68. package/dist/helpers/positionPopover.d.ts +1 -0
  69. package/dist/helpers/positionPopover.js +9 -3
  70. package/dist/helpers/positionPopover.js.map +1 -1
  71. package/dist/helpers/prism.d.ts +16 -0
  72. package/dist/helpers/prism.js +78 -0
  73. package/dist/helpers/prism.js.map +1 -0
  74. package/dist/helpers/reasoning.d.ts +7 -0
  75. package/dist/helpers/reasoning.js +43 -0
  76. package/dist/helpers/reasoning.js.map +1 -0
  77. package/dist/helpers/relativeTime.d.ts +3 -0
  78. package/dist/helpers/relativeTime.js +56 -0
  79. package/dist/helpers/relativeTime.js.map +1 -0
  80. package/dist/helpers/sourcesCount.d.ts +2 -0
  81. package/dist/helpers/sourcesCount.js +22 -0
  82. package/dist/helpers/sourcesCount.js.map +1 -0
  83. package/dist/helpers/tts/muteSpeaker.js +3 -4
  84. package/dist/helpers/tts/muteSpeaker.js.map +1 -1
  85. package/dist/helpers/usePressTooltip.d.ts +6 -1
  86. package/dist/helpers/usePressTooltip.js +17 -3
  87. package/dist/helpers/usePressTooltip.js.map +1 -1
  88. package/dist/styles/motion.css +25 -0
  89. package/dist/version.d.ts +1 -1
  90. package/dist/version.js +1 -1
  91. package/esm/components/Chat/Chat.d.ts +1 -0
  92. package/esm/components/Chat/Chat.js +2 -2
  93. package/esm/components/Chat/Chat.js.map +1 -1
  94. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.d.ts +39 -0
  95. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.js +40 -0
  96. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.js.map +1 -0
  97. package/esm/components/ChatInputs/ChatInputs.d.ts +1 -0
  98. package/esm/components/ChatInputs/ChatInputs.js +2 -2
  99. package/esm/components/ChatInputs/ChatInputs.js.map +1 -1
  100. package/esm/components/ContentPreviewModal/DocumentMarkdown.d.ts +7 -0
  101. package/esm/components/ContentPreviewModal/DocumentMarkdown.js +28 -0
  102. package/esm/components/ContentPreviewModal/DocumentMarkdown.js.map +1 -0
  103. package/esm/components/DrawerFooter/DrawerFooter.d.ts +12 -0
  104. package/esm/components/DrawerFooter/DrawerFooter.js +8 -0
  105. package/esm/components/DrawerFooter/DrawerFooter.js.map +1 -0
  106. package/esm/components/IconButton/IconButton.d.ts +9 -0
  107. package/esm/components/IconButton/IconButton.js +33 -0
  108. package/esm/components/IconButton/IconButton.js.map +1 -0
  109. package/esm/components/LoginModal/LoginModal.d.ts +19 -0
  110. package/esm/components/LoginModal/LoginModal.js +352 -0
  111. package/esm/components/LoginModal/LoginModal.js.map +1 -0
  112. package/esm/components/MemoriWidget/MemoriWidget.d.ts +1 -1
  113. package/esm/components/MemoriWidget/MemoriWidget.js +6 -16
  114. package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
  115. package/esm/components/MobileSessionPanel/MobileSessionPanel.d.ts +65 -0
  116. package/esm/components/MobileSessionPanel/MobileSessionPanel.js +251 -0
  117. package/esm/components/MobileSessionPanel/MobileSessionPanel.js.map +1 -0
  118. package/esm/components/PositionPopover/PositionPopover.d.ts +22 -0
  119. package/esm/components/PositionPopover/PositionPopover.js +203 -0
  120. package/esm/components/PositionPopover/PositionPopover.js.map +1 -0
  121. package/esm/components/ReasoningBlock/ReasoningBlock.d.ts +7 -0
  122. package/esm/components/ReasoningBlock/ReasoningBlock.js +58 -0
  123. package/esm/components/ReasoningBlock/ReasoningBlock.js.map +1 -0
  124. package/esm/components/SideDrawer/SideDrawer.d.ts +22 -0
  125. package/esm/components/SideDrawer/SideDrawer.js +12 -0
  126. package/esm/components/SideDrawer/SideDrawer.js.map +1 -0
  127. package/esm/components/UploadButton/UploadButton.d.ts +2 -0
  128. package/esm/components/UploadButton/UploadButton.js +2 -2
  129. package/esm/components/UploadButton/UploadButton.js.map +1 -1
  130. package/esm/components/UploadButton/UploadImages/UploadImages.d.ts +2 -0
  131. package/esm/components/UploadButton/UploadImages/UploadImages.js +7 -1
  132. package/esm/components/UploadButton/UploadImages/UploadImages.js.map +1 -1
  133. package/esm/components/layouts/WebsiteAssistant/WebsiteAssistant.d.ts +4 -0
  134. package/esm/components/layouts/WebsiteAssistant/WebsiteAssistant.js +141 -0
  135. package/esm/components/layouts/WebsiteAssistant/WebsiteAssistant.js.map +1 -0
  136. package/esm/helpers/artifactPanel.d.ts +6 -0
  137. package/esm/helpers/artifactPanel.js +37 -0
  138. package/esm/helpers/artifactPanel.js.map +1 -0
  139. package/esm/helpers/chatScroll.d.ts +12 -0
  140. package/esm/helpers/chatScroll.js +9 -0
  141. package/esm/helpers/chatScroll.js.map +1 -0
  142. package/esm/helpers/conversationHistory.d.ts +16 -0
  143. package/esm/helpers/conversationHistory.js +82 -0
  144. package/esm/helpers/conversationHistory.js.map +1 -0
  145. package/esm/helpers/conversationTitle.d.ts +8 -0
  146. package/esm/helpers/conversationTitle.js +23 -0
  147. package/esm/helpers/conversationTitle.js.map +1 -0
  148. package/esm/helpers/enhanceBubbleCodeBlocks.d.ts +5 -0
  149. package/esm/helpers/enhanceBubbleCodeBlocks.js +94 -0
  150. package/esm/helpers/enhanceBubbleCodeBlocks.js.map +1 -0
  151. package/esm/helpers/highlightMatches.d.ts +2 -0
  152. package/esm/helpers/highlightMatches.js +49 -0
  153. package/esm/helpers/highlightMatches.js.map +1 -0
  154. package/esm/helpers/nats/dialogStateCatchUp.d.ts +3 -0
  155. package/esm/helpers/nats/dialogStateCatchUp.js +35 -0
  156. package/esm/helpers/nats/dialogStateCatchUp.js.map +1 -0
  157. package/esm/helpers/positionPopover.d.ts +3 -0
  158. package/esm/helpers/positionPopover.js +17 -0
  159. package/esm/helpers/positionPopover.js.map +1 -0
  160. package/esm/helpers/prism.d.ts +16 -0
  161. package/esm/helpers/prism.js +74 -0
  162. package/esm/helpers/prism.js.map +1 -0
  163. package/esm/helpers/reasoning.d.ts +7 -0
  164. package/esm/helpers/reasoning.js +39 -0
  165. package/esm/helpers/reasoning.js.map +1 -0
  166. package/esm/helpers/relativeTime.d.ts +3 -0
  167. package/esm/helpers/relativeTime.js +50 -0
  168. package/esm/helpers/relativeTime.js.map +1 -0
  169. package/esm/helpers/sourcesCount.d.ts +2 -0
  170. package/esm/helpers/sourcesCount.js +18 -0
  171. package/esm/helpers/sourcesCount.js.map +1 -0
  172. package/esm/helpers/tts/muteSpeaker.d.ts +13 -0
  173. package/esm/helpers/tts/muteSpeaker.js +21 -0
  174. package/esm/helpers/tts/muteSpeaker.js.map +1 -0
  175. package/esm/helpers/usePressTooltip.d.ts +18 -0
  176. package/esm/helpers/usePressTooltip.js +35 -0
  177. package/esm/helpers/usePressTooltip.js.map +1 -0
  178. package/esm/icons/FacebookIcon.d.ts +3 -0
  179. package/esm/icons/FacebookIcon.js +4 -0
  180. package/esm/icons/FacebookIcon.js.map +1 -0
  181. package/esm/icons/LinkedinIcon.d.ts +3 -0
  182. package/esm/icons/LinkedinIcon.js +4 -0
  183. package/esm/icons/LinkedinIcon.js.map +1 -0
  184. package/esm/icons/MemoriIcon.d.ts +3 -0
  185. package/esm/icons/MemoriIcon.js +6 -0
  186. package/esm/icons/MemoriIcon.js.map +1 -0
  187. package/esm/icons/TelegramIcon.d.ts +3 -0
  188. package/esm/icons/TelegramIcon.js +4 -0
  189. package/esm/icons/TelegramIcon.js.map +1 -0
  190. package/esm/icons/TwitterIcon.d.ts +3 -0
  191. package/esm/icons/TwitterIcon.js +4 -0
  192. package/esm/icons/TwitterIcon.js.map +1 -0
  193. package/esm/icons/WhatsappIcon.d.ts +3 -0
  194. package/esm/icons/WhatsappIcon.js +4 -0
  195. package/esm/icons/WhatsappIcon.js.map +1 -0
  196. package/esm/icons/artifacts/DocumentIcon.d.ts +3 -0
  197. package/esm/icons/artifacts/DocumentIcon.js +4 -0
  198. package/esm/icons/artifacts/DocumentIcon.js.map +1 -0
  199. package/esm/icons/artifacts/HtmlIcon.d.ts +3 -0
  200. package/esm/icons/artifacts/HtmlIcon.js +4 -0
  201. package/esm/icons/artifacts/HtmlIcon.js.map +1 -0
  202. package/esm/icons/artifacts/JavascriptIcon.d.ts +3 -0
  203. package/esm/icons/artifacts/JavascriptIcon.js +4 -0
  204. package/esm/icons/artifacts/JavascriptIcon.js.map +1 -0
  205. package/esm/icons/artifacts/MarkdownIcon.d.ts +3 -0
  206. package/esm/icons/artifacts/MarkdownIcon.js +4 -0
  207. package/esm/icons/artifacts/MarkdownIcon.js.map +1 -0
  208. package/esm/icons/artifacts/PythonIcon.d.ts +3 -0
  209. package/esm/icons/artifacts/PythonIcon.js +4 -0
  210. package/esm/icons/artifacts/PythonIcon.js.map +1 -0
  211. package/esm/icons/artifacts/SvgIcon.d.ts +3 -0
  212. package/esm/icons/artifacts/SvgIcon.js +4 -0
  213. package/esm/icons/artifacts/SvgIcon.js.map +1 -0
  214. package/esm/icons/artifacts/XmlIcon.d.ts +3 -0
  215. package/esm/icons/artifacts/XmlIcon.js +4 -0
  216. package/esm/icons/artifacts/XmlIcon.js.map +1 -0
  217. package/esm/icons/artifacts/cssIcon.d.ts +3 -0
  218. package/esm/icons/artifacts/cssIcon.js +4 -0
  219. package/esm/icons/artifacts/cssIcon.js.map +1 -0
  220. package/esm/version.d.ts +1 -1
  221. package/esm/version.js +1 -1
  222. package/package.json +2 -1
  223. package/dist/context/widgetSurfaceContext.d.ts +0 -3
  224. package/dist/context/widgetSurfaceContext.js +0 -11
  225. package/dist/context/widgetSurfaceContext.js.map +0 -1
@@ -0,0 +1,8 @@
1
+ export type ConversationTitleLine = {
2
+ inbound?: boolean;
3
+ text?: string;
4
+ };
5
+ export declare const getConversationTitle: ({ title, lines, }: {
6
+ title?: string | null;
7
+ lines: ConversationTitleLine[];
8
+ }) => string;
@@ -0,0 +1,23 @@
1
+ import { stripHTML } from './utils';
2
+ import { stripAllInternalTags } from './message';
3
+ const TITLE_MAX_LENGTH = 140;
4
+ const toSingleLine = (value) => value.replace(/\s+/g, ' ').trim();
5
+ const truncateTitle = (value, maxLength = TITLE_MAX_LENGTH) => {
6
+ if (value.length <= maxLength)
7
+ return value;
8
+ const sliced = value.slice(0, maxLength).trimEnd();
9
+ const lastSpace = sliced.lastIndexOf(' ');
10
+ const cut = lastSpace > maxLength * 0.7 ? sliced.slice(0, lastSpace) : sliced;
11
+ return `${cut}...`;
12
+ };
13
+ const cleanText = (value) => toSingleLine(stripHTML(stripAllInternalTags(value)));
14
+ export const getConversationTitle = ({ title, lines, }) => {
15
+ const backendTitle = title ? cleanText(title) : '';
16
+ if (backendTitle)
17
+ return backendTitle;
18
+ const firstUserMessage = lines.find(line => line.inbound && cleanText(line.text || ''));
19
+ if (!(firstUserMessage === null || firstUserMessage === void 0 ? void 0 : firstUserMessage.text))
20
+ return '';
21
+ return truncateTitle(cleanText(firstUserMessage.text));
22
+ };
23
+ //# sourceMappingURL=conversationTitle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversationTitle.js","sourceRoot":"","sources":["../../src/helpers/conversationTitle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAEjD,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAO7B,MAAM,YAAY,GAAG,CAAC,KAAa,EAAU,EAAE,CAC7C,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAEpC,MAAM,aAAa,GAAG,CAAC,KAAa,EAAE,SAAS,GAAG,gBAAgB,EAAU,EAAE;IAC5E,IAAI,KAAK,CAAC,MAAM,IAAI,SAAS;QAAE,OAAO,KAAK,CAAC;IAC5C,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;IACnD,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAG,SAAS,GAAG,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC9E,OAAO,GAAG,GAAG,KAAK,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,KAAa,EAAU,EAAE,CAC1C,YAAY,CAAC,SAAS,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAOvD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EACnC,KAAK,EACL,KAAK,GAIN,EAAU,EAAE;IACX,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACnD,IAAI,YAAY;QAAE,OAAO,YAAY,CAAC;IAEtC,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CACjC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CACnD,CAAC;IACF,IAAI,CAAC,CAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,IAAI,CAAA;QAAE,OAAO,EAAE,CAAC;IAEvC,OAAO,aAAa,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;AACzD,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ export type BubbleCodeBlockLabels = {
2
+ copy: string;
3
+ copied: string;
4
+ };
5
+ export declare function enhanceBubbleCodeBlocks(root: HTMLElement, labels: BubbleCodeBlockLabels): () => void;
@@ -0,0 +1,94 @@
1
+ import { highlightUnder, loadPrism } from './prism';
2
+ const COPY_ICON = `<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect width="14" height="14" x="8" y="8" rx="2" ry="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/></svg>`;
3
+ const CHECK_ICON = `<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 6 9 17l-5-5"/></svg>`;
4
+ function languageFromCode(code) {
5
+ if (!code)
6
+ return '';
7
+ const match = Array.from(code.classList)
8
+ .map(c => { var _a; return (_a = c.match(/^language-([\w+-]+)/)) === null || _a === void 0 ? void 0 : _a[1]; })
9
+ .find(Boolean);
10
+ return match && match !== 'plaintext' && match !== 'text' ? match : '';
11
+ }
12
+ export function enhanceBubbleCodeBlocks(root, labels) {
13
+ const cleanups = [];
14
+ const timers = [];
15
+ root.querySelectorAll('pre').forEach(pre => {
16
+ if (pre.closest('.memori-chat--code-block'))
17
+ return;
18
+ const code = pre.querySelector('code');
19
+ const lang = languageFromCode(code);
20
+ const wrapper = document.createElement('div');
21
+ wrapper.className = 'memori-chat--code-block';
22
+ const toolbar = document.createElement('div');
23
+ toolbar.className = 'memori-chat--code-block-toolbar';
24
+ if (lang) {
25
+ const langEl = document.createElement('span');
26
+ langEl.className = 'memori-chat--code-block-lang';
27
+ langEl.textContent = lang;
28
+ toolbar.appendChild(langEl);
29
+ }
30
+ else {
31
+ const spacer = document.createElement('span');
32
+ spacer.className = 'memori-chat--code-block-lang memori-chat--code-block-lang--empty';
33
+ toolbar.appendChild(spacer);
34
+ }
35
+ const copyBtn = document.createElement('button');
36
+ copyBtn.type = 'button';
37
+ copyBtn.className = 'memori-chat--code-block-copy';
38
+ copyBtn.setAttribute('aria-label', labels.copy);
39
+ copyBtn.title = labels.copy;
40
+ copyBtn.innerHTML = COPY_ICON;
41
+ let resetTimer;
42
+ const onCopy = async (event) => {
43
+ var _a, _b, _c;
44
+ event.preventDefault();
45
+ event.stopPropagation();
46
+ const text = (_b = (_a = code === null || code === void 0 ? void 0 : code.textContent) !== null && _a !== void 0 ? _a : pre.textContent) !== null && _b !== void 0 ? _b : '';
47
+ try {
48
+ if ((_c = navigator.clipboard) === null || _c === void 0 ? void 0 : _c.writeText) {
49
+ await navigator.clipboard.writeText(text);
50
+ }
51
+ else {
52
+ return;
53
+ }
54
+ copyBtn.classList.add('memori-chat--code-block-copy--copied');
55
+ copyBtn.setAttribute('aria-label', labels.copied);
56
+ copyBtn.title = labels.copied;
57
+ copyBtn.innerHTML = CHECK_ICON;
58
+ if (resetTimer)
59
+ window.clearTimeout(resetTimer);
60
+ resetTimer = window.setTimeout(() => {
61
+ copyBtn.classList.remove('memori-chat--code-block-copy--copied');
62
+ copyBtn.setAttribute('aria-label', labels.copy);
63
+ copyBtn.title = labels.copy;
64
+ copyBtn.innerHTML = COPY_ICON;
65
+ }, 2000);
66
+ timers.push(resetTimer);
67
+ }
68
+ catch (err) {
69
+ console.error('Failed to copy code block:', err);
70
+ }
71
+ };
72
+ copyBtn.addEventListener('click', onCopy);
73
+ cleanups.push(() => {
74
+ copyBtn.removeEventListener('click', onCopy);
75
+ if (resetTimer)
76
+ window.clearTimeout(resetTimer);
77
+ });
78
+ toolbar.appendChild(copyBtn);
79
+ const parent = pre.parentNode;
80
+ if (!parent)
81
+ return;
82
+ parent.insertBefore(wrapper, pre);
83
+ wrapper.appendChild(toolbar);
84
+ wrapper.appendChild(pre);
85
+ });
86
+ void loadPrism().then(() => {
87
+ highlightUnder(root);
88
+ });
89
+ return () => {
90
+ cleanups.forEach(fn => fn());
91
+ timers.forEach(id => window.clearTimeout(id));
92
+ };
93
+ }
94
+ //# sourceMappingURL=enhanceBubbleCodeBlocks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enhanceBubbleCodeBlocks.js","sourceRoot":"","sources":["../../src/helpers/enhanceBubbleCodeBlocks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import React from 'react';
2
+ export declare const highlightMatches: (text: string, query: string) => React.ReactNode;
@@ -0,0 +1,49 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import React from 'react';
3
+ const escapeRegExp = (value) => value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
4
+ const STOPWORDS = new Set([
5
+ 'the',
6
+ 'and',
7
+ 'for',
8
+ 'are',
9
+ 'but',
10
+ 'not',
11
+ 'you',
12
+ 'that',
13
+ 'this',
14
+ 'with',
15
+ 'from',
16
+ 'was',
17
+ 'have',
18
+ 'has',
19
+ 'had',
20
+ 'per',
21
+ 'del',
22
+ 'della',
23
+ 'delle',
24
+ 'che',
25
+ 'non',
26
+ 'una',
27
+ 'uno',
28
+ 'con',
29
+ 'come',
30
+ 'quali',
31
+ 'quale',
32
+ 'questa',
33
+ 'questo',
34
+ ]);
35
+ const tokenize = (query) => query
36
+ .split(/\s+/)
37
+ .map(token => token.replace(/[^\p{L}\p{N}]+/gu, ''))
38
+ .filter(token => token.length >= 3 && !STOPWORDS.has(token.toLowerCase()));
39
+ export const highlightMatches = (text, query) => {
40
+ const terms = Array.from(new Set(tokenize(query)));
41
+ if (!text || terms.length === 0)
42
+ return text;
43
+ const pattern = new RegExp(`(${terms.map(escapeRegExp).join('|')})`, 'gi');
44
+ const parts = text.split(pattern);
45
+ if (parts.length === 1)
46
+ return text;
47
+ return parts.map((part, index) => terms.some(term => part.toLowerCase() === term.toLowerCase()) ? (_jsx("mark", { className: "memori-whythisanswer-mark", children: part }, `${part}-${index}`)) : (_jsx(React.Fragment, { children: part }, `${part}-${index}`)));
48
+ };
49
+ //# sourceMappingURL=highlightMatches.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"highlightMatches.js","sourceRoot":"","sources":["../../src/helpers/highlightMatches.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,EAAE,CACrC,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AAE/C,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;IACxB,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;IACN,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,OAAO;IACP,OAAO;IACP,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,OAAO;IACP,OAAO;IACP,QAAQ;IACR,QAAQ;CACT,CAAC,CAAC;AAEH,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAY,EAAE,CAC3C,KAAK;KACF,KAAK,CAAC,KAAK,CAAC;KACZ,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;KACnD,MAAM,CACL,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAClE,CAAC;AAEN,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,IAAY,EACZ,KAAa,EACI,EAAE;IACnB,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnD,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAE7C,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC3E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEpC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAC/B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAC9D,eAA+B,SAAS,EAAC,2BAA2B,YACjE,IAAI,IADI,GAAG,IAAI,IAAI,KAAK,EAAE,CAEtB,CACR,CAAC,CAAC,CAAC,CACF,KAAC,KAAK,CAAC,QAAQ,cAA2B,IAAI,IAAzB,GAAG,IAAI,IAAI,KAAK,EAAE,CAAyB,CACjE,CACF,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { DialogState } from '@memori.ai/memori-api-client/dist/types';
2
+ export declare function dialogStateFingerprint(state: DialogState | undefined): string;
3
+ export declare function isEnterTextCatchUpReady(stateBeforeRequest: string | undefined, sessionState: DialogState): boolean;
@@ -0,0 +1,35 @@
1
+ export function dialogStateFingerprint(state) {
2
+ if (!state)
3
+ return '';
4
+ return JSON.stringify({
5
+ state: state.state,
6
+ previousState: state.previousState,
7
+ emission: state.emission,
8
+ emitter: state.emitter,
9
+ lastMatchedMemoryID: state.lastMatchedMemoryID,
10
+ currentDate: state.currentDate,
11
+ currentMemoryID: state.currentMemoryID,
12
+ contextVars: state.contextVars,
13
+ emittedMedia: state.emittedMedia,
14
+ });
15
+ }
16
+ export function isEnterTextCatchUpReady(stateBeforeRequest, sessionState) {
17
+ const sessionFp = dialogStateFingerprint(sessionState);
18
+ if (sessionFp === (stateBeforeRequest !== null && stateBeforeRequest !== void 0 ? stateBeforeRequest : '')) {
19
+ return false;
20
+ }
21
+ try {
22
+ const before = stateBeforeRequest
23
+ ? JSON.parse(stateBeforeRequest)
24
+ : {};
25
+ if (before.emission !== undefined &&
26
+ before.emission === sessionState.emission &&
27
+ sessionState.completion !== true) {
28
+ return false;
29
+ }
30
+ }
31
+ catch (_a) {
32
+ }
33
+ return true;
34
+ }
35
+ //# sourceMappingURL=dialogStateCatchUp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialogStateCatchUp.js","sourceRoot":"","sources":["../../../src/helpers/nats/dialogStateCatchUp.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,sBAAsB,CAAC,KAA8B;IACnE,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;QAC9C,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,YAAY,EAAE,KAAK,CAAC,YAAY;KACjC,CAAC,CAAC;AACL,CAAC;AASD,MAAM,UAAU,uBAAuB,CACrC,kBAAsC,EACtC,YAAyB;IAEzB,MAAM,SAAS,GAAG,sBAAsB,CAAC,YAAY,CAAC,CAAC;IACvD,IAAI,SAAS,KAAK,CAAC,kBAAkB,aAAlB,kBAAkB,cAAlB,kBAAkB,GAAI,EAAE,CAAC,EAAE;QAC5C,OAAO,KAAK,CAAC;KACd;IAED,IAAI;QACF,MAAM,MAAM,GAAG,kBAAkB;YAC/B,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAA2B;YAC3D,CAAC,CAAC,EAAE,CAAC;QACP,IACE,MAAM,CAAC,QAAQ,KAAK,SAAS;YAC7B,MAAM,CAAC,QAAQ,KAAK,YAAY,CAAC,QAAQ;YACzC,YAAY,CAAC,UAAU,KAAK,IAAI,EAChC;YACA,OAAO,KAAK,CAAC;SACd;KACF;IAAC,WAAM;KAEP;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function shouldHoldAutoStartForPosition(needsPosition: boolean, hasPosition: boolean): boolean;
2
+ export declare function isHeaderPositionPopoverAvailable(isMobile: boolean, layoutStripsNeedsPositionOnMobile: boolean): boolean;
3
+ export declare function shouldRestartSessionOnPositionPopoverClose(wasOpen: boolean, nextOpen: boolean, autoStart: boolean, sessionAlreadyStarted?: boolean, hasPosition?: boolean): boolean;
@@ -0,0 +1,17 @@
1
+ export function shouldHoldAutoStartForPosition(needsPosition, hasPosition) {
2
+ return !!needsPosition && !hasPosition;
3
+ }
4
+ export function isHeaderPositionPopoverAvailable(isMobile, layoutStripsNeedsPositionOnMobile) {
5
+ if (isMobile && layoutStripsNeedsPositionOnMobile) {
6
+ return false;
7
+ }
8
+ return true;
9
+ }
10
+ export function shouldRestartSessionOnPositionPopoverClose(wasOpen, nextOpen, autoStart, sessionAlreadyStarted = false, hasPosition = true) {
11
+ return (wasOpen &&
12
+ !nextOpen &&
13
+ !!autoStart &&
14
+ !sessionAlreadyStarted &&
15
+ hasPosition);
16
+ }
17
+ //# sourceMappingURL=positionPopover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"positionPopover.js","sourceRoot":"","sources":["../../src/helpers/positionPopover.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,8BAA8B,CAC5C,aAAsB,EACtB,WAAoB;IAEpB,OAAO,CAAC,CAAC,aAAa,IAAI,CAAC,WAAW,CAAC;AACzC,CAAC;AAQD,MAAM,UAAU,gCAAgC,CAC9C,QAAiB,EACjB,iCAA0C;IAE1C,IAAI,QAAQ,IAAI,iCAAiC,EAAE,CAAC;QAClD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAQD,MAAM,UAAU,0CAA0C,CACxD,OAAgB,EAChB,QAAiB,EACjB,SAAkB,EAClB,qBAAqB,GAAG,KAAK,EAC7B,WAAW,GAAG,IAAI;IAElB,OAAO,CACL,OAAO;QACP,CAAC,QAAQ;QACT,CAAC,CAAC,SAAS;QACX,CAAC,qBAAqB;QACtB,WAAW,CACZ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,16 @@
1
+ declare global {
2
+ interface Window {
3
+ Prism?: {
4
+ highlightAll?: () => void;
5
+ highlightAllUnder?: (element: HTMLElement) => void;
6
+ highlightElement?: (element: Element) => void;
7
+ plugins?: {
8
+ autoloader?: {
9
+ languages_path?: string;
10
+ };
11
+ };
12
+ };
13
+ }
14
+ }
15
+ export declare function loadPrism(): Promise<void>;
16
+ export declare function highlightUnder(root: HTMLElement): void;
@@ -0,0 +1,74 @@
1
+ const PRISM_SCRIPT_ID = 'memori-prism-script';
2
+ const PRISM_AUTOLOADER_ID = 'memori-prism-autoloader-script';
3
+ const PRISM_CSS_ID = 'memori-prism-css';
4
+ let prismLoadPromise = null;
5
+ export function loadPrism() {
6
+ var _a;
7
+ if (typeof document === 'undefined') {
8
+ return Promise.resolve();
9
+ }
10
+ if ((_a = window.Prism) === null || _a === void 0 ? void 0 : _a.highlightAll) {
11
+ return Promise.resolve();
12
+ }
13
+ if (prismLoadPromise) {
14
+ return prismLoadPromise;
15
+ }
16
+ prismLoadPromise = new Promise(resolve => {
17
+ var _a;
18
+ const existingScript = document.getElementById(PRISM_SCRIPT_ID);
19
+ if (existingScript) {
20
+ const finish = () => resolve();
21
+ if ((_a = window.Prism) === null || _a === void 0 ? void 0 : _a.highlightAll) {
22
+ finish();
23
+ return;
24
+ }
25
+ existingScript.addEventListener('load', finish);
26
+ setTimeout(finish, 2000);
27
+ return;
28
+ }
29
+ if (!document.getElementById(PRISM_CSS_ID)) {
30
+ const prismCss = document.createElement('link');
31
+ prismCss.id = PRISM_CSS_ID;
32
+ prismCss.rel = 'stylesheet';
33
+ prismCss.href =
34
+ 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/themes/prism-tomorrow.min.css';
35
+ document.head.appendChild(prismCss);
36
+ }
37
+ const script = document.createElement('script');
38
+ script.src = 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/prism.min.js';
39
+ script.async = true;
40
+ script.id = PRISM_SCRIPT_ID;
41
+ script.onload = () => {
42
+ const autoloaderScript = document.createElement('script');
43
+ autoloaderScript.src =
44
+ 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/plugins/autoloader/prism-autoloader.min.js';
45
+ autoloaderScript.async = true;
46
+ autoloaderScript.id = PRISM_AUTOLOADER_ID;
47
+ autoloaderScript.onload = () => {
48
+ var _a, _b;
49
+ if ((_b = (_a = window.Prism) === null || _a === void 0 ? void 0 : _a.plugins) === null || _b === void 0 ? void 0 : _b.autoloader) {
50
+ window.Prism.plugins.autoloader.languages_path =
51
+ 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/';
52
+ }
53
+ resolve();
54
+ };
55
+ autoloaderScript.onerror = () => resolve();
56
+ document.head.appendChild(autoloaderScript);
57
+ };
58
+ script.onerror = () => resolve();
59
+ document.head.appendChild(script);
60
+ });
61
+ return prismLoadPromise;
62
+ }
63
+ export function highlightUnder(root) {
64
+ if (!window.Prism)
65
+ return;
66
+ if (window.Prism.highlightAllUnder) {
67
+ window.Prism.highlightAllUnder(root);
68
+ return;
69
+ }
70
+ if (window.Prism.highlightAll) {
71
+ window.Prism.highlightAll();
72
+ }
73
+ }
74
+ //# sourceMappingURL=prism.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prism.js","sourceRoot":"","sources":["../../src/helpers/prism.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export type ReasoningExtract = {
2
+ content: string;
3
+ complete: boolean;
4
+ remaining: string;
5
+ hasReasoning: boolean;
6
+ };
7
+ export declare const extractReasoning: (text: string) => ReasoningExtract;
@@ -0,0 +1,39 @@
1
+ const THINK_BLOCK_RE = /<think\b[^>]*>([\s\S]*?)(<\/think>|$)/gi;
2
+ export const extractReasoning = (text) => {
3
+ var _a;
4
+ if (!text || !/<think\b/i.test(text)) {
5
+ return {
6
+ content: '',
7
+ complete: true,
8
+ remaining: text !== null && text !== void 0 ? text : '',
9
+ hasReasoning: false,
10
+ };
11
+ }
12
+ const pieces = [];
13
+ let complete = true;
14
+ let remaining = '';
15
+ let lastIndex = 0;
16
+ const re = new RegExp(THINK_BLOCK_RE.source, 'gi');
17
+ let match;
18
+ while ((match = re.exec(text)) !== null) {
19
+ remaining += text.slice(lastIndex, match.index);
20
+ pieces.push((_a = match[1]) !== null && _a !== void 0 ? _a : '');
21
+ if (match[2] !== '</think>') {
22
+ complete = false;
23
+ lastIndex = text.length;
24
+ break;
25
+ }
26
+ lastIndex = match.index + match[0].length;
27
+ }
28
+ remaining += text.slice(lastIndex);
29
+ return {
30
+ content: pieces
31
+ .map(piece => piece.trim())
32
+ .filter(Boolean)
33
+ .join('\n\n'),
34
+ complete,
35
+ remaining,
36
+ hasReasoning: true,
37
+ };
38
+ };
39
+ //# sourceMappingURL=reasoning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reasoning.js","sourceRoot":"","sources":["../../src/helpers/reasoning.ts"],"names":[],"mappings":"AAOA,MAAM,cAAc,GAAG,yCAAyC,CAAC;AAEjE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAoB,EAAE;;IACjE,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,OAAO;YACL,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE;YACrB,YAAY,EAAE,KAAK;SACpB,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,QAAQ,GAAG,IAAI,CAAC;IACpB,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACnD,IAAI,KAA6B,CAAC;IAElC,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACxC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,MAAA,KAAK,CAAC,CAAC,CAAC,mCAAI,EAAE,CAAC,CAAC;QAC5B,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE,CAAC;YAC5B,QAAQ,GAAG,KAAK,CAAC;YACjB,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;YACxB,MAAM;QACR,CAAC;QACD,SAAS,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC5C,CAAC;IAED,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAEnC,OAAO;QACL,OAAO,EAAE,MAAM;aACZ,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;aAC1B,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,MAAM,CAAC;QACf,QAAQ;QACR,SAAS;QACT,YAAY,EAAE,IAAI;KACnB,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const parseTimestamp: (value?: string | Date | null) => Date | null;
2
+ export declare const formatExactDateTime: (value: string | Date, locale: string) => string;
3
+ export declare const formatRelativeTime: (value: string | Date, locale: string, now?: Date) => string;
@@ -0,0 +1,50 @@
1
+ const SECOND = 1000;
2
+ const MINUTE = 60 * SECOND;
3
+ const HOUR = 60 * MINUTE;
4
+ const DAY = 24 * HOUR;
5
+ const WEEK = 7 * DAY;
6
+ const MONTH = 30 * DAY;
7
+ const YEAR = 365 * DAY;
8
+ export const parseTimestamp = (value) => {
9
+ if (!value)
10
+ return null;
11
+ const date = value instanceof Date ? value : new Date(value);
12
+ return Number.isNaN(date.getTime()) ? null : date;
13
+ };
14
+ export const formatExactDateTime = (value, locale) => {
15
+ const date = parseTimestamp(value);
16
+ if (!date)
17
+ return '';
18
+ return new Intl.DateTimeFormat(locale, {
19
+ dateStyle: 'short',
20
+ timeStyle: 'short',
21
+ }).format(date);
22
+ };
23
+ export const formatRelativeTime = (value, locale, now = new Date()) => {
24
+ const date = parseTimestamp(value);
25
+ if (!date)
26
+ return '';
27
+ const diff = date.getTime() - now.getTime();
28
+ const abs = Math.abs(diff);
29
+ const rtf = new Intl.RelativeTimeFormat(locale, { numeric: 'auto' });
30
+ if (abs < MINUTE) {
31
+ return rtf.format(Math.round(diff / SECOND), 'second');
32
+ }
33
+ if (abs < HOUR) {
34
+ return rtf.format(Math.round(diff / MINUTE), 'minute');
35
+ }
36
+ if (abs < DAY) {
37
+ return rtf.format(Math.round(diff / HOUR), 'hour');
38
+ }
39
+ if (abs < WEEK) {
40
+ return rtf.format(Math.round(diff / DAY), 'day');
41
+ }
42
+ if (abs < MONTH) {
43
+ return rtf.format(Math.round(diff / WEEK), 'week');
44
+ }
45
+ if (abs < YEAR) {
46
+ return rtf.format(Math.round(diff / MONTH), 'month');
47
+ }
48
+ return rtf.format(Math.round(diff / YEAR), 'year');
49
+ };
50
+ //# sourceMappingURL=relativeTime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relativeTime.js","sourceRoot":"","sources":["../../src/helpers/relativeTime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Message } from '@memori.ai/memori-api-client/dist/types';
2
+ export declare const getExposedSourcesCount: (message?: Message | null) => number | undefined;
@@ -0,0 +1,18 @@
1
+ const isNonNegativeNumber = (value) => typeof value === 'number' && Number.isFinite(value) && value >= 0;
2
+ export const getExposedSourcesCount = (message) => {
3
+ if (!message)
4
+ return undefined;
5
+ const extra = message;
6
+ if (isNonNegativeNumber(extra.sourcesCount))
7
+ return extra.sourcesCount;
8
+ if (isNonNegativeNumber(extra.sourceCount))
9
+ return extra.sourceCount;
10
+ if (isNonNegativeNumber(extra.matchesCount))
11
+ return extra.matchesCount;
12
+ if (Array.isArray(extra.matches))
13
+ return extra.matches.length;
14
+ if (Array.isArray(extra.sources))
15
+ return extra.sources.length;
16
+ return undefined;
17
+ };
18
+ //# sourceMappingURL=sourcesCount.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sourcesCount.js","sourceRoot":"","sources":["../../src/helpers/sourcesCount.ts"],"names":[],"mappings":"AAUA,MAAM,mBAAmB,GAAG,CAAC,KAAc,EAAmB,EAAE,CAC9D,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAMpE,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,OAAwB,EACJ,EAAE;IACtB,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAE/B,MAAM,KAAK,GAAG,OAAqC,CAAC;IAEpD,IAAI,mBAAmB,CAAC,KAAK,CAAC,YAAY,CAAC;QAAE,OAAO,KAAK,CAAC,YAAY,CAAC;IACvE,IAAI,mBAAmB,CAAC,KAAK,CAAC,WAAW,CAAC;QAAE,OAAO,KAAK,CAAC,WAAW,CAAC;IACrE,IAAI,mBAAmB,CAAC,KAAK,CAAC,YAAY,CAAC;QAAE,OAAO,KAAK,CAAC,YAAY,CAAC;IACvE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;IAC9D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;IAE9D,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ export type MuteSpeakerOptions = {
2
+ defaultEnableAudio: boolean;
3
+ defaultSpeakerActive: boolean;
4
+ autoStart: boolean;
5
+ speakerMuted: boolean;
6
+ storedMute?: boolean;
7
+ };
8
+ export declare function getMuteSpeakerFallback(defaultEnableAudio: boolean, defaultSpeakerActive: boolean, autoStart: boolean): boolean;
9
+ export declare function isSpeakerEffectivelyMuted({ defaultEnableAudio, defaultSpeakerActive, autoStart, speakerMuted, storedMute, }: MuteSpeakerOptions): boolean;
10
+ export declare function shouldPlayTtsAudio({ text, preview, ...muteOptions }: MuteSpeakerOptions & {
11
+ text?: string;
12
+ preview?: boolean;
13
+ }): boolean;
@@ -0,0 +1,21 @@
1
+ export function getMuteSpeakerFallback(defaultEnableAudio, defaultSpeakerActive, autoStart) {
2
+ return !defaultEnableAudio || !defaultSpeakerActive || autoStart;
3
+ }
4
+ export function isSpeakerEffectivelyMuted({ defaultEnableAudio, defaultSpeakerActive, autoStart, speakerMuted, storedMute, }) {
5
+ if (!defaultEnableAudio)
6
+ return true;
7
+ if (speakerMuted)
8
+ return true;
9
+ if (storedMute === true)
10
+ return true;
11
+ if (storedMute === false)
12
+ return false;
13
+ return getMuteSpeakerFallback(defaultEnableAudio, defaultSpeakerActive, autoStart);
14
+ }
15
+ export function shouldPlayTtsAudio({ text, preview = false, ...muteOptions }) {
16
+ return !!(text &&
17
+ text.trim() &&
18
+ !preview &&
19
+ !isSpeakerEffectivelyMuted(muteOptions));
20
+ }
21
+ //# sourceMappingURL=muteSpeaker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"muteSpeaker.js","sourceRoot":"","sources":["../../../src/helpers/tts/muteSpeaker.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,sBAAsB,CACpC,kBAA2B,EAC3B,oBAA6B,EAC7B,SAAkB;IAElB,OAAO,CAAC,kBAAkB,IAAI,CAAC,oBAAoB,IAAI,SAAS,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,EACxC,kBAAkB,EAClB,oBAAoB,EACpB,SAAS,EACT,YAAY,EACZ,UAAU,GACS;IACnB,IAAI,CAAC,kBAAkB;QAAE,OAAO,IAAI,CAAC;IACrC,IAAI,YAAY;QAAE,OAAO,IAAI,CAAC;IAC9B,IAAI,UAAU,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACrC,IAAI,UAAU,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IACvC,OAAO,sBAAsB,CAC3B,kBAAkB,EAClB,oBAAoB,EACpB,SAAS,CACV,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,EACjC,IAAI,EACJ,OAAO,GAAG,KAAK,EACf,GAAG,WAAW,EAC4C;IAC1D,OAAO,CAAC,CAAC,CACP,IAAI;QACJ,IAAI,CAAC,IAAI,EAAE;QACX,CAAC,OAAO;QACR,CAAC,yBAAyB,CAAC,WAAW,CAAC,CACxC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { type MouseEvent, type PointerEvent, type RefCallback } from 'react';
2
+ export declare function usePressTooltip(defaultOpen?: boolean): {
3
+ open: boolean;
4
+ setOpen: import("react").Dispatch<import("react").SetStateAction<boolean>>;
5
+ anchorRef: RefCallback<HTMLElement>;
6
+ pressTriggerProps: {
7
+ readonly onPointerDown: (e: PointerEvent) => void;
8
+ readonly onClick: (e: MouseEvent | PointerEvent) => void;
9
+ };
10
+ positionerProps: {
11
+ anchor: import("react").MutableRefObject<HTMLElement | null>;
12
+ positionMethod: "fixed";
13
+ };
14
+ tooltipProps: {
15
+ readonly open: boolean;
16
+ readonly onOpenChange: import("react").Dispatch<import("react").SetStateAction<boolean>>;
17
+ };
18
+ };
@@ -0,0 +1,35 @@
1
+ import { useCallback, useRef, useState, } from 'react';
2
+ export function usePressTooltip(defaultOpen = false) {
3
+ const [open, setOpen] = useState(defaultOpen);
4
+ const anchorRef = useRef(null);
5
+ const toggleOpen = useCallback((e) => {
6
+ e.stopPropagation();
7
+ setOpen(prev => !prev);
8
+ }, []);
9
+ const setAnchorRef = useCallback(node => {
10
+ anchorRef.current = node;
11
+ }, []);
12
+ const pressTriggerProps = {
13
+ onPointerDown: (e) => {
14
+ e.stopPropagation();
15
+ },
16
+ onClick: toggleOpen,
17
+ };
18
+ const positionerProps = {
19
+ anchor: anchorRef,
20
+ positionMethod: 'fixed',
21
+ };
22
+ const tooltipProps = {
23
+ open,
24
+ onOpenChange: setOpen,
25
+ };
26
+ return {
27
+ open,
28
+ setOpen,
29
+ anchorRef: setAnchorRef,
30
+ pressTriggerProps,
31
+ positionerProps,
32
+ tooltipProps,
33
+ };
34
+ }
35
+ //# sourceMappingURL=usePressTooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePressTooltip.js","sourceRoot":"","sources":["../../src/helpers/usePressTooltip.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,MAAM,EACN,QAAQ,GAIT,MAAM,OAAO,CAAC;AAaf,MAAM,UAAU,eAAe,CAAC,WAAW,GAAG,KAAK;IACjD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,MAAM,CAAqB,IAAI,CAAC,CAAC;IAEnD,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAA4B,EAAE,EAAE;QAC9D,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,YAAY,GAAG,WAAW,CAA2B,IAAI,CAAC,EAAE;QAChE,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC;IAC3B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,iBAAiB,GAAG;QACxB,aAAa,EAAE,CAAC,CAAe,EAAE,EAAE;YACjC,CAAC,CAAC,eAAe,EAAE,CAAC;QACtB,CAAC;QACD,OAAO,EAAE,UAAU;KACX,CAAC;IAEX,MAAM,eAAe,GAAG;QACtB,MAAM,EAAE,SAAS;QACjB,cAAc,EAAE,OAAgB;KACjC,CAAC;IAEF,MAAM,YAAY,GAAG;QACnB,IAAI;QACJ,YAAY,EAAE,OAAO;KACb,CAAC;IAEX,OAAO;QACL,IAAI;QACJ,OAAO;QACP,SAAS,EAAE,YAAY;QACvB,iBAAiB;QACjB,eAAe;QACf,YAAY;KACb,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import * as React from "react";
2
+ declare const FacebookIcon: (props: React.SVGProps<SVGSVGElement>) => JSX.Element;
3
+ export default FacebookIcon;