@memori.ai/memori-react 9.0.0-alpha.23 → 9.0.0-alpha.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +300 -1100
- package/dist/components/AgeVerificationModal/AgeVerificationModal.js +1 -3
- package/dist/components/AgeVerificationModal/AgeVerificationModal.js.map +1 -1
- package/dist/components/Auth/Auth.js +1 -3
- package/dist/components/Auth/Auth.js.map +1 -1
- package/dist/components/Chat/Chat.css +10 -1
- package/dist/components/Chat/Chat.js +1 -3
- package/dist/components/Chat/Chat.js.map +1 -1
- package/dist/components/ChatBubble/ChatBubble.css +103 -5
- package/dist/components/ChatBubble/ChatBubble.js +48 -8
- package/dist/components/ChatBubble/ChatBubble.js.map +1 -1
- package/dist/components/ChatHistoryDrawer/ChatHistory.js +1 -3
- package/dist/components/ChatHistoryDrawer/ChatHistory.js.map +1 -1
- package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.css +33 -10
- package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.js +2 -4
- package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.js.map +1 -1
- package/dist/components/ChatInputs/ChatInputs.css +17 -52
- package/dist/components/ChatInputs/ChatInputs.js +1 -3
- package/dist/components/ChatInputs/ChatInputs.js.map +1 -1
- package/dist/components/ContentPreviewModal/ContentPreviewModal.css +3 -3
- package/dist/components/ContentPreviewModal/ContentPreviewModal.js +1 -3
- package/dist/components/ContentPreviewModal/ContentPreviewModal.js.map +1 -1
- package/dist/components/DateSelector/DateSelector.css +66 -3
- package/dist/components/DateSelector/DateSelector.js +5 -1
- package/dist/components/DateSelector/DateSelector.js.map +1 -1
- package/dist/components/ExpertsDrawer/ExpertsDrawer.js +1 -3
- package/dist/components/ExpertsDrawer/ExpertsDrawer.js.map +1 -1
- package/dist/components/FilePreview/FilePreview.css +94 -220
- package/dist/components/FilePreview/FilePreview.js +25 -71
- package/dist/components/FilePreview/FilePreview.js.map +1 -1
- package/dist/components/IconButton/IconButton.css +2 -11
- package/dist/components/KnownFacts/KnownFacts.css +3 -4
- package/dist/components/KnownFacts/KnownFacts.js +3 -5
- package/dist/components/KnownFacts/KnownFacts.js.map +1 -1
- package/dist/components/LoginDrawer/LoginDrawer.css +3 -7
- package/dist/components/LoginDrawer/LoginDrawer.js +51 -9
- package/dist/components/LoginDrawer/LoginDrawer.js.map +1 -1
- package/dist/components/MediaWidget/MediaItemWidget.css +77 -57
- package/dist/components/MediaWidget/MediaItemWidget.js +4 -4
- package/dist/components/MediaWidget/MediaItemWidget.js.map +1 -1
- package/dist/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +1 -1
- package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +2 -5
- package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -1
- package/dist/components/MemoriWidget/MemoriWidget.css +0 -55
- package/dist/components/MemoriWidget/MemoriWidget.js +115 -117
- package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
- package/dist/components/MobileSessionPanel/MobileSessionPanel.css +20 -0
- package/dist/components/MobileSessionPanel/MobileSessionPanel.js +77 -117
- package/dist/components/MobileSessionPanel/MobileSessionPanel.js.map +1 -1
- package/dist/components/PositionPopover/PositionPopover.css +1 -1
- package/dist/components/SettingsDrawer/SettingsDrawer.js +1 -3
- package/dist/components/SettingsDrawer/SettingsDrawer.js.map +1 -1
- package/dist/components/StartPanel/StartPanel.css +12 -1
- package/dist/components/StartPanel/StartPanel.js +30 -7
- package/dist/components/StartPanel/StartPanel.js.map +1 -1
- package/dist/components/UploadButton/UploadButton.css +7 -7
- package/dist/components/UploadButton/UploadButton.js +3 -0
- package/dist/components/UploadButton/UploadButton.js.map +1 -1
- package/dist/components/UploadButton/UploadDocuments/UploadDocuments.js +15 -5
- package/dist/components/UploadButton/UploadDocuments/UploadDocuments.js.map +1 -1
- package/dist/components/UploadButton/UploadImages/UploadImages.js +1 -3
- package/dist/components/UploadButton/UploadImages/UploadImages.js.map +1 -1
- package/dist/components/WhyThisAnswer/WhyThisAnswer.js +1 -3
- package/dist/components/WhyThisAnswer/WhyThisAnswer.js.map +1 -1
- package/dist/components/layouts/HiddenChat.js +9 -1
- package/dist/components/layouts/HiddenChat.js.map +1 -1
- package/dist/components/layouts/WebsiteAssistant/WebsiteAssistant.js +84 -5
- package/dist/components/layouts/WebsiteAssistant/WebsiteAssistant.js.map +1 -1
- package/dist/components/layouts/WebsiteAssistant/website-assistant.css +36 -12
- package/dist/components/layouts/fullpage.css +1 -0
- package/dist/components/layouts/hidden-chat.css +29 -5
- package/dist/helpers/constants.d.ts +3 -2
- package/dist/helpers/constants.js +19 -20
- package/dist/helpers/constants.js.map +1 -1
- package/dist/helpers/error.js +2 -1
- package/dist/helpers/error.js.map +1 -1
- package/dist/helpers/positionPopover.d.ts +1 -0
- package/dist/helpers/positionPopover.js +7 -0
- package/dist/helpers/positionPopover.js.map +1 -1
- package/dist/helpers/usePressTooltip.d.ts +6 -1
- package/dist/helpers/usePressTooltip.js +16 -1
- package/dist/helpers/usePressTooltip.js.map +1 -1
- package/dist/helpers/utils.d.ts +2 -1
- package/dist/helpers/utils.js +7 -1
- package/dist/helpers/utils.js.map +1 -1
- package/dist/locales/de.json +8 -2
- package/dist/locales/en.json +6 -3
- package/dist/locales/es.json +6 -3
- package/dist/locales/fr.json +6 -3
- package/dist/locales/it.json +6 -3
- package/dist/styles.css +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/esm/components/AgeVerificationModal/AgeVerificationModal.js +1 -3
- package/esm/components/AgeVerificationModal/AgeVerificationModal.js.map +1 -1
- package/esm/components/Auth/Auth.js +1 -3
- package/esm/components/Auth/Auth.js.map +1 -1
- package/esm/components/Chat/Chat.css +10 -1
- package/esm/components/Chat/Chat.js +1 -3
- package/esm/components/Chat/Chat.js.map +1 -1
- package/esm/components/ChatBubble/ChatBubble.css +103 -5
- package/esm/components/ChatBubble/ChatBubble.js +48 -8
- package/esm/components/ChatBubble/ChatBubble.js.map +1 -1
- package/esm/components/ChatHistoryDrawer/ChatHistory.js +1 -3
- package/esm/components/ChatHistoryDrawer/ChatHistory.js.map +1 -1
- package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.css +33 -10
- package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.js +2 -4
- package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.js.map +1 -1
- package/esm/components/ChatInputs/ChatInputs.css +17 -52
- package/esm/components/ChatInputs/ChatInputs.js +1 -3
- package/esm/components/ChatInputs/ChatInputs.js.map +1 -1
- package/esm/components/ContentPreviewModal/ContentPreviewModal.css +3 -3
- package/esm/components/ContentPreviewModal/ContentPreviewModal.js +1 -3
- package/esm/components/ContentPreviewModal/ContentPreviewModal.js.map +1 -1
- package/esm/components/DateSelector/DateSelector.css +66 -3
- package/esm/components/DateSelector/DateSelector.js +5 -1
- package/esm/components/DateSelector/DateSelector.js.map +1 -1
- package/esm/components/ExpertsDrawer/ExpertsDrawer.js +1 -3
- package/esm/components/ExpertsDrawer/ExpertsDrawer.js.map +1 -1
- package/esm/components/FilePreview/FilePreview.css +94 -220
- package/esm/components/FilePreview/FilePreview.js +25 -71
- package/esm/components/FilePreview/FilePreview.js.map +1 -1
- package/esm/components/IconButton/IconButton.css +2 -11
- package/esm/components/KnownFacts/KnownFacts.css +3 -4
- package/esm/components/KnownFacts/KnownFacts.js +3 -5
- package/esm/components/KnownFacts/KnownFacts.js.map +1 -1
- package/esm/components/LoginDrawer/LoginDrawer.css +3 -7
- package/esm/components/LoginDrawer/LoginDrawer.js +51 -9
- package/esm/components/LoginDrawer/LoginDrawer.js.map +1 -1
- package/esm/components/MediaWidget/MediaItemWidget.css +77 -57
- package/esm/components/MediaWidget/MediaItemWidget.js +5 -5
- package/esm/components/MediaWidget/MediaItemWidget.js.map +1 -1
- package/esm/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +1 -1
- package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +2 -5
- package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -1
- package/esm/components/MemoriWidget/MemoriWidget.css +0 -55
- package/esm/components/MemoriWidget/MemoriWidget.js +115 -117
- package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
- package/esm/components/MobileSessionPanel/MobileSessionPanel.css +20 -0
- package/esm/components/MobileSessionPanel/MobileSessionPanel.js +78 -118
- package/esm/components/MobileSessionPanel/MobileSessionPanel.js.map +1 -1
- package/esm/components/PositionPopover/PositionPopover.css +1 -1
- package/esm/components/SettingsDrawer/SettingsDrawer.js +1 -3
- package/esm/components/SettingsDrawer/SettingsDrawer.js.map +1 -1
- package/esm/components/StartPanel/StartPanel.css +12 -1
- package/esm/components/StartPanel/StartPanel.js +30 -7
- package/esm/components/StartPanel/StartPanel.js.map +1 -1
- package/esm/components/UploadButton/UploadButton.css +7 -7
- package/esm/components/UploadButton/UploadButton.js +4 -1
- package/esm/components/UploadButton/UploadButton.js.map +1 -1
- package/esm/components/UploadButton/UploadDocuments/UploadDocuments.js +17 -7
- package/esm/components/UploadButton/UploadDocuments/UploadDocuments.js.map +1 -1
- package/esm/components/UploadButton/UploadImages/UploadImages.js +1 -3
- package/esm/components/UploadButton/UploadImages/UploadImages.js.map +1 -1
- package/esm/components/WhyThisAnswer/WhyThisAnswer.js +1 -3
- package/esm/components/WhyThisAnswer/WhyThisAnswer.js.map +1 -1
- package/esm/components/layouts/HiddenChat.js +9 -1
- package/esm/components/layouts/HiddenChat.js.map +1 -1
- package/esm/components/layouts/WebsiteAssistant/WebsiteAssistant.js +85 -6
- package/esm/components/layouts/WebsiteAssistant/WebsiteAssistant.js.map +1 -1
- package/esm/components/layouts/WebsiteAssistant/website-assistant.css +36 -12
- package/esm/components/layouts/fullpage.css +1 -0
- package/esm/components/layouts/hidden-chat.css +29 -5
- package/esm/helpers/constants.d.ts +3 -2
- package/esm/helpers/constants.js +18 -19
- package/esm/helpers/constants.js.map +1 -1
- package/esm/helpers/error.js +2 -1
- package/esm/helpers/error.js.map +1 -1
- package/esm/helpers/positionPopover.d.ts +1 -0
- package/esm/helpers/positionPopover.js +6 -0
- package/esm/helpers/positionPopover.js.map +1 -1
- package/esm/helpers/usePressTooltip.d.ts +6 -1
- package/esm/helpers/usePressTooltip.js +17 -2
- package/esm/helpers/usePressTooltip.js.map +1 -1
- package/esm/helpers/utils.d.ts +2 -1
- package/esm/helpers/utils.js +6 -1
- package/esm/helpers/utils.js.map +1 -1
- package/esm/locales/de.json +8 -2
- package/esm/locales/en.json +6 -3
- package/esm/locales/es.json +6 -3
- package/esm/locales/fr.json +6 -3
- package/esm/locales/it.json +6 -3
- package/esm/styles.css +1 -1
- package/esm/version.d.ts +1 -1
- package/esm/version.js +1 -1
- package/package.json +4 -46
- package/src/components/AgeVerificationModal/AgeVerificationModal.tsx +0 -3
- package/src/components/Auth/Auth.tsx +0 -3
- package/src/components/Auth/__snapshots__/Auth.test.tsx.snap +1 -0
- package/src/components/BlockedMemoriBadge/__snapshots__/BlockedMemoriBadge.test.tsx.snap +5 -0
- package/src/components/Chat/Chat.css +10 -1
- package/src/components/Chat/Chat.tsx +0 -3
- package/src/components/Chat/__snapshots__/Chat.test.tsx.snap +1735 -1765
- package/src/components/ChatBubble/ChatBubble.css +103 -5
- package/src/components/ChatBubble/ChatBubble.test.tsx +33 -0
- package/src/components/ChatBubble/ChatBubble.tsx +524 -273
- package/src/components/ChatBubble/__snapshots__/ChatBubble.test.tsx.snap +655 -684
- package/src/components/ChatHistoryDrawer/ChatHistory.tsx +0 -3
- package/src/components/ChatHistoryDrawer/ChatResumeDrawer.css +33 -10
- package/src/components/ChatHistoryDrawer/ChatResumeDrawer.tsx +3 -6
- package/src/components/ChatInputs/ChatInputs.css +17 -52
- package/src/components/ChatInputs/ChatInputs.tsx +2 -4
- package/src/components/CompletionProviderStatus/__snapshots__/CompletionProviderStatus.test.tsx.snap +3 -0
- package/src/components/ContentPreviewModal/ContentPreviewModal.css +3 -3
- package/src/components/ContentPreviewModal/ContentPreviewModal.tsx +0 -3
- package/src/components/DateSelector/DateSelector.css +66 -3
- package/src/components/DateSelector/DateSelector.test.tsx +33 -4
- package/src/components/DateSelector/DateSelector.tsx +37 -11
- package/src/components/ExpertsDrawer/ExpertsDrawer.tsx +0 -3
- package/src/components/FeedbackButtons/__snapshots__/FeedbackButtons.test.tsx.snap +2 -1
- package/src/components/FilePreview/FilePreview.css +94 -220
- package/src/components/FilePreview/FilePreview.tsx +77 -124
- package/src/components/FilePreview/__snapshots__/FilePreview.test.tsx.snap +33 -81
- package/src/components/Header/ChatConsumptionDropdown.test.tsx +53 -86
- package/src/components/Header/__snapshots__/Header.test.tsx.snap +60 -44
- package/src/components/IconButton/IconButton.css +2 -11
- package/src/components/KnownFacts/KnownFacts.css +3 -4
- package/src/components/KnownFacts/KnownFacts.tsx +0 -5
- package/src/components/KnownFacts/__snapshots__/KnownFacts.test.tsx.snap +2 -6
- package/src/components/LoginDrawer/LoginDrawer.css +3 -7
- package/src/components/LoginDrawer/LoginDrawer.tsx +101 -54
- package/src/components/LoginDrawer/__snapshots__/LoginDrawer.test.tsx.snap +11 -33
- package/src/components/MediaWidget/MediaItemWidget.css +77 -57
- package/src/components/MediaWidget/MediaItemWidget.test.tsx +33 -0
- package/src/components/MediaWidget/MediaItemWidget.tsx +6 -12
- package/src/components/MediaWidget/__snapshots__/MediaItemWidget.test.tsx.snap +2 -0
- package/src/components/MediaWidget/__snapshots__/MediaWidget.test.tsx.snap +1 -1
- package/src/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +1 -1
- package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.tsx +0 -5
- package/src/components/MemoriWidget/MemoriUIProvider.contract.test.tsx +25 -7
- package/src/components/MemoriWidget/MemoriWidget.css +0 -55
- package/src/components/MemoriWidget/MemoriWidget.tsx +18 -12
- package/src/components/MobileSessionPanel/MobileSessionPanel.css +20 -0
- package/src/components/MobileSessionPanel/MobileSessionPanel.tsx +29 -68
- package/src/components/PositionPopover/PositionPopover.css +1 -1
- package/src/components/SettingsDrawer/SettingsDrawer.tsx +0 -3
- package/src/components/ShareButton/__snapshots__/ShareButton.test.tsx.snap +9 -9
- package/src/components/Snippet/__snapshots__/Snippet.test.tsx.snap +8 -0
- package/src/components/StartPanel/StartPanel.css +12 -1
- package/src/components/StartPanel/StartPanel.test.tsx +57 -0
- package/src/components/StartPanel/StartPanel.tsx +41 -4
- package/src/components/StartPanel/__snapshots__/StartPanel.test.tsx.snap +41 -6
- package/src/components/UploadButton/UploadButton.css +7 -7
- package/src/components/UploadButton/UploadButton.tsx +4 -0
- package/src/components/UploadButton/UploadDocuments/UploadDocuments.tsx +21 -8
- package/src/components/UploadButton/UploadImages/UploadImages.tsx +0 -3
- package/src/components/UploadButton/__snapshots__/UploadButton.test.tsx.snap +10 -12
- package/src/components/WhyThisAnswer/WhyThisAnswer.tsx +0 -3
- package/src/components/WhyThisAnswer/__snapshots__/WhyThisAnswer.test.tsx.snap +3 -9
- package/src/components/layouts/HiddenChat.tsx +9 -1
- package/src/components/layouts/WebsiteAssistant/WebsiteAssistant.tsx +103 -6
- package/src/components/layouts/WebsiteAssistant/__snapshots__/WebsiteAssistant.test.tsx.snap +63 -57
- package/src/components/layouts/WebsiteAssistant/website-assistant.css +36 -12
- package/src/components/layouts/__snapshots__/Chat.test.tsx.snap +7 -4
- package/src/components/layouts/__snapshots__/FullPage.test.tsx.snap +12 -8
- package/src/components/layouts/__snapshots__/HiddenChat.test.tsx.snap +7 -4
- package/src/components/layouts/__snapshots__/Totem.test.tsx.snap +10 -5
- package/src/components/layouts/__snapshots__/ZoomedFullBody.test.tsx.snap +6 -4
- package/src/components/layouts/fullpage.css +1 -0
- package/src/components/layouts/hidden-chat.css +29 -5
- package/src/components/layouts/layouts.stories.tsx +2 -2
- package/src/helpers/constants.ts +21 -20
- package/src/helpers/error.ts +2 -1
- package/src/helpers/positionPopover.test.ts +15 -0
- package/src/helpers/positionPopover.ts +16 -0
- package/src/helpers/usePressTooltip.test.ts +30 -0
- package/src/helpers/usePressTooltip.ts +31 -1
- package/src/helpers/utils.test.ts +14 -4
- package/src/helpers/utils.ts +6 -1
- package/src/index.tsx +1 -1
- package/src/locales/de.json +8 -2
- package/src/locales/en.json +6 -3
- package/src/locales/es.json +6 -3
- package/src/locales/fr.json +6 -3
- package/src/locales/it.json +6 -3
- package/src/styles.brandTokens.test.js +52 -0
- package/src/styles.css +27 -2
- package/src/version.ts +1 -1
- package/dist/context/widgetSurfaceContext.d.ts +0 -3
- package/dist/context/widgetSurfaceContext.js +0 -11
- package/dist/context/widgetSurfaceContext.js.map +0 -1
- package/esm/context/widgetSurfaceContext.d.ts +0 -3
- package/esm/context/widgetSurfaceContext.js +0 -7
- package/esm/context/widgetSurfaceContext.js.map +0 -1
- package/src/context/widgetSurfaceContext.tsx +0 -14
|
@@ -10,7 +10,7 @@ exports[`renders FullPage layout unchanged 1`] = `
|
|
|
10
10
|
data-memori-name="Memori"
|
|
11
11
|
data-memori-secondary-id="25ced51c-3520-41af-8bbe-222d861b8e32"
|
|
12
12
|
data-theme="light"
|
|
13
|
-
style="height: 100vh;"
|
|
13
|
+
style="height: 100vh; --memori-z-index-base: 0;"
|
|
14
14
|
>
|
|
15
15
|
<div
|
|
16
16
|
aria-atomic="false"
|
|
@@ -20,11 +20,11 @@ exports[`renders FullPage layout unchanged 1`] = `
|
|
|
20
20
|
class="memori-alert-viewport memori-alert-viewport--top-end"
|
|
21
21
|
data-theme="light"
|
|
22
22
|
role="region"
|
|
23
|
-
style="z-index: 10002;"
|
|
24
23
|
tabindex="-1"
|
|
25
24
|
/>
|
|
26
25
|
<div
|
|
27
26
|
class="memori-widget__surface"
|
|
27
|
+
style="--memori-z-index-base: 0;"
|
|
28
28
|
>
|
|
29
29
|
<style>
|
|
30
30
|
@layer memori.overrides {
|
|
@@ -92,7 +92,7 @@ exports[`renders FullPage layout unchanged 1`] = `
|
|
|
92
92
|
>
|
|
93
93
|
<svg
|
|
94
94
|
aria-hidden="true"
|
|
95
|
-
class="lucide lucide-volume2"
|
|
95
|
+
class="lucide lucide-volume2 lucide-volume-2"
|
|
96
96
|
fill="none"
|
|
97
97
|
height="20"
|
|
98
98
|
stroke="currentColor"
|
|
@@ -143,7 +143,7 @@ exports[`renders FullPage layout unchanged 1`] = `
|
|
|
143
143
|
>
|
|
144
144
|
<svg
|
|
145
145
|
aria-hidden="true"
|
|
146
|
-
class="lucide lucide-share2"
|
|
146
|
+
class="lucide lucide-share2 lucide-share-2"
|
|
147
147
|
fill="none"
|
|
148
148
|
height="24"
|
|
149
149
|
stroke="currentColor"
|
|
@@ -456,6 +456,7 @@ exports[`renders FullPage layout unchanged 1`] = `
|
|
|
456
456
|
class="memori--settings-section__icon-box memori--settings-section__icon-box--neutral"
|
|
457
457
|
>
|
|
458
458
|
<svg
|
|
459
|
+
aria-hidden="true"
|
|
459
460
|
class="lucide lucide-eye memori--settings-section__icon"
|
|
460
461
|
fill="none"
|
|
461
462
|
height="24"
|
|
@@ -512,6 +513,7 @@ exports[`renders FullPage layout unchanged 1`] = `
|
|
|
512
513
|
class="memori-button__content"
|
|
513
514
|
>
|
|
514
515
|
<svg
|
|
516
|
+
aria-hidden="true"
|
|
515
517
|
class="lucide lucide-info memori--settings-section__inline-info-icon"
|
|
516
518
|
fill="none"
|
|
517
519
|
height="24"
|
|
@@ -745,7 +747,7 @@ exports[`renders FullPage layout with root css properties unchanged 1`] = `
|
|
|
745
747
|
data-memori-name="Memori"
|
|
746
748
|
data-memori-secondary-id="25ced51c-3520-41af-8bbe-222d861b8e32"
|
|
747
749
|
data-theme="light"
|
|
748
|
-
style="height: 100vh;"
|
|
750
|
+
style="height: 100vh; --memori-z-index-base: 0;"
|
|
749
751
|
>
|
|
750
752
|
<div
|
|
751
753
|
aria-atomic="false"
|
|
@@ -755,11 +757,11 @@ exports[`renders FullPage layout with root css properties unchanged 1`] = `
|
|
|
755
757
|
class="memori-alert-viewport memori-alert-viewport--top-end"
|
|
756
758
|
data-theme="light"
|
|
757
759
|
role="region"
|
|
758
|
-
style="z-index: 10002;"
|
|
759
760
|
tabindex="-1"
|
|
760
761
|
/>
|
|
761
762
|
<div
|
|
762
763
|
class="memori-widget__surface"
|
|
764
|
+
style="--memori-z-index-base: 0;"
|
|
763
765
|
>
|
|
764
766
|
<style>
|
|
765
767
|
@layer memori.overrides {
|
|
@@ -827,7 +829,7 @@ exports[`renders FullPage layout with root css properties unchanged 1`] = `
|
|
|
827
829
|
>
|
|
828
830
|
<svg
|
|
829
831
|
aria-hidden="true"
|
|
830
|
-
class="lucide lucide-volume2"
|
|
832
|
+
class="lucide lucide-volume2 lucide-volume-2"
|
|
831
833
|
fill="none"
|
|
832
834
|
height="20"
|
|
833
835
|
stroke="currentColor"
|
|
@@ -878,7 +880,7 @@ exports[`renders FullPage layout with root css properties unchanged 1`] = `
|
|
|
878
880
|
>
|
|
879
881
|
<svg
|
|
880
882
|
aria-hidden="true"
|
|
881
|
-
class="lucide lucide-share2"
|
|
883
|
+
class="lucide lucide-share2 lucide-share-2"
|
|
882
884
|
fill="none"
|
|
883
885
|
height="24"
|
|
884
886
|
stroke="currentColor"
|
|
@@ -1191,6 +1193,7 @@ exports[`renders FullPage layout with root css properties unchanged 1`] = `
|
|
|
1191
1193
|
class="memori--settings-section__icon-box memori--settings-section__icon-box--neutral"
|
|
1192
1194
|
>
|
|
1193
1195
|
<svg
|
|
1196
|
+
aria-hidden="true"
|
|
1194
1197
|
class="lucide lucide-eye memori--settings-section__icon"
|
|
1195
1198
|
fill="none"
|
|
1196
1199
|
height="24"
|
|
@@ -1247,6 +1250,7 @@ exports[`renders FullPage layout with root css properties unchanged 1`] = `
|
|
|
1247
1250
|
class="memori-button__content"
|
|
1248
1251
|
>
|
|
1249
1252
|
<svg
|
|
1253
|
+
aria-hidden="true"
|
|
1250
1254
|
class="lucide lucide-info memori--settings-section__inline-info-icon"
|
|
1251
1255
|
fill="none"
|
|
1252
1256
|
height="24"
|
|
@@ -10,7 +10,7 @@ exports[`renders HIDDEN_CHAT layout unchanged 1`] = `
|
|
|
10
10
|
data-memori-name="Memori"
|
|
11
11
|
data-memori-secondary-id="25ced51c-3520-41af-8bbe-222d861b8e32"
|
|
12
12
|
data-theme="light"
|
|
13
|
-
style="height: 100vh;"
|
|
13
|
+
style="height: 100vh; --memori-z-index-base: 0;"
|
|
14
14
|
>
|
|
15
15
|
<div
|
|
16
16
|
aria-atomic="false"
|
|
@@ -20,11 +20,11 @@ exports[`renders HIDDEN_CHAT layout unchanged 1`] = `
|
|
|
20
20
|
class="memori-alert-viewport memori-alert-viewport--top-end"
|
|
21
21
|
data-theme="light"
|
|
22
22
|
role="region"
|
|
23
|
-
style="z-index: 10002;"
|
|
24
23
|
tabindex="-1"
|
|
25
24
|
/>
|
|
26
25
|
<div
|
|
27
26
|
class="memori-widget__surface"
|
|
27
|
+
style="--memori-z-index-base: 0;"
|
|
28
28
|
>
|
|
29
29
|
<input
|
|
30
30
|
class="memori-sidebar-toggle "
|
|
@@ -40,7 +40,7 @@ exports[`renders HIDDEN_CHAT layout unchanged 1`] = `
|
|
|
40
40
|
>
|
|
41
41
|
<svg
|
|
42
42
|
aria-label="expand"
|
|
43
|
-
class="lucide lucide-circle-
|
|
43
|
+
class="lucide lucide-circle-question-mark memori-icon"
|
|
44
44
|
fill="none"
|
|
45
45
|
height="24"
|
|
46
46
|
stroke="currentColor"
|
|
@@ -117,7 +117,7 @@ exports[`renders HIDDEN_CHAT layout unchanged 1`] = `
|
|
|
117
117
|
>
|
|
118
118
|
<svg
|
|
119
119
|
aria-hidden="true"
|
|
120
|
-
class="lucide lucide-volume2"
|
|
120
|
+
class="lucide lucide-volume2 lucide-volume-2"
|
|
121
121
|
fill="none"
|
|
122
122
|
height="20"
|
|
123
123
|
stroke="currentColor"
|
|
@@ -347,6 +347,7 @@ exports[`renders HIDDEN_CHAT layout unchanged 1`] = `
|
|
|
347
347
|
class="memori--settings-section__icon-box memori--settings-section__icon-box--neutral"
|
|
348
348
|
>
|
|
349
349
|
<svg
|
|
350
|
+
aria-hidden="true"
|
|
350
351
|
class="lucide lucide-eye memori--settings-section__icon"
|
|
351
352
|
fill="none"
|
|
352
353
|
height="24"
|
|
@@ -403,6 +404,7 @@ exports[`renders HIDDEN_CHAT layout unchanged 1`] = `
|
|
|
403
404
|
class="memori-button__content"
|
|
404
405
|
>
|
|
405
406
|
<svg
|
|
407
|
+
aria-hidden="true"
|
|
406
408
|
class="lucide lucide-info memori--settings-section__inline-info-icon"
|
|
407
409
|
fill="none"
|
|
408
410
|
height="24"
|
|
@@ -519,6 +521,7 @@ exports[`renders HIDDEN_CHAT layout unchanged 1`] = `
|
|
|
519
521
|
class="memori-button__content"
|
|
520
522
|
>
|
|
521
523
|
<svg
|
|
524
|
+
aria-hidden="true"
|
|
522
525
|
class="lucide lucide-send icon"
|
|
523
526
|
fill="none"
|
|
524
527
|
height="24"
|
|
@@ -10,7 +10,7 @@ exports[`renders Totem layout unchanged 1`] = `
|
|
|
10
10
|
data-memori-name="Memori"
|
|
11
11
|
data-memori-secondary-id="25ced51c-3520-41af-8bbe-222d861b8e32"
|
|
12
12
|
data-theme="light"
|
|
13
|
-
style="height: 100vh;"
|
|
13
|
+
style="height: 100vh; --memori-z-index-base: 0;"
|
|
14
14
|
>
|
|
15
15
|
<div
|
|
16
16
|
aria-atomic="false"
|
|
@@ -20,11 +20,11 @@ exports[`renders Totem layout unchanged 1`] = `
|
|
|
20
20
|
class="memori-alert-viewport memori-alert-viewport--top-end"
|
|
21
21
|
data-theme="light"
|
|
22
22
|
role="region"
|
|
23
|
-
style="z-index: 10002;"
|
|
24
23
|
tabindex="-1"
|
|
25
24
|
/>
|
|
26
25
|
<div
|
|
27
26
|
class="memori-widget__surface"
|
|
27
|
+
style="--memori-z-index-base: 0;"
|
|
28
28
|
>
|
|
29
29
|
<style>
|
|
30
30
|
@layer memori.overrides {
|
|
@@ -225,7 +225,7 @@ exports[`renders Totem layout unchanged 1`] = `
|
|
|
225
225
|
>
|
|
226
226
|
<svg
|
|
227
227
|
aria-hidden="true"
|
|
228
|
-
class="lucide lucide-volume2"
|
|
228
|
+
class="lucide lucide-volume2 lucide-volume-2"
|
|
229
229
|
fill="none"
|
|
230
230
|
height="20"
|
|
231
231
|
stroke="currentColor"
|
|
@@ -276,7 +276,7 @@ exports[`renders Totem layout unchanged 1`] = `
|
|
|
276
276
|
>
|
|
277
277
|
<svg
|
|
278
278
|
aria-hidden="true"
|
|
279
|
-
class="lucide lucide-share2"
|
|
279
|
+
class="lucide lucide-share2 lucide-share-2"
|
|
280
280
|
fill="none"
|
|
281
281
|
height="24"
|
|
282
282
|
stroke="currentColor"
|
|
@@ -341,6 +341,7 @@ exports[`renders Totem layout unchanged 1`] = `
|
|
|
341
341
|
class="memori-button__icon"
|
|
342
342
|
>
|
|
343
343
|
<svg
|
|
344
|
+
aria-hidden="true"
|
|
344
345
|
class="lucide lucide-refresh-cw"
|
|
345
346
|
fill="none"
|
|
346
347
|
height="24"
|
|
@@ -391,6 +392,7 @@ exports[`renders Totem layout unchanged 1`] = `
|
|
|
391
392
|
class="memori-button__icon"
|
|
392
393
|
>
|
|
393
394
|
<svg
|
|
395
|
+
aria-hidden="true"
|
|
394
396
|
class="lucide lucide-settings"
|
|
395
397
|
fill="none"
|
|
396
398
|
height="24"
|
|
@@ -403,7 +405,7 @@ exports[`renders Totem layout unchanged 1`] = `
|
|
|
403
405
|
xmlns="http://www.w3.org/2000/svg"
|
|
404
406
|
>
|
|
405
407
|
<path
|
|
406
|
-
d="
|
|
408
|
+
d="M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915"
|
|
407
409
|
/>
|
|
408
410
|
<circle
|
|
409
411
|
cx="12"
|
|
@@ -452,6 +454,7 @@ exports[`renders Totem layout unchanged 1`] = `
|
|
|
452
454
|
class="memori-button__icon"
|
|
453
455
|
>
|
|
454
456
|
<svg
|
|
457
|
+
aria-hidden="true"
|
|
455
458
|
class="lucide lucide-user"
|
|
456
459
|
fill="none"
|
|
457
460
|
height="24"
|
|
@@ -732,6 +735,7 @@ exports[`renders Totem layout unchanged 1`] = `
|
|
|
732
735
|
class="memori--settings-section__icon-box memori--settings-section__icon-box--neutral"
|
|
733
736
|
>
|
|
734
737
|
<svg
|
|
738
|
+
aria-hidden="true"
|
|
735
739
|
class="lucide lucide-eye memori--settings-section__icon"
|
|
736
740
|
fill="none"
|
|
737
741
|
height="24"
|
|
@@ -788,6 +792,7 @@ exports[`renders Totem layout unchanged 1`] = `
|
|
|
788
792
|
class="memori-button__content"
|
|
789
793
|
>
|
|
790
794
|
<svg
|
|
795
|
+
aria-hidden="true"
|
|
791
796
|
class="lucide lucide-info memori--settings-section__inline-info-icon"
|
|
792
797
|
fill="none"
|
|
793
798
|
height="24"
|
|
@@ -10,7 +10,7 @@ exports[`renders ZOOMED_FULL_BODY layout unchanged 1`] = `
|
|
|
10
10
|
data-memori-name="Memori"
|
|
11
11
|
data-memori-secondary-id="25ced51c-3520-41af-8bbe-222d861b8e32"
|
|
12
12
|
data-theme="light"
|
|
13
|
-
style="height: 100vh;"
|
|
13
|
+
style="height: 100vh; --memori-z-index-base: 0;"
|
|
14
14
|
>
|
|
15
15
|
<div
|
|
16
16
|
aria-atomic="false"
|
|
@@ -20,11 +20,11 @@ exports[`renders ZOOMED_FULL_BODY layout unchanged 1`] = `
|
|
|
20
20
|
class="memori-alert-viewport memori-alert-viewport--top-end"
|
|
21
21
|
data-theme="light"
|
|
22
22
|
role="region"
|
|
23
|
-
style="z-index: 10002;"
|
|
24
23
|
tabindex="-1"
|
|
25
24
|
/>
|
|
26
25
|
<div
|
|
27
26
|
class="memori-widget__surface"
|
|
27
|
+
style="--memori-z-index-base: 0;"
|
|
28
28
|
>
|
|
29
29
|
<style>
|
|
30
30
|
@layer memori.overrides {
|
|
@@ -92,7 +92,7 @@ exports[`renders ZOOMED_FULL_BODY layout unchanged 1`] = `
|
|
|
92
92
|
>
|
|
93
93
|
<svg
|
|
94
94
|
aria-hidden="true"
|
|
95
|
-
class="lucide lucide-volume2"
|
|
95
|
+
class="lucide lucide-volume2 lucide-volume-2"
|
|
96
96
|
fill="none"
|
|
97
97
|
height="20"
|
|
98
98
|
stroke="currentColor"
|
|
@@ -143,7 +143,7 @@ exports[`renders ZOOMED_FULL_BODY layout unchanged 1`] = `
|
|
|
143
143
|
>
|
|
144
144
|
<svg
|
|
145
145
|
aria-hidden="true"
|
|
146
|
-
class="lucide lucide-share2"
|
|
146
|
+
class="lucide lucide-share2 lucide-share-2"
|
|
147
147
|
fill="none"
|
|
148
148
|
height="24"
|
|
149
149
|
stroke="currentColor"
|
|
@@ -456,6 +456,7 @@ exports[`renders ZOOMED_FULL_BODY layout unchanged 1`] = `
|
|
|
456
456
|
class="memori--settings-section__icon-box memori--settings-section__icon-box--neutral"
|
|
457
457
|
>
|
|
458
458
|
<svg
|
|
459
|
+
aria-hidden="true"
|
|
459
460
|
class="lucide lucide-eye memori--settings-section__icon"
|
|
460
461
|
fill="none"
|
|
461
462
|
height="24"
|
|
@@ -512,6 +513,7 @@ exports[`renders ZOOMED_FULL_BODY layout unchanged 1`] = `
|
|
|
512
513
|
class="memori-button__content"
|
|
513
514
|
>
|
|
514
515
|
<svg
|
|
516
|
+
aria-hidden="true"
|
|
515
517
|
class="lucide lucide-info memori--settings-section__inline-info-icon"
|
|
516
518
|
fill="none"
|
|
517
519
|
height="24"
|
|
@@ -190,12 +190,17 @@
|
|
|
190
190
|
flex-shrink: 0;
|
|
191
191
|
}
|
|
192
192
|
|
|
193
|
-
/* Fullscreen styles */
|
|
194
|
-
.memori-sidebar-fullscreen
|
|
193
|
+
/* Fullscreen styles — cover the full window width (browser FS or class toggle) */
|
|
194
|
+
.memori-sidebar-fullscreen,
|
|
195
|
+
.memori-sidebar:fullscreen,
|
|
196
|
+
.memori-sidebar:-webkit-full-screen {
|
|
197
|
+
top: 0 !important;
|
|
195
198
|
right: 0 !important;
|
|
199
|
+
left: 0 !important;
|
|
196
200
|
width: 100% !important;
|
|
197
|
-
max-width:
|
|
201
|
+
max-width: none !important;
|
|
198
202
|
height: 100% !important;
|
|
203
|
+
border-radius: 0;
|
|
199
204
|
box-shadow: none;
|
|
200
205
|
}
|
|
201
206
|
|
|
@@ -287,6 +292,19 @@
|
|
|
287
292
|
right: 55%;
|
|
288
293
|
}
|
|
289
294
|
|
|
295
|
+
/* Fullscreen must win over the artifact split offset */
|
|
296
|
+
.memori-sidebar-toggle-artifact:checked
|
|
297
|
+
~ .memori-sidebar-container
|
|
298
|
+
.memori-sidebar.memori-sidebar-fullscreen,
|
|
299
|
+
.memori-sidebar-toggle-artifact:checked
|
|
300
|
+
~ .memori-sidebar-container
|
|
301
|
+
.memori-sidebar:fullscreen,
|
|
302
|
+
.memori-sidebar-toggle-artifact:checked
|
|
303
|
+
~ .memori-sidebar-container
|
|
304
|
+
.memori-sidebar:-webkit-full-screen {
|
|
305
|
+
right: 0 !important;
|
|
306
|
+
}
|
|
307
|
+
|
|
290
308
|
.memori-sidebar-toggle:checked ~ .memori-sidebar-container .memori-open-label {
|
|
291
309
|
opacity: 0;
|
|
292
310
|
pointer-events: none;
|
|
@@ -554,16 +572,22 @@
|
|
|
554
572
|
}
|
|
555
573
|
|
|
556
574
|
/* Mobile fullscreen styles */
|
|
557
|
-
.memori-sidebar-fullscreen
|
|
575
|
+
.memori-sidebar-fullscreen,
|
|
576
|
+
.memori-sidebar:fullscreen,
|
|
577
|
+
.memori-sidebar:-webkit-full-screen {
|
|
558
578
|
display: block;
|
|
559
579
|
}
|
|
560
580
|
|
|
561
|
-
.memori-sidebar-container .memori-sidebar-fullscreen
|
|
581
|
+
.memori-sidebar-container .memori-sidebar-fullscreen,
|
|
582
|
+
.memori-sidebar-container .memori-sidebar:fullscreen,
|
|
583
|
+
.memori-sidebar-container .memori-sidebar:-webkit-full-screen {
|
|
562
584
|
position: fixed;
|
|
563
585
|
top: 0;
|
|
586
|
+
right: 0 !important;
|
|
564
587
|
left: 0;
|
|
565
588
|
display: block;
|
|
566
589
|
width: 100% !important;
|
|
590
|
+
max-width: none !important;
|
|
567
591
|
height: 100% !important;
|
|
568
592
|
}
|
|
569
593
|
}
|
|
@@ -94,10 +94,10 @@ export const WebsiteAssistant: Story = {
|
|
|
94
94
|
},
|
|
95
95
|
};
|
|
96
96
|
|
|
97
|
-
export const
|
|
97
|
+
export const WebsiteAssistantWith3DAvatar: Story = {
|
|
98
98
|
args: {
|
|
99
99
|
...WebsiteAssistant.args,
|
|
100
|
-
avatar3dHidden:
|
|
100
|
+
avatar3dHidden: false,
|
|
101
101
|
},
|
|
102
102
|
};
|
|
103
103
|
|
package/src/helpers/constants.ts
CHANGED
|
@@ -45,36 +45,37 @@ export const getGroupedChatLanguages = () => {
|
|
|
45
45
|
export const uiLanguages = ['en', 'it', 'fr', 'es', 'de'];
|
|
46
46
|
|
|
47
47
|
/** Extensions uploaded as original Office binaries (no text extraction) */
|
|
48
|
-
export const officeNativeExtensions = [
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
'.
|
|
53
|
-
'.
|
|
48
|
+
export const officeNativeExtensions = [] as const;
|
|
49
|
+
|
|
50
|
+
/** Extensions read as UTF-8 in the browser, without calling the conversion API */
|
|
51
|
+
export const localTextExtensions = [
|
|
52
|
+
'.txt',
|
|
53
|
+
'.csv',
|
|
54
|
+
'.tsv',
|
|
55
|
+
'.html',
|
|
56
|
+
'.xhtml',
|
|
57
|
+
'.htm',
|
|
58
|
+
'.xml',
|
|
59
|
+
'.json',
|
|
60
|
+
'.md',
|
|
61
|
+
'.log',
|
|
62
|
+
'.yml',
|
|
63
|
+
'.yaml',
|
|
54
64
|
] as const;
|
|
55
65
|
|
|
56
66
|
export const documentConversionExtensions = [
|
|
57
67
|
'.pdf',
|
|
68
|
+
'.docx',
|
|
58
69
|
'.docm',
|
|
70
|
+
'.dotx',
|
|
59
71
|
'.xlsx',
|
|
60
72
|
'.xlsm',
|
|
61
73
|
'.xls',
|
|
74
|
+
'.xltx',
|
|
62
75
|
'.ods',
|
|
63
76
|
'.pptx',
|
|
64
77
|
'.pptm',
|
|
65
|
-
'.
|
|
66
|
-
'.htm',
|
|
67
|
-
'.xhtml',
|
|
68
|
-
'.csv',
|
|
69
|
-
'.tsv',
|
|
70
|
-
'.txt',
|
|
71
|
-
'.md',
|
|
72
|
-
'.markdown',
|
|
73
|
-
'.json',
|
|
74
|
-
'.xml',
|
|
75
|
-
'.log',
|
|
76
|
-
'.yml',
|
|
77
|
-
'.yaml',
|
|
78
|
+
'.potx',
|
|
78
79
|
] as const;
|
|
79
80
|
|
|
80
81
|
export const allowedMediaTypes = [
|
|
@@ -265,4 +266,4 @@ export const MAX_MSG_WORDS = 300;
|
|
|
265
266
|
export const maxDocumentsPerMessage = 10;
|
|
266
267
|
export const maxDocumentContentLength = 300000;
|
|
267
268
|
export const pasteAsCardLineThreshold = 100;
|
|
268
|
-
export const pasteAsCardCharThreshold = 4200;
|
|
269
|
+
export const pasteAsCardCharThreshold = 4200;
|
package/src/helpers/error.ts
CHANGED
|
@@ -52,7 +52,8 @@ const errors = {
|
|
|
52
52
|
SESSION_EXPIRED: -103,
|
|
53
53
|
SESSION_OTP_NOT_FOUND: -107,
|
|
54
54
|
SESSION_OTP_EXPIRED: -108,
|
|
55
|
-
|
|
55
|
+
SESSION_OTP_INVALID: -109,
|
|
56
|
+
SESSION_OTP_ATTEMPTS_EXCEEDED: -110,
|
|
56
57
|
|
|
57
58
|
MEMORI_MISSING_CONFIGURATION: -201,
|
|
58
59
|
MEMORI_CONFIGURATION_NOT_FOUND: -202,
|
|
@@ -1,8 +1,23 @@
|
|
|
1
1
|
import {
|
|
2
|
+
isHeaderPositionPopoverAvailable,
|
|
2
3
|
shouldHoldAutoStartForPosition,
|
|
3
4
|
shouldRestartSessionOnPositionPopoverClose,
|
|
4
5
|
} from './positionPopover';
|
|
5
6
|
|
|
7
|
+
describe('isHeaderPositionPopoverAvailable', () => {
|
|
8
|
+
it('is unavailable on mobile when the layout strips needsPosition', () => {
|
|
9
|
+
expect(isHeaderPositionPopoverAvailable(true, true)).toBe(false);
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
it('is available on desktop even when the layout strips on mobile', () => {
|
|
13
|
+
expect(isHeaderPositionPopoverAvailable(false, true)).toBe(true);
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
it('is available on mobile when the layout keeps needsPosition', () => {
|
|
17
|
+
expect(isHeaderPositionPopoverAvailable(true, false)).toBe(true);
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
|
|
6
21
|
describe('shouldHoldAutoStartForPosition', () => {
|
|
7
22
|
it('holds auto-start when position is required and none is stored', () => {
|
|
8
23
|
expect(shouldHoldAutoStartForPosition(true, false)).toBe(true);
|
|
@@ -10,6 +10,22 @@ export function shouldHoldAutoStartForPosition(
|
|
|
10
10
|
return !!needsPosition && !hasPosition;
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
+
/**
|
|
14
|
+
* Whether Header exposes the position popover for the current layout.
|
|
15
|
+
* Mobile FullPage/Chat/ZoomedFullBody strip `needsPosition` from Header, so
|
|
16
|
+
* PositionPopover is not mounted and StartPanel must not rely on
|
|
17
|
+
* openPositionPopover + autoStartGeolocation alone.
|
|
18
|
+
*/
|
|
19
|
+
export function isHeaderPositionPopoverAvailable(
|
|
20
|
+
isMobile: boolean,
|
|
21
|
+
layoutStripsNeedsPositionOnMobile: boolean
|
|
22
|
+
): boolean {
|
|
23
|
+
if (isMobile && layoutStripsNeedsPositionOnMobile) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
|
|
13
29
|
/**
|
|
14
30
|
* Whether closing the position popover should re-run autoStart (`onClickStart`).
|
|
15
31
|
* Only true on a real open → closed transition when a session has not started yet
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { renderHook, act } from '@testing-library/react';
|
|
2
|
+
import type { MouseEvent } from 'react';
|
|
3
|
+
import { usePressTooltip } from './usePressTooltip';
|
|
4
|
+
|
|
5
|
+
describe('usePressTooltip', () => {
|
|
6
|
+
it('toggles open on press trigger click and exposes a fixed anchor positioner', () => {
|
|
7
|
+
const { result } = renderHook(() => usePressTooltip());
|
|
8
|
+
|
|
9
|
+
expect(result.current.open).toBe(false);
|
|
10
|
+
expect(result.current.positionerProps.positionMethod).toBe('fixed');
|
|
11
|
+
|
|
12
|
+
const anchor = document.createElement('button');
|
|
13
|
+
act(() => {
|
|
14
|
+
result.current.anchorRef(anchor);
|
|
15
|
+
});
|
|
16
|
+
expect(result.current.positionerProps.anchor.current).toBe(anchor);
|
|
17
|
+
|
|
18
|
+
const clickEvent = {
|
|
19
|
+
stopPropagation: jest.fn(),
|
|
20
|
+
} as unknown as MouseEvent;
|
|
21
|
+
|
|
22
|
+
act(() => {
|
|
23
|
+
result.current.pressTriggerProps.onClick(clickEvent);
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
expect(clickEvent.stopPropagation).toHaveBeenCalled();
|
|
27
|
+
expect(result.current.open).toBe(true);
|
|
28
|
+
expect(result.current.tooltipProps.open).toBe(true);
|
|
29
|
+
});
|
|
30
|
+
});
|
|
@@ -1,18 +1,36 @@
|
|
|
1
1
|
import {
|
|
2
2
|
useCallback,
|
|
3
|
+
useRef,
|
|
3
4
|
useState,
|
|
4
5
|
type MouseEvent,
|
|
5
6
|
type PointerEvent,
|
|
7
|
+
type RefCallback,
|
|
6
8
|
} from 'react';
|
|
7
9
|
|
|
10
|
+
/**
|
|
11
|
+
* Click-to-toggle for Base UI tooltips (touch / explicit open).
|
|
12
|
+
*
|
|
13
|
+
* Hover opens through Base UI with the trigger attached synchronously
|
|
14
|
+
* (`flushSync`). A controlled `open` flip from a nested button click does
|
|
15
|
+
* not — `stopPropagation` also blocks `referencePress` dismiss, so Floating UI
|
|
16
|
+
* can mount the positioner with no reference and stick at viewport 0,0.
|
|
17
|
+
*
|
|
18
|
+
* Attach `anchorRef` to the press target and merge `positionerProps` into
|
|
19
|
+
* Tooltip `slotProps.positioner` so click-open stays aligned with the control.
|
|
20
|
+
*/
|
|
8
21
|
export function usePressTooltip(defaultOpen = false) {
|
|
9
22
|
const [open, setOpen] = useState(defaultOpen);
|
|
23
|
+
const anchorRef = useRef<HTMLElement | null>(null);
|
|
10
24
|
|
|
11
25
|
const toggleOpen = useCallback((e: MouseEvent | PointerEvent) => {
|
|
12
26
|
e.stopPropagation();
|
|
13
27
|
setOpen(prev => !prev);
|
|
14
28
|
}, []);
|
|
15
29
|
|
|
30
|
+
const setAnchorRef = useCallback<RefCallback<HTMLElement>>(node => {
|
|
31
|
+
anchorRef.current = node;
|
|
32
|
+
}, []);
|
|
33
|
+
|
|
16
34
|
const pressTriggerProps = {
|
|
17
35
|
onPointerDown: (e: PointerEvent) => {
|
|
18
36
|
e.stopPropagation();
|
|
@@ -20,10 +38,22 @@ export function usePressTooltip(defaultOpen = false) {
|
|
|
20
38
|
onClick: toggleOpen,
|
|
21
39
|
} as const;
|
|
22
40
|
|
|
41
|
+
const positionerProps = {
|
|
42
|
+
anchor: anchorRef,
|
|
43
|
+
positionMethod: 'fixed' as const,
|
|
44
|
+
};
|
|
45
|
+
|
|
23
46
|
const tooltipProps = {
|
|
24
47
|
open,
|
|
25
48
|
onOpenChange: setOpen,
|
|
26
49
|
} as const;
|
|
27
50
|
|
|
28
|
-
return {
|
|
51
|
+
return {
|
|
52
|
+
open,
|
|
53
|
+
setOpen,
|
|
54
|
+
anchorRef: setAnchorRef,
|
|
55
|
+
pressTriggerProps,
|
|
56
|
+
positionerProps,
|
|
57
|
+
tooltipProps,
|
|
58
|
+
};
|
|
29
59
|
}
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
extractAttachmentLinks,
|
|
9
9
|
extractAttachmentLink,
|
|
10
10
|
isAssetOnlyDocumentAttachment,
|
|
11
|
+
isLocalTextFilename,
|
|
11
12
|
isOfficeNativeFilename,
|
|
12
13
|
parseDocumentAttachmentsFromMessage,
|
|
13
14
|
} from './utils';
|
|
@@ -176,15 +177,24 @@ describe('utils/attachment helpers', () => {
|
|
|
176
177
|
});
|
|
177
178
|
|
|
178
179
|
it('detects office native filenames', () => {
|
|
179
|
-
expect(isOfficeNativeFilename('report.doc')).toBe(
|
|
180
|
-
expect(isOfficeNativeFilename('report.docx')).toBe(
|
|
180
|
+
expect(isOfficeNativeFilename('report.doc')).toBe(false);
|
|
181
|
+
expect(isOfficeNativeFilename('report.docx')).toBe(false);
|
|
181
182
|
expect(isOfficeNativeFilename('budget.xls')).toBe(false);
|
|
182
|
-
expect(isOfficeNativeFilename('template.XLTX')).toBe(
|
|
183
|
-
expect(isOfficeNativeFilename('slides.potx')).toBe(
|
|
183
|
+
expect(isOfficeNativeFilename('template.XLTX')).toBe(false);
|
|
184
|
+
expect(isOfficeNativeFilename('slides.potx')).toBe(false);
|
|
184
185
|
expect(isOfficeNativeFilename('notes.pdf')).toBe(false);
|
|
185
186
|
expect(isOfficeNativeFilename('data.xlsx')).toBe(false);
|
|
186
187
|
});
|
|
187
188
|
|
|
189
|
+
it('detects filenames read locally instead of converted', () => {
|
|
190
|
+
expect(isLocalTextFilename('notes.txt')).toBe(true);
|
|
191
|
+
expect(isLocalTextFilename('export.CSV')).toBe(true);
|
|
192
|
+
expect(isLocalTextFilename('readme.md')).toBe(true);
|
|
193
|
+
expect(isLocalTextFilename('readme.markdown')).toBe(false);
|
|
194
|
+
expect(isLocalTextFilename('report.docx')).toBe(false);
|
|
195
|
+
expect(isLocalTextFilename('notes.pdf')).toBe(false);
|
|
196
|
+
});
|
|
197
|
+
|
|
188
198
|
it('detects asset-only document attachments', () => {
|
|
189
199
|
expect(
|
|
190
200
|
isAssetOnlyDocumentAttachment({
|