@ethora/chat-component 26.10.1 → 26.10.3

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 (68) hide show
  1. package/README.md +1 -0
  2. package/dist/{ChatProfileModal-Bf5jGPBZ.js → ChatProfileModal-D73ioMj9.js} +3 -3
  3. package/dist/{FilePreviewModal-Bwx0RZZw.js → FilePreviewModal-BeGa8s4u.js} +1 -1
  4. package/dist/{ManageDataModal-Dhkp0LWH.js → ManageDataModal-DxhvKwLo.js} +2 -2
  5. package/dist/{MarkdownBody-_sUhW2O8.js → MarkdownBody-fzjy9KUP.js} +1 -1
  6. package/dist/{MessageSearchModal-rwwWrILl.js → MessageSearchModal-3I0b3Nut.js} +2 -2
  7. package/dist/{PublicChatsModal-Byso6_vt.js → PublicChatsModal-Dzwl63q-.js} +2 -2
  8. package/dist/{SideDrawer-CQPOf0ek.js → SideDrawer-BPebE2tZ.js} +3 -3
  9. package/dist/{UserProfileModal-Vj2kICvc.js → UserProfileModal-BS5FZdJb.js} +3 -3
  10. package/dist/{UserSettingsModal-CioX4ZIV.js → UserSettingsModal-pBqmF_r2.js} +2 -2
  11. package/dist/{VideoCallOverlay-DodAkiam.js → VideoCallOverlay-PIg8Z5Xr.js} +1 -1
  12. package/dist/{VisibilityModal-CIl7rkBM.js → VisibilityModal-CnBRSRQ9.js} +2 -2
  13. package/dist/api.config.d.ts +0 -23
  14. package/dist/components/ContextMenu/ContextMenuComponents.d.ts +24 -8
  15. package/dist/components/ExampleComponents/CustomMessage.d.ts +27 -9
  16. package/dist/components/MainComponents/ChooseChatMessage.d.ts +12 -4
  17. package/dist/components/MainComponents/EditWrapper.d.ts +12 -4
  18. package/dist/components/MainComponents/MessageList.d.ts +2 -1
  19. package/dist/components/MainComponents/SystemMessage.d.ts +3 -1
  20. package/dist/components/MessageBubble/CustomDivider.d.ts +3 -1
  21. package/dist/components/MessageBubble/MessageReply.d.ts +3 -1
  22. package/dist/components/Modals/FilePreviewModal/ViewerChrome.d.ts +54 -18
  23. package/dist/components/Modals/MessageSearchModal/MessageHitResults.d.ts +3 -1
  24. package/dist/components/Modals/ModalReportChat/ModalReportChat.d.ts +3 -1
  25. package/dist/components/Modals/NewChatModal/styledNewChatComponents.d.ts +15 -5
  26. package/dist/components/Modals/SettingsModals/SharedStyledComponents.d.ts +27 -15
  27. package/dist/components/Modals/SettingsModals/Visibility/StyledComponents.d.ts +18 -6
  28. package/dist/components/Modals/SideDrawer/DrawerProfileParts.d.ts +27 -9
  29. package/dist/components/Modals/SideDrawer/SideDrawer.d.ts +39 -13
  30. package/dist/components/Modals/motionVariants.d.ts +8 -10
  31. package/dist/components/Modals/styledModalComponents.d.ts +53 -25
  32. package/dist/components/Notification/index.d.ts +3 -1
  33. package/dist/components/RoomComponents/styled/StyledRoomComponents.d.ts +24 -10
  34. package/dist/components/UsersList/StyledComponents.d.ts +18 -6
  35. package/dist/components/styled/ChatWrapperBox.d.ts +9 -2
  36. package/dist/components/styled/DateLabel.d.ts +3 -1
  37. package/dist/components/styled/Loader.d.ts +3 -1
  38. package/dist/components/styled/MediaModal.d.ts +6 -2
  39. package/dist/components/styled/MediaSurface.d.ts +9 -3
  40. package/dist/components/styled/NewMessageLabel.d.ts +3 -1
  41. package/dist/components/styled/RoomListComponents/index.d.ts +66 -22
  42. package/dist/components/styled/StyledComponents.d.ts +137 -46
  43. package/dist/components/styled/StyledInputComponents/MediaComponents.d.ts +63 -21
  44. package/dist/components/styled/StyledInputComponents/StyledInputComponents.d.ts +60 -22
  45. package/dist/components/styled/StyledInputComponents/VideoComponents.d.ts +18 -6
  46. package/dist/components/styled/TreadLabel.d.ts +3 -1
  47. package/dist/components/styled/VideoMessage.d.ts +3 -1
  48. package/dist/{handleCopyClick-DGaZhy_u.js → handleCopyClick-vPvh9hOU.js} +1 -1
  49. package/dist/helpers/mediaBubble.d.ts +28 -0
  50. package/dist/helpers/receiptState.d.ts +48 -0
  51. package/dist/helpers/textareaFit.d.ts +31 -0
  52. package/dist/helpers/timestamp.d.ts +7 -0
  53. package/dist/helpers/userEntry.d.ts +14 -0
  54. package/dist/hooks/useMediaProbe.d.ts +1 -0
  55. package/dist/hooks/useRoomInitialization.d.ts +2 -2
  56. package/dist/hooks/useRoomUrl.d.ts +2 -2
  57. package/dist/{main-CUB_w8AZ.js → main-CghdNDlB.js} +16754 -15435
  58. package/dist/main.js +1 -1
  59. package/dist/networking/api-requests/auth.api.d.ts +11 -5
  60. package/dist/networking/api-requests/user.api.d.ts +4 -4
  61. package/dist/networking/deliveryReceiptBatcher.d.ts +53 -0
  62. package/dist/networking/displayedMarkerThrottle.d.ts +29 -0
  63. package/dist/networking/receiptsPolicy.d.ts +32 -0
  64. package/dist/networking/xmppClient.d.ts +3 -3
  65. package/dist/roomStore/roomsSlice.d.ts +5 -1
  66. package/dist/types/models/config.model.d.ts +28 -0
  67. package/dist/types/models/room.model.d.ts +1 -0
  68. package/package.json +8 -7
@@ -1,12 +1,18 @@
1
- export declare const InputContainer: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components').FastOmit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
2
- export declare const MessageInputContainer: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components').FastOmit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
1
+ export declare const InputContainer: import('styled-components/dist/types').IStyledComponentBase<"web", Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "style"> & {
2
+ style?: import('react').CSSProperties | import('styled-components/dist/types').CSSPropertiesWithVars;
3
+ }> & string;
4
+ export declare const MessageInputContainer: import('styled-components/dist/types').IStyledComponentBase<"web", Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "style"> & {
5
+ style?: import('react').CSSProperties | import('styled-components/dist/types').CSSPropertiesWithVars;
6
+ }> & string;
3
7
  /**
4
8
  * Anchors the composer's emoji picker above the input row, inside
5
9
  * InputContainer's positioning context (the same one MentionDropdown uses).
6
10
  * Sits one layer above that dropdown so the two can never fight for the
7
11
  * same pixels if both were ever open at once.
8
12
  */
9
- export declare const EmojiPickerPopover: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components').FastOmit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
13
+ export declare const EmojiPickerPopover: import('styled-components/dist/types').IStyledComponentBase<"web", Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "style"> & {
14
+ style?: import('react').CSSProperties | import('styled-components/dist/types').CSSPropertiesWithVars;
15
+ }> & string;
10
16
  /**
11
17
  * Drop-target state for drag-and-drop attachments. Covers the whole drop
12
18
  * zone (the message area when the host marks one, else the composer) and is
@@ -14,36 +20,68 @@ export declare const EmojiPickerPopover: import('styled-components/dist/types').
14
20
  * Motion comes from the shared primitives, which already opt out under
15
21
  * prefers-reduced-motion.
16
22
  */
17
- export declare const DropOverlay: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components').FastOmit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
18
- export declare const DropTarget: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components').FastOmit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
19
- export declare const MessageInput: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components/dist/types').Substitute<import('react').DetailedHTMLProps<import('react').InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, {
23
+ export declare const DropOverlay: import('styled-components/dist/types').IStyledComponentBase<"web", Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "style"> & {
24
+ style?: import('react').CSSProperties | import('styled-components/dist/types').CSSPropertiesWithVars;
25
+ }> & string;
26
+ export declare const DropTarget: import('styled-components/dist/types').IStyledComponentBase<"web", Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "style"> & {
27
+ style?: import('react').CSSProperties | import('styled-components/dist/types').CSSPropertiesWithVars;
28
+ }> & string;
29
+ export declare const MessageInput: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components/dist/types').Merged<Omit<import('react').DetailedHTMLProps<import('react').InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "style"> & {
30
+ style?: import('react').CSSProperties | import('styled-components/dist/types').CSSPropertiesWithVars;
31
+ }, {
20
32
  $color?: string;
21
33
  $colorBg?: string;
22
34
  }>> & string;
23
- export declare const HiddenFileInput: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components').FastOmit<import('react').DetailedHTMLProps<import('react').InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, never>> & string;
24
- export declare const Timer: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components').FastOmit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
25
- export declare const WaveformContainer: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components').FastOmit<import('react').DetailedHTMLProps<import('react').CanvasHTMLAttributes<HTMLCanvasElement>, HTMLCanvasElement>, never>> & string;
26
- export declare const RecordContainer: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components').FastOmit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
27
- export declare const FilePreviewContainer: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components').FastOmit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
28
- export declare const FilePreview: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components').FastOmit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
29
- export declare const ImagePreview: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components').FastOmit<import('react').DetailedHTMLProps<import('react').ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>, never>> & string;
30
- export declare const VideoPreview: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components').FastOmit<import('react').DetailedHTMLProps<import('react').VideoHTMLAttributes<HTMLVideoElement>, HTMLVideoElement>, never>> & string;
35
+ export declare const HiddenFileInput: import('styled-components/dist/types').IStyledComponentBase<"web", Omit<import('react').DetailedHTMLProps<import('react').InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "style"> & {
36
+ style?: import('react').CSSProperties | import('styled-components/dist/types').CSSPropertiesWithVars;
37
+ }> & string;
38
+ export declare const Timer: import('styled-components/dist/types').IStyledComponentBase<"web", Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "style"> & {
39
+ style?: import('react').CSSProperties | import('styled-components/dist/types').CSSPropertiesWithVars;
40
+ }> & string;
41
+ export declare const WaveformContainer: import('styled-components/dist/types').IStyledComponentBase<"web", Omit<import('react').DetailedHTMLProps<import('react').CanvasHTMLAttributes<HTMLCanvasElement>, HTMLCanvasElement>, "style"> & {
42
+ style?: import('react').CSSProperties | import('styled-components/dist/types').CSSPropertiesWithVars;
43
+ }> & string;
44
+ export declare const RecordContainer: import('styled-components/dist/types').IStyledComponentBase<"web", Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "style"> & {
45
+ style?: import('react').CSSProperties | import('styled-components/dist/types').CSSPropertiesWithVars;
46
+ }> & string;
47
+ export declare const FilePreviewContainer: import('styled-components/dist/types').IStyledComponentBase<"web", Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "style"> & {
48
+ style?: import('react').CSSProperties | import('styled-components/dist/types').CSSPropertiesWithVars;
49
+ }> & string;
50
+ export declare const FilePreview: import('styled-components/dist/types').IStyledComponentBase<"web", Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "style"> & {
51
+ style?: import('react').CSSProperties | import('styled-components/dist/types').CSSPropertiesWithVars;
52
+ }> & string;
53
+ export declare const ImagePreview: import('styled-components/dist/types').IStyledComponentBase<"web", Omit<import('react').DetailedHTMLProps<import('react').ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>, "style"> & {
54
+ style?: import('react').CSSProperties | import('styled-components/dist/types').CSSPropertiesWithVars;
55
+ }> & string;
56
+ export declare const VideoPreview: import('styled-components/dist/types').IStyledComponentBase<"web", Omit<import('react').DetailedHTMLProps<import('react').VideoHTMLAttributes<HTMLVideoElement>, HTMLVideoElement>, "style"> & {
57
+ style?: import('react').CSSProperties | import('styled-components/dist/types').CSSPropertiesWithVars;
58
+ }> & string;
31
59
  /** First page of a picked PDF, before it is sent. Fills the whole tile. */
32
- export declare const DocumentPreview: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components').FastOmit<import('react').DetailedHTMLProps<import('react').ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>, never>> & string;
33
- export declare const FilePreviewName: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components').FastOmit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, never>> & string;
60
+ export declare const DocumentPreview: import('styled-components/dist/types').IStyledComponentBase<"web", Omit<import('react').DetailedHTMLProps<import('react').ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement>, "style"> & {
61
+ style?: import('react').CSSProperties | import('styled-components/dist/types').CSSPropertiesWithVars;
62
+ }> & string;
63
+ export declare const FilePreviewName: import('styled-components/dist/types').IStyledComponentBase<"web", Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "style"> & {
64
+ style?: import('react').CSSProperties | import('styled-components/dist/types').CSSPropertiesWithVars;
65
+ }> & string;
34
66
  /** Why a pick was rejected (too many files, file too large). */
35
- export declare const AttachmentNotice: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components').FastOmit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
36
- export declare const StyledInput: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components/dist/types').Substitute<import('react').DetailedHTMLProps<import('react').InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, {
67
+ export declare const AttachmentNotice: import('styled-components/dist/types').IStyledComponentBase<"web", Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "style"> & {
68
+ style?: import('react').CSSProperties | import('styled-components/dist/types').CSSPropertiesWithVars;
69
+ }> & string;
70
+ export declare const StyledInput: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components/dist/types').Merged<Omit<import('react').DetailedHTMLProps<import('react').InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "style"> & {
71
+ style?: import('react').CSSProperties | import('styled-components/dist/types').CSSPropertiesWithVars;
72
+ }, {
37
73
  $colorBg?: string;
38
74
  }>> & string;
39
- export declare const TextareaWrapper: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components/dist/types').Substitute<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
40
- $dynamicHeight?: number;
75
+ export declare const TextareaWrapper: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components/dist/types').Merged<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "style"> & {
76
+ style?: import('react').CSSProperties | import('styled-components/dist/types').CSSPropertiesWithVars;
77
+ }, {
41
78
  $color?: string;
42
79
  $isFocused?: boolean;
43
80
  $colorBg?: string;
44
81
  }>> & string;
45
- export declare const TextareaInput: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components/dist/types').Substitute<import('react').DetailedHTMLProps<import('react').TextareaHTMLAttributes<HTMLTextAreaElement>, HTMLTextAreaElement>, {
46
- $dynamicHeight?: number;
82
+ export declare const TextareaInput: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components/dist/types').Merged<Omit<import('react').DetailedHTMLProps<import('react').TextareaHTMLAttributes<HTMLTextAreaElement>, HTMLTextAreaElement>, "style"> & {
83
+ style?: import('react').CSSProperties | import('styled-components/dist/types').CSSPropertiesWithVars;
84
+ }, {
47
85
  $color?: string;
48
86
  $colorBg?: string;
49
87
  }>> & string;
@@ -1,6 +1,18 @@
1
- export declare const Container: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components').FastOmit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
2
- export declare const FullScreenVideo: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components').FastOmit<import('react').DetailedHTMLProps<import('react').VideoHTMLAttributes<HTMLVideoElement>, HTMLVideoElement>, never>> & string;
3
- export declare const FixedSizeVideo: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components').FastOmit<import('react').DetailedHTMLProps<import('react').VideoHTMLAttributes<HTMLVideoElement>, HTMLVideoElement>, never>> & string;
4
- export declare const ModalContent: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components').FastOmit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
5
- export declare const ButtonContainer: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components').FastOmit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
6
- export declare const IconButton: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components').FastOmit<import('react').DetailedHTMLProps<import('react').ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, never>> & string;
1
+ export declare const Container: import('styled-components/dist/types').IStyledComponentBase<"web", Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "style"> & {
2
+ style?: import('react').CSSProperties | import('styled-components/dist/types').CSSPropertiesWithVars;
3
+ }> & string;
4
+ export declare const FullScreenVideo: import('styled-components/dist/types').IStyledComponentBase<"web", Omit<import('react').DetailedHTMLProps<import('react').VideoHTMLAttributes<HTMLVideoElement>, HTMLVideoElement>, "style"> & {
5
+ style?: import('react').CSSProperties | import('styled-components/dist/types').CSSPropertiesWithVars;
6
+ }> & string;
7
+ export declare const FixedSizeVideo: import('styled-components/dist/types').IStyledComponentBase<"web", Omit<import('react').DetailedHTMLProps<import('react').VideoHTMLAttributes<HTMLVideoElement>, HTMLVideoElement>, "style"> & {
8
+ style?: import('react').CSSProperties | import('styled-components/dist/types').CSSPropertiesWithVars;
9
+ }> & string;
10
+ export declare const ModalContent: import('styled-components/dist/types').IStyledComponentBase<"web", Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "style"> & {
11
+ style?: import('react').CSSProperties | import('styled-components/dist/types').CSSPropertiesWithVars;
12
+ }> & string;
13
+ export declare const ButtonContainer: import('styled-components/dist/types').IStyledComponentBase<"web", Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "style"> & {
14
+ style?: import('react').CSSProperties | import('styled-components/dist/types').CSSPropertiesWithVars;
15
+ }> & string;
16
+ export declare const IconButton: import('styled-components/dist/types').IStyledComponentBase<"web", Omit<import('react').DetailedHTMLProps<import('react').ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "style"> & {
17
+ style?: import('react').CSSProperties | import('styled-components/dist/types').CSSPropertiesWithVars;
18
+ }> & string;
@@ -6,7 +6,9 @@ interface DateLabelProps {
6
6
  secondary?: string;
7
7
  };
8
8
  }
9
- export declare const StyledDateLabel: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components/dist/types').Substitute<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
9
+ export declare const StyledDateLabel: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components/dist/types').Merged<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "style"> & {
10
+ style?: React.CSSProperties | import('styled-components/dist/types').CSSPropertiesWithVars;
11
+ }, {
10
12
  $primary?: string;
11
13
  $secondary?: string;
12
14
  }>> & string;
@@ -1,6 +1,8 @@
1
1
  import { default as React } from 'react';
2
2
  /** Full-size player used by the preview modal. Kept here with the bubble video. */
3
- export declare const FullScreenVideo: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components').FastOmit<React.DetailedHTMLProps<React.VideoHTMLAttributes<HTMLVideoElement>, HTMLVideoElement>, never>> & string;
3
+ export declare const FullScreenVideo: import('styled-components/dist/types').IStyledComponentBase<"web", Omit<React.DetailedHTMLProps<React.VideoHTMLAttributes<HTMLVideoElement>, HTMLVideoElement>, "style"> & {
4
+ style?: React.CSSProperties | import('styled-components/dist/types').CSSPropertiesWithVars;
5
+ }> & string;
4
6
  interface CustomMessageVideoProps {
5
7
  fileName: string;
6
8
  fileURL: string;
@@ -1,4 +1,4 @@
1
- import { E as e, G as t } from "./main-CUB_w8AZ.js";
1
+ import { E as e, G as t } from "./main-CghdNDlB.js";
2
2
  const i = e.div`
3
3
  display: flex;
4
4
  flex-direction: column;
@@ -37,3 +37,31 @@ export declare const getMediaBlockMode: (attachments: IAttachment[]) => MediaBlo
37
37
  export declare const usesMediaOverlayTime: (attachments: IAttachment[], options?: {
38
38
  hasCaption?: boolean;
39
39
  }) => boolean;
40
+ export type TimeMode = 'overlay' | 'row';
41
+ export interface MediaTimeFacts {
42
+ attachments: IAttachment[];
43
+ /** The caption the bubble really shows (see getMessageCaption), if any. */
44
+ hasCaption: boolean;
45
+ /** The sender's own bubble is in the failed state. */
46
+ failed?: boolean;
47
+ /** Quick reply buttons are shown under the bubble content. */
48
+ hasQuickReplies?: boolean;
49
+ /** A URL preview card is shown (only ever from a caption, never the body). */
50
+ hasUrlPreview?: boolean;
51
+ /** The manual translate row is shown. */
52
+ hasTranslateRow?: boolean;
53
+ }
54
+ /**
55
+ * The one rule for where a media bubble's time goes, read by both the time
56
+ * element and the bubble itself (data-time-mode), so they cannot disagree.
57
+ *
58
+ * `mediaOnly`: pictures and videos and nothing else (no caption, no card, no
59
+ * voice note). Such a bubble always shows the time as the glass pill over the
60
+ * media, unless something else needs the bottom of the bubble (a failed
61
+ * notice, quick replies, a preview card or the translate row), in which case
62
+ * the time takes the normal bottom right row.
63
+ */
64
+ export declare const getMediaTimeLayout: (facts: MediaTimeFacts) => {
65
+ mediaOnly: boolean;
66
+ mode: TimeMode;
67
+ };
@@ -0,0 +1,48 @@
1
+ import { IMessage } from '../types/types';
2
+ /**
3
+ * Per-room lookup tables for the delivery/read ticks, built once per
4
+ * `room.messages` array (WeakMap keyed by the array reference) and shared by
5
+ * every own bubble in that room. A bubble then costs O(viewers), not O(n).
6
+ */
7
+ export interface ReceiptIndex {
8
+ /** message id -> position in the loaded list. */
9
+ indexById: Map<string, number>;
10
+ /** message position -> timestamp in ms (0 when unknown). */
11
+ tsByIndex: number[];
12
+ /** author local part -> position of their newest loaded message. */
13
+ lastAuthoredIndexByUser: Map<string, number>;
14
+ }
15
+ /** The lookup tables for `messages`, built on first use per array. */
16
+ export declare const getReceiptIndex: (messages: readonly IMessage[]) => ReceiptIndex;
17
+ /** Number of index builds so far (tests check one build per messages change). */
18
+ export declare const getReceiptIndexBuildCount: () => number;
19
+ export interface ReceiptState {
20
+ /** Other members who have read this message. */
21
+ seenBy: string[];
22
+ /** Other members who have received it (readers included). */
23
+ deliveredBy: string[];
24
+ }
25
+ export declare const NO_RECEIPTS: ReceiptState;
26
+ export declare const receiptStateEqual: (a: ReceiptState, b: ReceiptState) => boolean;
27
+ export interface ComputeReceiptsInput {
28
+ index: ReceiptIndex;
29
+ messageId: string;
30
+ /** The bubble's own timestamp in ms (0 when unknown). */
31
+ messageTs: number;
32
+ /** Per-message receipts: xmppUsername -> ms (from message.receivedBy). */
33
+ receivedBy?: Record<string, number>;
34
+ /** Room delivery watermarks: xmppUsername -> stanza-id. */
35
+ lastReceivedByUser?: Record<string, string>;
36
+ /** Room read watermarks: xmppUsername -> stanza-id. */
37
+ lastDisplayedByUser?: Record<string, string>;
38
+ /** The current user's xmppUsername (never listed as a viewer). */
39
+ selfId?: string;
40
+ }
41
+ /**
42
+ * Who has read and who has received one of our messages. A viewer has read
43
+ * it when their read watermark covers it, or when they have authored a
44
+ * message at or after it (posting in the room implies they saw what came
45
+ * before). A viewer has received it when a per-message receipt exists or
46
+ * their delivery watermark covers it; reading implies receiving.
47
+ */
48
+ export declare const computeReceiptState: ({ index, messageId, messageTs, receivedBy, lastReceivedByUser, lastDisplayedByUser, selfId, }: ComputeReceiptsInput) => ReceiptState;
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Auto-sizing for the composer textarea.
3
+ *
4
+ * The field is sized from its real content (soft wraps included), not from
5
+ * the newline count. One line keeps the original 40px field (34px textarea
6
+ * plus the 6px wrapper border and padding). Two lines or more use a tighter
7
+ * vertical padding so the text hugs the field, and the textarea scrolls
8
+ * internally once it reaches the cap.
9
+ */
10
+ export declare const COMPOSER_LINE_HEIGHT = 20;
11
+ /** Vertical padding per side for a single line (keeps the 40px field). */
12
+ export declare const COMPOSER_PAD_SINGLE = 7;
13
+ /** Vertical padding per side once the text wraps to two lines or more. */
14
+ export declare const COMPOSER_PAD_MULTI = 5;
15
+ /** Textarea box cap (about five lines), after which it scrolls. */
16
+ export declare const COMPOSER_MAX_HEIGHT = 140;
17
+ export interface TextareaFit {
18
+ /** Textarea border-box height in px. */
19
+ height: number;
20
+ /** True when the text occupies two lines or more. */
21
+ multiline: boolean;
22
+ /** True when the content is taller than the cap and must scroll. */
23
+ scrollable: boolean;
24
+ }
25
+ /**
26
+ * @param scrollHeight the textarea's scrollHeight, measured with height:auto
27
+ * and the single-line padding applied (so it is content + 14px).
28
+ */
29
+ export declare function computeTextareaFit(scrollHeight: number): TextareaFit;
30
+ /** Re-measures a textarea from its content and applies the result to the DOM. */
31
+ export declare function fitTextareaToContent(el: HTMLTextAreaElement): TextareaFit;
@@ -1,2 +1,9 @@
1
1
  export declare const normalizeTimestampValue: (value: number) => number;
2
2
  export declare const getTimestampFromUnknown: (value: unknown) => number;
3
+ /**
4
+ * Time encoded in a message or stanza id, 0 when the id carries none. Only an
5
+ * all-digit id (server stanza-id, microseconds) encodes a time: ids such as
6
+ * `send-text-message:<uuid>` must not be read as one, because a uuid can hold
7
+ * a run of ten or more digits that would parse as a far-future time.
8
+ */
9
+ export declare const getTimestampFromId: (id: unknown) => number;
@@ -0,0 +1,14 @@
1
+ import { RoomMember } from '../types/types';
2
+ /**
3
+ * Narrow lookup into `rooms.usersSet` for one user key.
4
+ *
5
+ * Returns the entry only for an own property of the map. Prototype keys
6
+ * (`__proto__`, `constructor`, `prototype`) are refused outright: a plain
7
+ * dictionary lookup would hand back `Object.prototype` members for them,
8
+ * which look like a user entry to every caller that checks truthiness.
9
+ *
10
+ * Components use this with a `useSelector` on `state.rooms.usersSet` so they
11
+ * subscribe to one entry (reference-stable under Immer) instead of the whole
12
+ * map.
13
+ */
14
+ export declare const lookupUserEntry: (usersSet: Record<string, RoomMember> | null | undefined, key: string | null | undefined) => RoomMember | undefined;
@@ -37,4 +37,5 @@ export declare const resetMediaProbeCaches: () => void;
37
37
  */
38
38
  export declare const useMediaProbe: (url: string | undefined) => MediaProbe & {
39
39
  retry: () => void;
40
+ fail: () => void;
40
41
  };
@@ -1,2 +1,2 @@
1
- import { IConfig, IRoom } from '../types/types';
2
- export declare const useRoomInitialization: (activeRoomJID: string, roomsList: Record<string, IRoom>, config: IConfig, messageLength: number) => void;
1
+ import { IConfig } from '../types/types';
2
+ export declare const useRoomInitialization: (activeRoomJID: string, config: IConfig, messageLength: number) => void;
@@ -1,2 +1,2 @@
1
- import { IConfig, IRoom } from '../types/types';
2
- export declare const useRoomUrl: (activeRoomJID: string, roomsList: Record<string, IRoom>, config: IConfig) => void;
1
+ import { IConfig } from '../types/types';
2
+ export declare const useRoomUrl: (activeRoomJID: string, config: IConfig) => void;