@liveblocks/react-ui 2.14.0-v2encoding → 2.15.0-debug1

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 (258) hide show
  1. package/dist/_private/index.d.mts +24 -22
  2. package/dist/_private/index.d.ts +24 -22
  3. package/dist/components/Comment.js +355 -254
  4. package/dist/components/Comment.js.map +1 -1
  5. package/dist/components/Comment.mjs +330 -229
  6. package/dist/components/Comment.mjs.map +1 -1
  7. package/dist/components/Composer.js +304 -221
  8. package/dist/components/Composer.js.map +1 -1
  9. package/dist/components/Composer.mjs +278 -195
  10. package/dist/components/Composer.mjs.map +1 -1
  11. package/dist/components/HistoryVersionSummary.js +25 -22
  12. package/dist/components/HistoryVersionSummary.js.map +1 -1
  13. package/dist/components/HistoryVersionSummary.mjs +24 -21
  14. package/dist/components/HistoryVersionSummary.mjs.map +1 -1
  15. package/dist/components/HistoryVersionSummaryList.js +10 -9
  16. package/dist/components/HistoryVersionSummaryList.js.map +1 -1
  17. package/dist/components/HistoryVersionSummaryList.mjs +9 -8
  18. package/dist/components/HistoryVersionSummaryList.mjs.map +1 -1
  19. package/dist/components/InboxNotification.js +201 -143
  20. package/dist/components/InboxNotification.js.map +1 -1
  21. package/dist/components/InboxNotification.mjs +179 -121
  22. package/dist/components/InboxNotification.mjs.map +1 -1
  23. package/dist/components/InboxNotificationList.js +18 -14
  24. package/dist/components/InboxNotificationList.js.map +1 -1
  25. package/dist/components/InboxNotificationList.mjs +16 -12
  26. package/dist/components/InboxNotificationList.mjs.map +1 -1
  27. package/dist/components/Thread.js +103 -86
  28. package/dist/components/Thread.js.map +1 -1
  29. package/dist/components/Thread.mjs +92 -75
  30. package/dist/components/Thread.mjs.map +1 -1
  31. package/dist/components/internal/Attachment.js +158 -107
  32. package/dist/components/internal/Attachment.js.map +1 -1
  33. package/dist/components/internal/Attachment.mjs +147 -96
  34. package/dist/components/internal/Attachment.mjs.map +1 -1
  35. package/dist/components/internal/Attribution.js +15 -13
  36. package/dist/components/internal/Attribution.js.map +1 -1
  37. package/dist/components/internal/Attribution.mjs +15 -13
  38. package/dist/components/internal/Attribution.mjs.map +1 -1
  39. package/dist/components/internal/Avatar.js +26 -20
  40. package/dist/components/internal/Avatar.js.map +1 -1
  41. package/dist/components/internal/Avatar.mjs +22 -16
  42. package/dist/components/internal/Avatar.mjs.map +1 -1
  43. package/dist/components/internal/Button.js +4 -4
  44. package/dist/components/internal/Button.js.map +1 -1
  45. package/dist/components/internal/Button.mjs +3 -3
  46. package/dist/components/internal/Button.mjs.map +1 -1
  47. package/dist/components/internal/Dropdown.js +26 -19
  48. package/dist/components/internal/Dropdown.js.map +1 -1
  49. package/dist/components/internal/Dropdown.mjs +25 -18
  50. package/dist/components/internal/Dropdown.mjs.map +1 -1
  51. package/dist/components/internal/Emoji.js +4 -3
  52. package/dist/components/internal/Emoji.js.map +1 -1
  53. package/dist/components/internal/Emoji.mjs +3 -2
  54. package/dist/components/internal/Emoji.mjs.map +1 -1
  55. package/dist/components/internal/EmojiPicker.js +96 -72
  56. package/dist/components/internal/EmojiPicker.js.map +1 -1
  57. package/dist/components/internal/EmojiPicker.mjs +90 -66
  58. package/dist/components/internal/EmojiPicker.mjs.map +1 -1
  59. package/dist/components/internal/Icon.js +5 -4
  60. package/dist/components/internal/Icon.js.map +1 -1
  61. package/dist/components/internal/Icon.mjs +5 -4
  62. package/dist/components/internal/Icon.mjs.map +1 -1
  63. package/dist/components/internal/InboxNotificationThread.js +53 -38
  64. package/dist/components/internal/InboxNotificationThread.js.map +1 -1
  65. package/dist/components/internal/InboxNotificationThread.mjs +53 -38
  66. package/dist/components/internal/InboxNotificationThread.mjs.map +1 -1
  67. package/dist/components/internal/List.js +8 -6
  68. package/dist/components/internal/List.js.map +1 -1
  69. package/dist/components/internal/List.mjs +6 -4
  70. package/dist/components/internal/List.mjs.map +1 -1
  71. package/dist/components/internal/Room.js +7 -6
  72. package/dist/components/internal/Room.js.map +1 -1
  73. package/dist/components/internal/Room.mjs +6 -5
  74. package/dist/components/internal/Room.mjs.map +1 -1
  75. package/dist/components/internal/Tooltip.js +48 -33
  76. package/dist/components/internal/Tooltip.js.map +1 -1
  77. package/dist/components/internal/Tooltip.mjs +45 -30
  78. package/dist/components/internal/Tooltip.mjs.map +1 -1
  79. package/dist/components/internal/User.js +7 -6
  80. package/dist/components/internal/User.js.map +1 -1
  81. package/dist/components/internal/User.mjs +6 -5
  82. package/dist/components/internal/User.mjs.map +1 -1
  83. package/dist/components.js +11 -29
  84. package/dist/components.js.map +1 -1
  85. package/dist/components.mjs +5 -5
  86. package/dist/components.mjs.map +1 -1
  87. package/dist/config.js +15 -12
  88. package/dist/config.js.map +1 -1
  89. package/dist/config.mjs +12 -9
  90. package/dist/config.mjs.map +1 -1
  91. package/dist/icons/ArrowDown.js +7 -6
  92. package/dist/icons/ArrowDown.js.map +1 -1
  93. package/dist/icons/ArrowDown.mjs +7 -6
  94. package/dist/icons/ArrowDown.mjs.map +1 -1
  95. package/dist/icons/ArrowUp.js +7 -6
  96. package/dist/icons/ArrowUp.js.map +1 -1
  97. package/dist/icons/ArrowUp.mjs +7 -6
  98. package/dist/icons/ArrowUp.mjs.map +1 -1
  99. package/dist/icons/Attachment.js +7 -6
  100. package/dist/icons/Attachment.js.map +1 -1
  101. package/dist/icons/Attachment.mjs +7 -6
  102. package/dist/icons/Attachment.mjs.map +1 -1
  103. package/dist/icons/Bold.js +7 -6
  104. package/dist/icons/Bold.js.map +1 -1
  105. package/dist/icons/Bold.mjs +7 -6
  106. package/dist/icons/Bold.mjs.map +1 -1
  107. package/dist/icons/Check.js +7 -6
  108. package/dist/icons/Check.js.map +1 -1
  109. package/dist/icons/Check.mjs +7 -6
  110. package/dist/icons/Check.mjs.map +1 -1
  111. package/dist/icons/Code.js +7 -6
  112. package/dist/icons/Code.js.map +1 -1
  113. package/dist/icons/Code.mjs +7 -6
  114. package/dist/icons/Code.mjs.map +1 -1
  115. package/dist/icons/Cross.js +12 -8
  116. package/dist/icons/Cross.js.map +1 -1
  117. package/dist/icons/Cross.mjs +12 -8
  118. package/dist/icons/Cross.mjs.map +1 -1
  119. package/dist/icons/Delete.js +7 -6
  120. package/dist/icons/Delete.js.map +1 -1
  121. package/dist/icons/Delete.mjs +7 -6
  122. package/dist/icons/Delete.mjs.map +1 -1
  123. package/dist/icons/Edit.js +7 -6
  124. package/dist/icons/Edit.js.map +1 -1
  125. package/dist/icons/Edit.mjs +7 -6
  126. package/dist/icons/Edit.mjs.map +1 -1
  127. package/dist/icons/Ellipsis.js +21 -16
  128. package/dist/icons/Ellipsis.js.map +1 -1
  129. package/dist/icons/Ellipsis.mjs +21 -16
  130. package/dist/icons/Ellipsis.mjs.map +1 -1
  131. package/dist/icons/Emoji.js +25 -18
  132. package/dist/icons/Emoji.js.map +1 -1
  133. package/dist/icons/Emoji.mjs +25 -18
  134. package/dist/icons/Emoji.mjs.map +1 -1
  135. package/dist/icons/EmojiAdd.js +28 -20
  136. package/dist/icons/EmojiAdd.js.map +1 -1
  137. package/dist/icons/EmojiAdd.mjs +28 -20
  138. package/dist/icons/EmojiAdd.mjs.map +1 -1
  139. package/dist/icons/Italic.js +7 -6
  140. package/dist/icons/Italic.js.map +1 -1
  141. package/dist/icons/Italic.mjs +7 -6
  142. package/dist/icons/Italic.mjs.map +1 -1
  143. package/dist/icons/Mention.js +12 -8
  144. package/dist/icons/Mention.js.map +1 -1
  145. package/dist/icons/Mention.mjs +12 -8
  146. package/dist/icons/Mention.mjs.map +1 -1
  147. package/dist/icons/Resolve.js +14 -10
  148. package/dist/icons/Resolve.js.map +1 -1
  149. package/dist/icons/Resolve.mjs +14 -10
  150. package/dist/icons/Resolve.mjs.map +1 -1
  151. package/dist/icons/Resolved.js +16 -12
  152. package/dist/icons/Resolved.js.map +1 -1
  153. package/dist/icons/Resolved.mjs +16 -12
  154. package/dist/icons/Resolved.mjs.map +1 -1
  155. package/dist/icons/Restore.js +12 -8
  156. package/dist/icons/Restore.js.map +1 -1
  157. package/dist/icons/Restore.mjs +12 -8
  158. package/dist/icons/Restore.mjs.map +1 -1
  159. package/dist/icons/Search.js +7 -6
  160. package/dist/icons/Search.js.map +1 -1
  161. package/dist/icons/Search.mjs +7 -6
  162. package/dist/icons/Search.mjs.map +1 -1
  163. package/dist/icons/Send.js +7 -6
  164. package/dist/icons/Send.js.map +1 -1
  165. package/dist/icons/Send.mjs +7 -6
  166. package/dist/icons/Send.mjs.map +1 -1
  167. package/dist/icons/Spinner.js +8 -7
  168. package/dist/icons/Spinner.js.map +1 -1
  169. package/dist/icons/Spinner.mjs +8 -7
  170. package/dist/icons/Spinner.mjs.map +1 -1
  171. package/dist/icons/Strikethrough.js +7 -6
  172. package/dist/icons/Strikethrough.js.map +1 -1
  173. package/dist/icons/Strikethrough.mjs +7 -6
  174. package/dist/icons/Strikethrough.mjs.map +1 -1
  175. package/dist/icons/Warning.js +14 -10
  176. package/dist/icons/Warning.js.map +1 -1
  177. package/dist/icons/Warning.mjs +14 -10
  178. package/dist/icons/Warning.mjs.map +1 -1
  179. package/dist/index.d.mts +14 -12
  180. package/dist/index.d.ts +14 -12
  181. package/dist/overrides.js +64 -36
  182. package/dist/overrides.js.map +1 -1
  183. package/dist/overrides.mjs +58 -12
  184. package/dist/overrides.mjs.map +1 -1
  185. package/dist/primitives/Comment/index.js +75 -66
  186. package/dist/primitives/Comment/index.js.map +1 -1
  187. package/dist/primitives/Comment/index.mjs +71 -62
  188. package/dist/primitives/Comment/index.mjs.map +1 -1
  189. package/dist/primitives/Composer/contexts.js +11 -11
  190. package/dist/primitives/Composer/index.js +327 -270
  191. package/dist/primitives/Composer/index.js.map +1 -1
  192. package/dist/primitives/Composer/index.mjs +250 -193
  193. package/dist/primitives/Composer/index.mjs.map +1 -1
  194. package/dist/primitives/Composer/utils.js +18 -20
  195. package/dist/primitives/Composer/utils.js.map +1 -1
  196. package/dist/primitives/Composer/utils.mjs +1 -3
  197. package/dist/primitives/Composer/utils.mjs.map +1 -1
  198. package/dist/primitives/EmojiPicker/contexts.js +3 -3
  199. package/dist/primitives/EmojiPicker/index.js +159 -142
  200. package/dist/primitives/EmojiPicker/index.js.map +1 -1
  201. package/dist/primitives/EmojiPicker/index.mjs +120 -103
  202. package/dist/primitives/EmojiPicker/index.mjs.map +1 -1
  203. package/dist/primitives/FileSize.js +8 -7
  204. package/dist/primitives/FileSize.js.map +1 -1
  205. package/dist/primitives/FileSize.mjs +6 -5
  206. package/dist/primitives/FileSize.mjs.map +1 -1
  207. package/dist/primitives/Timestamp.js +11 -10
  208. package/dist/primitives/Timestamp.js.map +1 -1
  209. package/dist/primitives/Timestamp.mjs +6 -5
  210. package/dist/primitives/Timestamp.mjs.map +1 -1
  211. package/dist/primitives/index.d.mts +24 -23
  212. package/dist/primitives/index.d.ts +24 -23
  213. package/dist/primitives/internal/Emoji.js +7 -5
  214. package/dist/primitives/internal/Emoji.js.map +1 -1
  215. package/dist/primitives/internal/Emoji.mjs +6 -4
  216. package/dist/primitives/internal/Emoji.mjs.map +1 -1
  217. package/dist/shared.js +2 -7
  218. package/dist/shared.js.map +1 -1
  219. package/dist/shared.mjs +2 -7
  220. package/dist/shared.mjs.map +1 -1
  221. package/dist/utils/Persist.js +18 -18
  222. package/dist/utils/Persist.js.map +1 -1
  223. package/dist/utils/Persist.mjs +6 -6
  224. package/dist/utils/Persist.mjs.map +1 -1
  225. package/dist/utils/Portal.js +4 -4
  226. package/dist/utils/Portal.js.map +1 -1
  227. package/dist/utils/Portal.mjs +3 -3
  228. package/dist/utils/Portal.mjs.map +1 -1
  229. package/dist/utils/use-controllable-state.js +5 -5
  230. package/dist/utils/use-index.js +7 -7
  231. package/dist/utils/use-initial.js +2 -2
  232. package/dist/utils/use-interval.js +4 -4
  233. package/dist/utils/use-latest.js +3 -3
  234. package/dist/utils/use-observable.js +2 -2
  235. package/dist/utils/use-refs.js +2 -2
  236. package/dist/utils/use-rerender.js +2 -2
  237. package/dist/utils/use-visible.js +2 -2
  238. package/dist/utils/use-window-focus.js +2 -2
  239. package/dist/utils/use-window-focus.js.map +1 -1
  240. package/dist/utils/use-window-focus.mjs +1 -1
  241. package/dist/utils/use-window-focus.mjs.map +1 -1
  242. package/dist/version.js +1 -1
  243. package/dist/version.js.map +1 -1
  244. package/dist/version.mjs +1 -1
  245. package/dist/version.mjs.map +1 -1
  246. package/package.json +6 -8
  247. package/dist/utils/use-id.js +0 -29
  248. package/dist/utils/use-id.js.map +0 -1
  249. package/dist/utils/use-id.mjs +0 -27
  250. package/dist/utils/use-id.mjs.map +0 -1
  251. package/dist/utils/use-layout-effect.js +0 -8
  252. package/dist/utils/use-layout-effect.js.map +0 -1
  253. package/dist/utils/use-layout-effect.mjs +0 -6
  254. package/dist/utils/use-layout-effect.mjs.map +0 -1
  255. package/dist/utils/use-transition.js +0 -16
  256. package/dist/utils/use-transition.js.map +0 -1
  257. package/dist/utils/use-transition.mjs +0 -14
  258. package/dist/utils/use-transition.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"InboxNotification.js","sources":["../../src/components/InboxNotification.tsx"],"sourcesContent":["\"use client\";\n\nimport type {\n InboxNotificationCustomData,\n InboxNotificationData,\n InboxNotificationTextMentionData,\n InboxNotificationThreadData,\n KDAD,\n} from \"@liveblocks/core\";\nimport { assertNever, console } from \"@liveblocks/core\";\nimport {\n useDeleteInboxNotification,\n useInboxNotificationThread,\n useMarkInboxNotificationAsRead,\n useRoomInfo,\n} from \"@liveblocks/react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { TooltipProvider } from \"@radix-ui/react-tooltip\";\nimport type {\n ComponentProps,\n ComponentPropsWithoutRef,\n ComponentType,\n MouseEvent as ReactMouseEvent,\n ReactNode,\n SyntheticEvent,\n} from \"react\";\nimport React, { forwardRef, useCallback, useMemo, useState } from \"react\";\n\nimport type { GlobalComponents } from \"../components\";\nimport { useComponents } from \"../components\";\nimport { CheckIcon } from \"../icons/Check\";\nimport { DeleteIcon } from \"../icons/Delete\";\nimport { EllipsisIcon } from \"../icons/Ellipsis\";\nimport { WarningIcon } from \"../icons/Warning\";\nimport type {\n CommentOverrides,\n GlobalOverrides,\n InboxNotificationOverrides,\n} from \"../overrides\";\nimport { useOverrides } from \"../overrides\";\nimport { Timestamp } from \"../primitives/Timestamp\";\nimport { useCurrentUserId } from \"../shared\";\nimport type { SlotProp } from \"../types\";\nimport { classNames } from \"../utils/class-names\";\nimport { generateURL } from \"../utils/url\";\nimport { Avatar, type AvatarProps } from \"./internal/Avatar\";\nimport { Button } from \"./internal/Button\";\nimport { Dropdown, DropdownItem, DropdownTrigger } from \"./internal/Dropdown\";\nimport {\n generateInboxNotificationThreadContents,\n INBOX_NOTIFICATION_THREAD_MAX_COMMENTS,\n InboxNotificationComment,\n} from \"./internal/InboxNotificationThread\";\nimport { List } from \"./internal/List\";\nimport { Room } from \"./internal/Room\";\nimport { Tooltip } from \"./internal/Tooltip\";\nimport { User } from \"./internal/User\";\n\ntype ComponentTypeWithRef<\n T extends keyof JSX.IntrinsicElements,\n P,\n> = ComponentType<P & Pick<ComponentProps<T>, \"ref\">>;\n\ntype InboxNotificationKinds<KS extends KDAD = KDAD> = {\n // For some reason, we cannot directly use KDAD in the mapped type line\n // below, because it will result in '{}' rather than picking up the\n // definition from the user-provided 'ActivitiesData'. Might be an internal\n // TS optimization, so we're making it a param to defer the resolution.\n [K in KS]: ComponentTypeWithRef<\"a\", InboxNotificationCustomKindProps<K>>;\n} & {\n thread: ComponentTypeWithRef<\"a\", InboxNotificationThreadKindProps>;\n textMention: ComponentTypeWithRef<\"a\", InboxNotificationTextMentionKindProps>;\n};\n\ninterface InboxNotificationSharedProps {\n /**\n * How to show or hide the actions.\n */\n showActions?: boolean | \"hover\";\n}\n\nexport interface InboxNotificationProps\n extends Omit<ComponentPropsWithoutRef<\"a\">, \"title\">,\n InboxNotificationSharedProps {\n /**\n * The inbox notification to display.\n */\n inboxNotification: InboxNotificationData;\n\n /**\n * Override specific kinds of inbox notifications.\n */\n kinds?: Partial<InboxNotificationKinds>;\n\n /**\n * Override the component's strings.\n */\n overrides?: Partial<\n GlobalOverrides & InboxNotificationOverrides & CommentOverrides\n >;\n\n /**\n * Override the component's components.\n */\n components?: Partial<GlobalComponents>;\n}\n\nexport interface InboxNotificationThreadProps\n extends Omit<InboxNotificationProps, \"kinds\" | \"children\">,\n InboxNotificationSharedProps {\n /**\n * The inbox notification to display.\n */\n inboxNotification: InboxNotificationThreadData;\n\n /**\n * Whether to show the room name in the title.\n */\n showRoomName?: boolean;\n\n /**\n * Whether to show reactions.\n */\n showReactions?: boolean;\n\n /**\n * Whether to show attachments.\n */\n showAttachments?: boolean;\n}\n\nexport interface InboxNotificationTextMentionProps\n extends Omit<InboxNotificationProps, \"kinds\">,\n InboxNotificationSharedProps {\n /**\n * The inbox notification to display.\n */\n inboxNotification: InboxNotificationTextMentionData;\n\n /**\n * Whether to show the room name in the title.\n */\n showRoomName?: boolean;\n}\n\nexport interface InboxNotificationCustomProps\n extends Omit<InboxNotificationProps, \"kinds\">,\n InboxNotificationSharedProps,\n SlotProp {\n /**\n * The inbox notification to display.\n */\n inboxNotification: InboxNotificationCustomData;\n\n /**\n * The inbox notification's content.\n */\n children: ReactNode;\n\n /**\n * The inbox notification's title.\n */\n title: ReactNode;\n\n /**\n * The inbox notification's aside content.\n * Can be combined with `InboxNotification.Icon` or `InboxNotification.Avatar` to easily follow default styles.\n */\n aside?: ReactNode;\n\n /**\n * Whether to mark the inbox notification as read when clicked.\n */\n markAsReadOnClick?: boolean;\n}\n\nexport type InboxNotificationThreadKindProps = Omit<\n InboxNotificationProps,\n \"kinds\"\n> & {\n inboxNotification: InboxNotificationThreadData;\n};\n\nexport type InboxNotificationTextMentionKindProps = Omit<\n InboxNotificationProps,\n \"kinds\"\n> & {\n inboxNotification: InboxNotificationTextMentionData;\n};\n\nexport type InboxNotificationCustomKindProps<K extends KDAD = KDAD> = Omit<\n InboxNotificationProps,\n \"kinds\"\n> & {\n inboxNotification: InboxNotificationCustomData<K>;\n};\n\ninterface InboxNotificationLayoutProps\n extends Omit<ComponentPropsWithoutRef<\"a\">, \"title\">,\n InboxNotificationSharedProps,\n SlotProp {\n inboxNotification: InboxNotificationData;\n aside: ReactNode;\n title: ReactNode;\n date: Date | string | number;\n unread?: boolean;\n overrides?: Partial<GlobalOverrides & InboxNotificationOverrides>;\n components?: Partial<GlobalComponents>;\n markAsReadOnClick?: boolean;\n}\n\nexport type InboxNotificationIconProps = ComponentProps<\"div\">;\n\nexport type InboxNotificationAvatarProps = AvatarProps;\n\nconst InboxNotificationLayout = forwardRef<\n HTMLAnchorElement,\n InboxNotificationLayoutProps\n>(\n (\n {\n inboxNotification,\n children,\n aside,\n title,\n date,\n unread,\n markAsReadOnClick,\n onClick,\n href,\n showActions,\n overrides,\n components,\n className,\n asChild,\n ...props\n },\n forwardedRef\n ) => {\n const $ = useOverrides(overrides);\n const { Anchor } = useComponents(components);\n const Component = asChild ? Slot : Anchor;\n const [isMoreActionOpen, setMoreActionOpen] = useState(false);\n const markInboxNotificationAsRead = useMarkInboxNotificationAsRead();\n const deleteInboxNotification = useDeleteInboxNotification();\n\n const handleClick = useCallback(\n (event: ReactMouseEvent<HTMLAnchorElement, MouseEvent>) => {\n onClick?.(event);\n\n const shouldMarkAsReadOnClick = markAsReadOnClick ?? Boolean(href);\n\n if (unread && shouldMarkAsReadOnClick) {\n markInboxNotificationAsRead(inboxNotification.id);\n }\n },\n [\n href,\n inboxNotification.id,\n markAsReadOnClick,\n markInboxNotificationAsRead,\n onClick,\n unread,\n ]\n );\n\n const stopPropagation = useCallback((event: SyntheticEvent) => {\n event.stopPropagation();\n }, []);\n\n const preventDefaultAndStopPropagation = useCallback(\n (event: SyntheticEvent) => {\n event.preventDefault();\n event.stopPropagation();\n },\n []\n );\n\n const handleMoreClick = useCallback((event: ReactMouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n setMoreActionOpen((open) => !open);\n }, []);\n\n const handleMarkAsRead = useCallback(() => {\n markInboxNotificationAsRead(inboxNotification.id);\n }, [inboxNotification.id, markInboxNotificationAsRead]);\n\n const handleDelete = useCallback(() => {\n deleteInboxNotification(inboxNotification.id);\n }, [inboxNotification.id, deleteInboxNotification]);\n\n return (\n <TooltipProvider>\n <Component\n className={classNames(\n \"lb-root lb-inbox-notification\",\n showActions === \"hover\" &&\n \"lb-inbox-notification:show-actions-hover\",\n isMoreActionOpen && \"lb-inbox-notification:action-open\",\n className\n )}\n dir={$.dir}\n data-unread={unread ? \"\" : undefined}\n data-kind={inboxNotification.kind}\n onClick={handleClick}\n href={href}\n {...props}\n ref={forwardedRef}\n >\n {aside && <div className=\"lb-inbox-notification-aside\">{aside}</div>}\n <div className=\"lb-inbox-notification-content\">\n <div className=\"lb-inbox-notification-header\">\n <span className=\"lb-inbox-notification-title\">{title}</span>\n <div className=\"lb-inbox-notification-details\">\n <span className=\"lb-inbox-notification-details-labels\">\n <Timestamp\n locale={$.locale}\n date={date}\n className=\"lb-date lb-inbox-notification-date\"\n />\n {unread && (\n <span\n className=\"lb-inbox-notification-unread-indicator\"\n role=\"presentation\"\n />\n )}\n </span>\n </div>\n {showActions && (\n <div className=\"lb-inbox-notification-actions\">\n <Dropdown\n open={isMoreActionOpen}\n onOpenChange={setMoreActionOpen}\n align=\"end\"\n content={\n <>\n {unread ? (\n <DropdownItem\n onSelect={handleMarkAsRead}\n onClick={stopPropagation}\n >\n <CheckIcon className=\"lb-dropdown-item-icon\" />\n {$.INBOX_NOTIFICATION_MARK_AS_READ}\n </DropdownItem>\n ) : null}\n <DropdownItem\n onSelect={handleDelete}\n onClick={stopPropagation}\n >\n <DeleteIcon className=\"lb-dropdown-item-icon\" />\n {$.INBOX_NOTIFICATION_DELETE}\n </DropdownItem>\n </>\n }\n >\n <Tooltip content={$.INBOX_NOTIFICATION_MORE}>\n <DropdownTrigger asChild>\n <Button\n className=\"lb-inbox-notification-action\"\n onClick={handleMoreClick}\n onPointerDown={preventDefaultAndStopPropagation}\n onPointerUp={preventDefaultAndStopPropagation}\n aria-label={$.INBOX_NOTIFICATION_MORE}\n >\n <EllipsisIcon className=\"lb-button-icon\" />\n </Button>\n </DropdownTrigger>\n </Tooltip>\n </Dropdown>\n </div>\n )}\n </div>\n <div className=\"lb-inbox-notification-body\">{children}</div>\n </div>\n </Component>\n </TooltipProvider>\n );\n }\n);\n\nfunction InboxNotificationIcon({\n className,\n ...props\n}: InboxNotificationIconProps) {\n return (\n <div\n className={classNames(\"lb-inbox-notification-icon\", className)}\n {...props}\n />\n );\n}\n\nfunction InboxNotificationAvatar({\n className,\n ...props\n}: InboxNotificationAvatarProps) {\n return (\n <Avatar\n className={classNames(\"lb-inbox-notification-avatar\", className)}\n {...props}\n />\n );\n}\n\n/**\n * Displays a thread inbox notification.\n */\nconst InboxNotificationThread = forwardRef<\n HTMLAnchorElement,\n InboxNotificationThreadProps\n>(\n (\n {\n inboxNotification,\n href,\n showRoomName = true,\n showReactions = true,\n showAttachments = true,\n showActions = \"hover\",\n overrides,\n ...props\n },\n forwardedRef\n ) => {\n const $ = useOverrides(overrides);\n const thread = useInboxNotificationThread(inboxNotification.id);\n const currentUserId = useCurrentUserId();\n // TODO: If you provide `href` (or plan to), we shouldn't run this hook. We should find a way to conditionally run it.\n // Because of batching and the fact that the same hook will be called within <Room /> in the notification's title,\n // it's not a big deal, the only scenario where it would be superfluous would be if the user provides their own\n // `href` AND disables room names in the title via `showRoomName={false}`.\n const { info } = useRoomInfo(inboxNotification.roomId);\n const contents = useMemo(() => {\n const contents = generateInboxNotificationThreadContents(\n inboxNotification,\n thread,\n currentUserId ?? \"\"\n );\n\n if (contents.comments.length === 0 || contents.userIds.length === 0) {\n return null;\n }\n\n switch (contents.type) {\n case \"comments\": {\n const reversedUserIds = [...contents.userIds].reverse();\n const firstUserId = reversedUserIds[0]!;\n\n const aside = <InboxNotificationAvatar userId={firstUserId} />;\n const title = $.INBOX_NOTIFICATION_THREAD_COMMENTS_LIST(\n <List\n values={reversedUserIds.map((userId) => (\n <User key={userId} userId={userId} replaceSelf />\n ))}\n formatRemaining={$.LIST_REMAINING_USERS}\n truncate={INBOX_NOTIFICATION_THREAD_MAX_COMMENTS - 1}\n locale={$.locale}\n />,\n showRoomName ? <Room roomId={thread.roomId} /> : undefined,\n reversedUserIds.length\n );\n const content = (\n <div className=\"lb-inbox-notification-comments\">\n {contents.comments.map((comment) => (\n <InboxNotificationComment\n key={comment.id}\n comment={comment}\n showHeader={contents.comments.length > 1}\n showAttachments={showAttachments}\n showReactions={showReactions}\n overrides={overrides}\n />\n ))}\n </div>\n );\n\n return {\n unread: contents.unread,\n date: contents.date,\n aside,\n title,\n content,\n threadId: thread.id,\n commentId: contents.comments[contents.comments.length - 1]!.id,\n };\n }\n\n case \"mention\": {\n const mentionUserId = contents.userIds[0]!;\n const mentionComment = contents.comments[0]!;\n\n const aside = <InboxNotificationAvatar userId={mentionUserId} />;\n const title = $.INBOX_NOTIFICATION_THREAD_MENTION(\n <User key={mentionUserId} userId={mentionUserId} />,\n showRoomName ? <Room roomId={thread.roomId} /> : undefined\n );\n const content = (\n <div className=\"lb-inbox-notification-comments\">\n <InboxNotificationComment\n key={mentionComment.id}\n comment={mentionComment}\n showHeader={false}\n showAttachments={showAttachments}\n showReactions={showReactions}\n overrides={overrides}\n />\n </div>\n );\n\n return {\n unread: contents.unread,\n date: contents.date,\n aside,\n title,\n content,\n threadId: thread.id,\n commentId: mentionComment.id,\n };\n }\n\n default:\n return assertNever(\n contents,\n \"Unexpected thread inbox notification type\"\n );\n }\n }, [\n $,\n currentUserId,\n inboxNotification,\n overrides,\n showRoomName,\n showAttachments,\n showReactions,\n thread,\n ]);\n // Add the thread ID and comment ID to the `href`.\n // And use URL from `resolveRoomsInfo` if `href` isn't set.\n const resolvedHref = useMemo(() => {\n const resolvedHref = href ?? info?.url;\n\n return resolvedHref\n ? generateURL(resolvedHref, undefined, contents?.commentId)\n : undefined;\n }, [contents?.commentId, href, info?.url]);\n\n if (!contents) {\n return null;\n }\n\n const { aside, title, content, date, unread } = contents;\n\n return (\n <InboxNotificationLayout\n inboxNotification={inboxNotification}\n aside={aside}\n title={title}\n date={date}\n unread={unread}\n overrides={overrides}\n href={resolvedHref}\n showActions={showActions}\n markAsReadOnClick={false}\n {...props}\n ref={forwardedRef}\n >\n {content}\n </InboxNotificationLayout>\n );\n }\n);\n\n/**\n * Displays a text mention notification kind.\n */\nconst InboxNotificationTextMention = forwardRef<\n HTMLAnchorElement,\n InboxNotificationTextMentionProps\n>(\n (\n {\n inboxNotification,\n showActions = \"hover\",\n showRoomName = true,\n overrides,\n ...props\n },\n ref\n ) => {\n const $ = useOverrides(overrides);\n\n const unread = useMemo(() => {\n return (\n !inboxNotification.readAt ||\n inboxNotification.notifiedAt > inboxNotification.readAt\n );\n }, [inboxNotification.notifiedAt, inboxNotification.readAt]);\n\n return (\n <InboxNotificationLayout\n inboxNotification={inboxNotification}\n aside={<InboxNotificationAvatar userId={inboxNotification.createdBy} />}\n title={$.INBOX_NOTIFICATION_TEXT_MENTION(\n <User\n key={inboxNotification.createdBy}\n userId={inboxNotification.createdBy}\n />,\n showRoomName ? <Room roomId={inboxNotification.roomId} /> : undefined\n )}\n date={inboxNotification.notifiedAt}\n unread={unread}\n overrides={overrides}\n showActions={showActions}\n {...props}\n ref={ref}\n />\n );\n }\n);\n\n/**\n * Displays a custom notification kind.\n */\nconst InboxNotificationCustom = forwardRef<\n HTMLAnchorElement,\n InboxNotificationCustomProps\n>(\n (\n {\n inboxNotification,\n showActions = \"hover\",\n title,\n aside,\n children,\n overrides,\n ...props\n },\n forwardedRef\n ) => {\n const unread = useMemo(() => {\n return (\n !inboxNotification.readAt ||\n inboxNotification.notifiedAt > inboxNotification.readAt\n );\n }, [inboxNotification.notifiedAt, inboxNotification.readAt]);\n\n return (\n <InboxNotificationLayout\n inboxNotification={inboxNotification}\n aside={aside}\n title={title}\n date={inboxNotification.notifiedAt}\n unread={unread}\n overrides={overrides}\n showActions={showActions}\n {...props}\n ref={forwardedRef}\n >\n {children}\n </InboxNotificationLayout>\n );\n }\n);\n\nconst InboxNotificationCustomMissing = forwardRef<\n HTMLAnchorElement,\n Omit<InboxNotificationCustomProps, \"children\" | \"title\" | \"aside\">\n>(({ inboxNotification, ...props }, forwardedRef) => {\n return (\n <InboxNotificationCustom\n inboxNotification={inboxNotification}\n {...props}\n title={\n <>\n Custom notification kind <code>{inboxNotification.kind}</code> is not\n handled\n </>\n }\n aside={\n <InboxNotificationIcon>\n <WarningIcon />\n </InboxNotificationIcon>\n }\n ref={forwardedRef}\n data-missing=\"\"\n >\n {/* TODO: Add link to the docs */}\n Notifications of this kind won’t be displayed in production. Use the{\" \"}\n <code>kinds</code> prop to define how they should be rendered.\n </InboxNotificationCustom>\n );\n});\n\n// Keeps track of which inbox notification kinds it has warned about already.\nconst inboxNotificationKindsWarnings: Set<string> = new Set();\n\n/**\n * Displays a single inbox notification.\n *\n * @example\n * <>\n * {inboxNotifications.map((inboxNotification) => (\n * <InboxNotification\n * key={inboxNotification.id}\n * inboxNotification={inboxNotification}\n * href={`/rooms/${inboxNotification.roomId}`\n * />\n * ))}\n * </>\n */\nexport const InboxNotification = Object.assign(\n forwardRef<HTMLAnchorElement, InboxNotificationProps>(\n ({ inboxNotification, kinds, ...props }, forwardedRef) => {\n switch (inboxNotification.kind) {\n case \"thread\": {\n const ResolvedInboxNotificationThread =\n kinds?.thread ?? InboxNotificationThread;\n\n return (\n <ResolvedInboxNotificationThread\n inboxNotification={inboxNotification}\n {...props}\n ref={forwardedRef}\n />\n );\n }\n\n case \"textMention\": {\n const ResolvedInboxNotificationTextMention =\n kinds?.textMention ?? InboxNotificationTextMention;\n\n return (\n <ResolvedInboxNotificationTextMention\n inboxNotification={inboxNotification}\n {...props}\n ref={forwardedRef}\n />\n );\n }\n\n default: {\n const ResolvedInboxNotificationCustom =\n kinds?.[inboxNotification.kind];\n\n if (!ResolvedInboxNotificationCustom) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!inboxNotificationKindsWarnings.has(inboxNotification.kind)) {\n inboxNotificationKindsWarnings.add(inboxNotification.kind);\n // TODO: Add link to the docs\n console.warn(\n `Custom notification kind \"${inboxNotification.kind}\" is not handled so notifications of this kind will not be displayed in production. Use the kinds prop to define how they should be rendered.`\n );\n }\n\n return (\n <InboxNotificationCustomMissing\n inboxNotification={inboxNotification}\n {...props}\n ref={forwardedRef}\n />\n );\n } else {\n // Don't render anything in production if this inbox notification kind is not defined.\n return null;\n }\n }\n\n return (\n <ResolvedInboxNotificationCustom\n inboxNotification={inboxNotification}\n {...props}\n ref={forwardedRef}\n />\n );\n }\n }\n }\n ),\n {\n Thread: InboxNotificationThread,\n TextMention: InboxNotificationTextMention,\n Custom: InboxNotificationCustom,\n Icon: InboxNotificationIcon,\n Avatar: InboxNotificationAvatar,\n }\n);\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuNA;AAAgC;AAK5B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACG;AAIL;AACA;AACA;AACA;AACA;AACA;AAEA;AAAoB;AAEhB;AAEA;AAEA;AACE;AAAgD;AAClD;AACF;AACA;AACE;AACkB;AAClB;AACA;AACA;AACA;AACF;AAGF;AACE;AAAsB;AAGxB;AAAyC;AAErC;AACA;AAAsB;AACxB;AACC;AAGH;AACE;AACA;AACA;AAAiC;AAGnC;AACE;AAAgD;AAGlD;AACE;AAA4C;AAG9C;AAEK;AACY;AACT;AAEE;AACkB;AACpB;AACF;AACO;AACoB;AACE;AACpB;AACT;AACI;AACC;AAEM;AAAc;AACxB;AAAc;AACZ;AAAc;AACZ;AAAe;AACf;AAAc;AACZ;AAAe;AACb;AACW;AACV;AACU;AAGT;AACW;AACL;AAMV;AAAc;AACZ;AACO;AACQ;AACR;AAIC;AACW;AACD;AAER;AAAoB;AAIxB;AACW;AACD;AAER;AAAqB;AAG1B;AAGD;AAAmB;AACjB;AAAuB;AACrB;AACW;AACD;AACM;AACF;AACC;AAEb;AAAuB;AAQrC;AAAc;AAGrB;AAGN;AAEA;AAA+B;AAC7B;AAEF;AACE;AACG;AAC8D;AACzD;AAGV;AAEA;AAAiC;AAC/B;AAEF;AACE;AACG;AACgE;AAC3D;AAGV;AAKA;AAAgC;AAK5B;AACE;AACA;AACe;AACC;AACE;AACJ;AACd;AACG;AAIL;AACA;AACA;AAKA;AACA;AACE;AAAiB;AACf;AACA;AACiB;AAGnB;AACE;AAAO;AAGT;AAAuB;AAEnB;AACA;AAEA;AAAe;AAAgC;AAC/C;AAAgB;AACb;AAEI;AAAU;AAAQ;AAA2B;AAC/C;AACkB;AACgC;AACzC;AACZ;AACgB;AAAoB;AAAa;AACjC;AAElB;AACG;AAAc;AAEV;AACc;AACb;AACuC;AACvC;AACA;AACA;AAMR;AAAO;AACY;AACF;AACf;AACA;AACA;AACiB;AAC2C;AAC9D;AACF;AAGE;AACA;AAEA;AAAe;AAAgC;AAC/C;AAAgB;AACb;AAAU;AAAuB;AAAe;AACjC;AAAoB;AAAa;AAEnD;AACG;AAAc;AACZ;AACqB;AACX;AACG;AACZ;AACA;AACA;AAKN;AAAO;AACY;AACF;AACf;AACA;AACA;AACiB;AACS;AAC5B;AACF;AAGE;AAAO;AACL;AACA;AACF;AACJ;AACC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIF;AACE;AAEA;AAEI;AAGN;AACE;AAAO;AAGT;AAEA;AACG;AACC;AACA;AACA;AACA;AACA;AACA;AACM;AACN;AACmB;AACf;AACC;AAGP;AAGN;AAKA;AAAqC;AAKjC;AACE;AACc;AACC;AACf;AACG;AAIL;AAEA;AACE;AAEmD;AAIrD;AACG;AACC;AACQ;AAAkD;AAAW;AAC5D;AACN;AACwB;AACG;AAC5B;AACgB;AAA+B;AAAa;AAC9D;AACwB;AACxB;AACA;AACA;AACI;AACJ;AACF;AAGN;AAKA;AAAgC;AAK5B;AACE;AACc;AACd;AACA;AACA;AACA;AACG;AAIL;AACE;AAEmD;AAIrD;AACG;AACC;AACA;AACA;AACwB;AACxB;AACA;AACA;AACI;AACC;AAGP;AAGN;AAEA;AAIE;AACG;AACC;AACI;AAKF;AAKA;AAEG;AACQ;AAOnB;AAGA;AAgBO;AAAiC;AACtC;AAEI;AAAgC;AAE5B;AAGA;AACG;AACC;AACI;AACC;AACP;AAEJ;AAGE;AAGA;AACG;AACC;AACI;AACC;AACP;AAEJ;AAGE;AAGA;AACE;AACE;AACE;AAEA;AAAQ;AACyC;AACjD;AAGF;AACG;AACC;AACI;AACC;AACP;AAIF;AAAO;AACT;AAGF;AACG;AACC;AACI;AACC;AACP;AAEJ;AACF;AACF;AACF;AACA;AACU;AACK;AACL;AACF;AACE;AAEZ;;"}
1
+ {"version":3,"file":"InboxNotification.js","sources":["../../src/components/InboxNotification.tsx"],"sourcesContent":["\"use client\";\n\nimport type {\n InboxNotificationCustomData,\n InboxNotificationData,\n InboxNotificationTextMentionData,\n InboxNotificationThreadData,\n KDAD,\n} from \"@liveblocks/core\";\nimport { assertNever, console } from \"@liveblocks/core\";\nimport {\n useDeleteInboxNotification,\n useInboxNotificationThread,\n useMarkInboxNotificationAsRead,\n useRoomInfo,\n} from \"@liveblocks/react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { TooltipProvider } from \"@radix-ui/react-tooltip\";\nimport type {\n ComponentProps,\n ComponentPropsWithoutRef,\n ComponentType,\n MouseEvent as ReactMouseEvent,\n ReactNode,\n SyntheticEvent,\n} from \"react\";\nimport { forwardRef, useCallback, useMemo, useState } from \"react\";\n\nimport type { GlobalComponents } from \"../components\";\nimport { useComponents } from \"../components\";\nimport { CheckIcon } from \"../icons/Check\";\nimport { DeleteIcon } from \"../icons/Delete\";\nimport { EllipsisIcon } from \"../icons/Ellipsis\";\nimport { WarningIcon } from \"../icons/Warning\";\nimport type {\n CommentOverrides,\n GlobalOverrides,\n InboxNotificationOverrides,\n} from \"../overrides\";\nimport { useOverrides } from \"../overrides\";\nimport { Timestamp } from \"../primitives/Timestamp\";\nimport { useCurrentUserId } from \"../shared\";\nimport type { SlotProp } from \"../types\";\nimport { classNames } from \"../utils/class-names\";\nimport { generateURL } from \"../utils/url\";\nimport { Avatar, type AvatarProps } from \"./internal/Avatar\";\nimport { Button } from \"./internal/Button\";\nimport { Dropdown, DropdownItem, DropdownTrigger } from \"./internal/Dropdown\";\nimport {\n generateInboxNotificationThreadContents,\n INBOX_NOTIFICATION_THREAD_MAX_COMMENTS,\n InboxNotificationComment,\n} from \"./internal/InboxNotificationThread\";\nimport { List } from \"./internal/List\";\nimport { Room } from \"./internal/Room\";\nimport { Tooltip } from \"./internal/Tooltip\";\nimport { User } from \"./internal/User\";\n\ntype ComponentTypeWithRef<\n T extends keyof JSX.IntrinsicElements,\n P,\n> = ComponentType<P & Pick<ComponentProps<T>, \"ref\">>;\n\ntype InboxNotificationKinds<KS extends KDAD = KDAD> = {\n // For some reason, we cannot directly use KDAD in the mapped type line\n // below, because it will result in '{}' rather than picking up the\n // definition from the user-provided 'ActivitiesData'. Might be an internal\n // TS optimization, so we're making it a param to defer the resolution.\n [K in KS]: ComponentTypeWithRef<\"a\", InboxNotificationCustomKindProps<K>>;\n} & {\n thread: ComponentTypeWithRef<\"a\", InboxNotificationThreadKindProps>;\n textMention: ComponentTypeWithRef<\"a\", InboxNotificationTextMentionKindProps>;\n};\n\ninterface InboxNotificationSharedProps {\n /**\n * How to show or hide the actions.\n */\n showActions?: boolean | \"hover\";\n}\n\nexport interface InboxNotificationProps\n extends Omit<ComponentPropsWithoutRef<\"a\">, \"title\">,\n InboxNotificationSharedProps {\n /**\n * The inbox notification to display.\n */\n inboxNotification: InboxNotificationData;\n\n /**\n * Override specific kinds of inbox notifications.\n */\n kinds?: Partial<InboxNotificationKinds>;\n\n /**\n * Override the component's strings.\n */\n overrides?: Partial<\n GlobalOverrides & InboxNotificationOverrides & CommentOverrides\n >;\n\n /**\n * Override the component's components.\n */\n components?: Partial<GlobalComponents>;\n}\n\nexport interface InboxNotificationThreadProps\n extends Omit<InboxNotificationProps, \"kinds\" | \"children\">,\n InboxNotificationSharedProps {\n /**\n * The inbox notification to display.\n */\n inboxNotification: InboxNotificationThreadData;\n\n /**\n * Whether to show the room name in the title.\n */\n showRoomName?: boolean;\n\n /**\n * Whether to show reactions.\n */\n showReactions?: boolean;\n\n /**\n * Whether to show attachments.\n */\n showAttachments?: boolean;\n}\n\nexport interface InboxNotificationTextMentionProps\n extends Omit<InboxNotificationProps, \"kinds\">,\n InboxNotificationSharedProps {\n /**\n * The inbox notification to display.\n */\n inboxNotification: InboxNotificationTextMentionData;\n\n /**\n * Whether to show the room name in the title.\n */\n showRoomName?: boolean;\n}\n\nexport interface InboxNotificationCustomProps\n extends Omit<InboxNotificationProps, \"kinds\">,\n InboxNotificationSharedProps,\n SlotProp {\n /**\n * The inbox notification to display.\n */\n inboxNotification: InboxNotificationCustomData;\n\n /**\n * The inbox notification's content.\n */\n children: ReactNode;\n\n /**\n * The inbox notification's title.\n */\n title: ReactNode;\n\n /**\n * The inbox notification's aside content.\n * Can be combined with `InboxNotification.Icon` or `InboxNotification.Avatar` to easily follow default styles.\n */\n aside?: ReactNode;\n\n /**\n * Whether to mark the inbox notification as read when clicked.\n */\n markAsReadOnClick?: boolean;\n}\n\nexport type InboxNotificationThreadKindProps = Omit<\n InboxNotificationProps,\n \"kinds\"\n> & {\n inboxNotification: InboxNotificationThreadData;\n};\n\nexport type InboxNotificationTextMentionKindProps = Omit<\n InboxNotificationProps,\n \"kinds\"\n> & {\n inboxNotification: InboxNotificationTextMentionData;\n};\n\nexport type InboxNotificationCustomKindProps<K extends KDAD = KDAD> = Omit<\n InboxNotificationProps,\n \"kinds\"\n> & {\n inboxNotification: InboxNotificationCustomData<K>;\n};\n\ninterface InboxNotificationLayoutProps\n extends Omit<ComponentPropsWithoutRef<\"a\">, \"title\">,\n InboxNotificationSharedProps,\n SlotProp {\n inboxNotification: InboxNotificationData;\n aside: ReactNode;\n title: ReactNode;\n date: Date | string | number;\n unread?: boolean;\n overrides?: Partial<GlobalOverrides & InboxNotificationOverrides>;\n components?: Partial<GlobalComponents>;\n markAsReadOnClick?: boolean;\n}\n\nexport type InboxNotificationIconProps = ComponentProps<\"div\">;\n\nexport type InboxNotificationAvatarProps = AvatarProps;\n\nconst InboxNotificationLayout = forwardRef<\n HTMLAnchorElement,\n InboxNotificationLayoutProps\n>(\n (\n {\n inboxNotification,\n children,\n aside,\n title,\n date,\n unread,\n markAsReadOnClick,\n onClick,\n href,\n showActions,\n overrides,\n components,\n className,\n asChild,\n ...props\n },\n forwardedRef\n ) => {\n const $ = useOverrides(overrides);\n const { Anchor } = useComponents(components);\n const Component = asChild ? Slot : Anchor;\n const [isMoreActionOpen, setMoreActionOpen] = useState(false);\n const markInboxNotificationAsRead = useMarkInboxNotificationAsRead();\n const deleteInboxNotification = useDeleteInboxNotification();\n\n const handleClick = useCallback(\n (event: ReactMouseEvent<HTMLAnchorElement, MouseEvent>) => {\n onClick?.(event);\n\n const shouldMarkAsReadOnClick = markAsReadOnClick ?? Boolean(href);\n\n if (unread && shouldMarkAsReadOnClick) {\n markInboxNotificationAsRead(inboxNotification.id);\n }\n },\n [\n href,\n inboxNotification.id,\n markAsReadOnClick,\n markInboxNotificationAsRead,\n onClick,\n unread,\n ]\n );\n\n const stopPropagation = useCallback((event: SyntheticEvent) => {\n event.stopPropagation();\n }, []);\n\n const preventDefaultAndStopPropagation = useCallback(\n (event: SyntheticEvent) => {\n event.preventDefault();\n event.stopPropagation();\n },\n []\n );\n\n const handleMoreClick = useCallback((event: ReactMouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n setMoreActionOpen((open) => !open);\n }, []);\n\n const handleMarkAsRead = useCallback(() => {\n markInboxNotificationAsRead(inboxNotification.id);\n }, [inboxNotification.id, markInboxNotificationAsRead]);\n\n const handleDelete = useCallback(() => {\n deleteInboxNotification(inboxNotification.id);\n }, [inboxNotification.id, deleteInboxNotification]);\n\n return (\n <TooltipProvider>\n <Component\n className={classNames(\n \"lb-root lb-inbox-notification\",\n showActions === \"hover\" &&\n \"lb-inbox-notification:show-actions-hover\",\n isMoreActionOpen && \"lb-inbox-notification:action-open\",\n className\n )}\n dir={$.dir}\n data-unread={unread ? \"\" : undefined}\n data-kind={inboxNotification.kind}\n onClick={handleClick}\n href={href}\n {...props}\n ref={forwardedRef}\n >\n {aside && <div className=\"lb-inbox-notification-aside\">{aside}</div>}\n <div className=\"lb-inbox-notification-content\">\n <div className=\"lb-inbox-notification-header\">\n <span className=\"lb-inbox-notification-title\">{title}</span>\n <div className=\"lb-inbox-notification-details\">\n <span className=\"lb-inbox-notification-details-labels\">\n <Timestamp\n locale={$.locale}\n date={date}\n className=\"lb-date lb-inbox-notification-date\"\n />\n {unread && (\n <span\n className=\"lb-inbox-notification-unread-indicator\"\n role=\"presentation\"\n />\n )}\n </span>\n </div>\n {showActions && (\n <div className=\"lb-inbox-notification-actions\">\n <Dropdown\n open={isMoreActionOpen}\n onOpenChange={setMoreActionOpen}\n align=\"end\"\n content={\n <>\n {unread ? (\n <DropdownItem\n onSelect={handleMarkAsRead}\n onClick={stopPropagation}\n >\n <CheckIcon className=\"lb-dropdown-item-icon\" />\n {$.INBOX_NOTIFICATION_MARK_AS_READ}\n </DropdownItem>\n ) : null}\n <DropdownItem\n onSelect={handleDelete}\n onClick={stopPropagation}\n >\n <DeleteIcon className=\"lb-dropdown-item-icon\" />\n {$.INBOX_NOTIFICATION_DELETE}\n </DropdownItem>\n </>\n }\n >\n <Tooltip content={$.INBOX_NOTIFICATION_MORE}>\n <DropdownTrigger asChild>\n <Button\n className=\"lb-inbox-notification-action\"\n onClick={handleMoreClick}\n onPointerDown={preventDefaultAndStopPropagation}\n onPointerUp={preventDefaultAndStopPropagation}\n aria-label={$.INBOX_NOTIFICATION_MORE}\n >\n <EllipsisIcon className=\"lb-button-icon\" />\n </Button>\n </DropdownTrigger>\n </Tooltip>\n </Dropdown>\n </div>\n )}\n </div>\n <div className=\"lb-inbox-notification-body\">{children}</div>\n </div>\n </Component>\n </TooltipProvider>\n );\n }\n);\n\nfunction InboxNotificationIcon({\n className,\n ...props\n}: InboxNotificationIconProps) {\n return (\n <div\n className={classNames(\"lb-inbox-notification-icon\", className)}\n {...props}\n />\n );\n}\n\nfunction InboxNotificationAvatar({\n className,\n ...props\n}: InboxNotificationAvatarProps) {\n return (\n <Avatar\n className={classNames(\"lb-inbox-notification-avatar\", className)}\n {...props}\n />\n );\n}\n\n/**\n * Displays a thread inbox notification.\n */\nconst InboxNotificationThread = forwardRef<\n HTMLAnchorElement,\n InboxNotificationThreadProps\n>(\n (\n {\n inboxNotification,\n href,\n showRoomName = true,\n showReactions = true,\n showAttachments = true,\n showActions = \"hover\",\n overrides,\n ...props\n },\n forwardedRef\n ) => {\n const $ = useOverrides(overrides);\n const thread = useInboxNotificationThread(inboxNotification.id);\n const currentUserId = useCurrentUserId();\n // TODO: If you provide `href` (or plan to), we shouldn't run this hook. We should find a way to conditionally run it.\n // Because of batching and the fact that the same hook will be called within <Room /> in the notification's title,\n // it's not a big deal, the only scenario where it would be superfluous would be if the user provides their own\n // `href` AND disables room names in the title via `showRoomName={false}`.\n const { info } = useRoomInfo(inboxNotification.roomId);\n const contents = useMemo(() => {\n const contents = generateInboxNotificationThreadContents(\n inboxNotification,\n thread,\n currentUserId ?? \"\"\n );\n\n if (contents.comments.length === 0 || contents.userIds.length === 0) {\n return null;\n }\n\n switch (contents.type) {\n case \"comments\": {\n const reversedUserIds = [...contents.userIds].reverse();\n const firstUserId = reversedUserIds[0]!;\n\n const aside = <InboxNotificationAvatar userId={firstUserId} />;\n const title = $.INBOX_NOTIFICATION_THREAD_COMMENTS_LIST(\n <List\n values={reversedUserIds.map((userId) => (\n <User key={userId} userId={userId} replaceSelf />\n ))}\n formatRemaining={$.LIST_REMAINING_USERS}\n truncate={INBOX_NOTIFICATION_THREAD_MAX_COMMENTS - 1}\n locale={$.locale}\n />,\n showRoomName ? <Room roomId={thread.roomId} /> : undefined,\n reversedUserIds.length\n );\n const content = (\n <div className=\"lb-inbox-notification-comments\">\n {contents.comments.map((comment) => (\n <InboxNotificationComment\n key={comment.id}\n comment={comment}\n showHeader={contents.comments.length > 1}\n showAttachments={showAttachments}\n showReactions={showReactions}\n overrides={overrides}\n />\n ))}\n </div>\n );\n\n return {\n unread: contents.unread,\n date: contents.date,\n aside,\n title,\n content,\n threadId: thread.id,\n commentId: contents.comments[contents.comments.length - 1]!.id,\n };\n }\n\n case \"mention\": {\n const mentionUserId = contents.userIds[0]!;\n const mentionComment = contents.comments[0]!;\n\n const aside = <InboxNotificationAvatar userId={mentionUserId} />;\n const title = $.INBOX_NOTIFICATION_THREAD_MENTION(\n <User key={mentionUserId} userId={mentionUserId} />,\n showRoomName ? <Room roomId={thread.roomId} /> : undefined\n );\n const content = (\n <div className=\"lb-inbox-notification-comments\">\n <InboxNotificationComment\n key={mentionComment.id}\n comment={mentionComment}\n showHeader={false}\n showAttachments={showAttachments}\n showReactions={showReactions}\n overrides={overrides}\n />\n </div>\n );\n\n return {\n unread: contents.unread,\n date: contents.date,\n aside,\n title,\n content,\n threadId: thread.id,\n commentId: mentionComment.id,\n };\n }\n\n default:\n return assertNever(\n contents,\n \"Unexpected thread inbox notification type\"\n );\n }\n }, [\n $,\n currentUserId,\n inboxNotification,\n overrides,\n showRoomName,\n showAttachments,\n showReactions,\n thread,\n ]);\n // Add the thread ID and comment ID to the `href`.\n // And use URL from `resolveRoomsInfo` if `href` isn't set.\n const resolvedHref = useMemo(() => {\n const resolvedHref = href ?? info?.url;\n\n return resolvedHref\n ? generateURL(resolvedHref, undefined, contents?.commentId)\n : undefined;\n }, [contents?.commentId, href, info?.url]);\n\n if (!contents) {\n return null;\n }\n\n const { aside, title, content, date, unread } = contents;\n\n return (\n <InboxNotificationLayout\n inboxNotification={inboxNotification}\n aside={aside}\n title={title}\n date={date}\n unread={unread}\n overrides={overrides}\n href={resolvedHref}\n showActions={showActions}\n markAsReadOnClick={false}\n {...props}\n ref={forwardedRef}\n >\n {content}\n </InboxNotificationLayout>\n );\n }\n);\n\n/**\n * Displays a text mention notification kind.\n */\nconst InboxNotificationTextMention = forwardRef<\n HTMLAnchorElement,\n InboxNotificationTextMentionProps\n>(\n (\n {\n inboxNotification,\n showActions = \"hover\",\n showRoomName = true,\n overrides,\n ...props\n },\n ref\n ) => {\n const $ = useOverrides(overrides);\n\n const unread = useMemo(() => {\n return (\n !inboxNotification.readAt ||\n inboxNotification.notifiedAt > inboxNotification.readAt\n );\n }, [inboxNotification.notifiedAt, inboxNotification.readAt]);\n\n return (\n <InboxNotificationLayout\n inboxNotification={inboxNotification}\n aside={<InboxNotificationAvatar userId={inboxNotification.createdBy} />}\n title={$.INBOX_NOTIFICATION_TEXT_MENTION(\n <User\n key={inboxNotification.createdBy}\n userId={inboxNotification.createdBy}\n />,\n showRoomName ? <Room roomId={inboxNotification.roomId} /> : undefined\n )}\n date={inboxNotification.notifiedAt}\n unread={unread}\n overrides={overrides}\n showActions={showActions}\n {...props}\n ref={ref}\n />\n );\n }\n);\n\n/**\n * Displays a custom notification kind.\n */\nconst InboxNotificationCustom = forwardRef<\n HTMLAnchorElement,\n InboxNotificationCustomProps\n>(\n (\n {\n inboxNotification,\n showActions = \"hover\",\n title,\n aside,\n children,\n overrides,\n ...props\n },\n forwardedRef\n ) => {\n const unread = useMemo(() => {\n return (\n !inboxNotification.readAt ||\n inboxNotification.notifiedAt > inboxNotification.readAt\n );\n }, [inboxNotification.notifiedAt, inboxNotification.readAt]);\n\n return (\n <InboxNotificationLayout\n inboxNotification={inboxNotification}\n aside={aside}\n title={title}\n date={inboxNotification.notifiedAt}\n unread={unread}\n overrides={overrides}\n showActions={showActions}\n {...props}\n ref={forwardedRef}\n >\n {children}\n </InboxNotificationLayout>\n );\n }\n);\n\nconst InboxNotificationCustomMissing = forwardRef<\n HTMLAnchorElement,\n Omit<InboxNotificationCustomProps, \"children\" | \"title\" | \"aside\">\n>(({ inboxNotification, ...props }, forwardedRef) => {\n return (\n <InboxNotificationCustom\n inboxNotification={inboxNotification}\n {...props}\n title={\n <>\n Custom notification kind <code>{inboxNotification.kind}</code> is not\n handled\n </>\n }\n aside={\n <InboxNotificationIcon>\n <WarningIcon />\n </InboxNotificationIcon>\n }\n ref={forwardedRef}\n data-missing=\"\"\n >\n {/* TODO: Add link to the docs */}\n Notifications of this kind won’t be displayed in production. Use the{\" \"}\n <code>kinds</code> prop to define how they should be rendered.\n </InboxNotificationCustom>\n );\n});\n\n// Keeps track of which inbox notification kinds it has warned about already.\nconst inboxNotificationKindsWarnings: Set<string> = new Set();\n\n/**\n * Displays a single inbox notification.\n *\n * @example\n * <>\n * {inboxNotifications.map((inboxNotification) => (\n * <InboxNotification\n * key={inboxNotification.id}\n * inboxNotification={inboxNotification}\n * href={`/rooms/${inboxNotification.roomId}`\n * />\n * ))}\n * </>\n */\nexport const InboxNotification = Object.assign(\n forwardRef<HTMLAnchorElement, InboxNotificationProps>(\n ({ inboxNotification, kinds, ...props }, forwardedRef) => {\n switch (inboxNotification.kind) {\n case \"thread\": {\n const ResolvedInboxNotificationThread =\n kinds?.thread ?? InboxNotificationThread;\n\n return (\n <ResolvedInboxNotificationThread\n inboxNotification={inboxNotification}\n {...props}\n ref={forwardedRef}\n />\n );\n }\n\n case \"textMention\": {\n const ResolvedInboxNotificationTextMention =\n kinds?.textMention ?? InboxNotificationTextMention;\n\n return (\n <ResolvedInboxNotificationTextMention\n inboxNotification={inboxNotification}\n {...props}\n ref={forwardedRef}\n />\n );\n }\n\n default: {\n const ResolvedInboxNotificationCustom =\n kinds?.[inboxNotification.kind];\n\n if (!ResolvedInboxNotificationCustom) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!inboxNotificationKindsWarnings.has(inboxNotification.kind)) {\n inboxNotificationKindsWarnings.add(inboxNotification.kind);\n // TODO: Add link to the docs\n console.warn(\n `Custom notification kind \"${inboxNotification.kind}\" is not handled so notifications of this kind will not be displayed in production. Use the kinds prop to define how they should be rendered.`\n );\n }\n\n return (\n <InboxNotificationCustomMissing\n inboxNotification={inboxNotification}\n {...props}\n ref={forwardedRef}\n />\n );\n } else {\n // Don't render anything in production if this inbox notification kind is not defined.\n return null;\n }\n }\n\n return (\n <ResolvedInboxNotificationCustom\n inboxNotification={inboxNotification}\n {...props}\n ref={forwardedRef}\n />\n );\n }\n }\n }\n ),\n {\n Thread: InboxNotificationThread,\n TextMention: InboxNotificationTextMention,\n Custom: InboxNotificationCustom,\n Icon: InboxNotificationIcon,\n Avatar: InboxNotificationAvatar,\n }\n);\n"],"names":["forwardRef","overrides","components","useOverrides","useComponents","Slot","useState","useMarkInboxNotificationAsRead","useDeleteInboxNotification","useCallback","jsx","TooltipProvider","jsxs","classNames","Timestamp","Dropdown","Fragment","DropdownItem","CheckIcon","DeleteIcon","Tooltip","DropdownTrigger","Button","EllipsisIcon","Avatar","useInboxNotificationThread","useCurrentUserId","useRoomInfo","useMemo","contents","generateInboxNotificationThreadContents","aside","title","List","User","INBOX_NOTIFICATION_THREAD_MAX_COMMENTS","Room","content","InboxNotificationComment","assertNever","resolvedHref","generateURL","WarningIcon","console"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- 'use client';
1
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import { assertNever, console } from '@liveblocks/core';
3
3
  import { useMarkInboxNotificationAsRead, useDeleteInboxNotification, useInboxNotificationThread, useRoomInfo } from '@liveblocks/react';
4
4
  import { Slot } from '@radix-ui/react-slot';
5
5
  import { TooltipProvider } from '@radix-ui/react-tooltip';
6
- import React__default, { forwardRef, useState, useCallback, useMemo } from 'react';
6
+ import { forwardRef, useState, useCallback, useMemo } from 'react';
7
7
  import { useComponents } from '../components.mjs';
8
8
  import { CheckIcon } from '../icons/Check.mjs';
9
9
  import { DeleteIcon } from '../icons/Delete.mjs';
@@ -86,78 +86,119 @@ const InboxNotificationLayout = forwardRef(
86
86
  const handleDelete = useCallback(() => {
87
87
  deleteInboxNotification(inboxNotification.id);
88
88
  }, [inboxNotification.id, deleteInboxNotification]);
89
- return /* @__PURE__ */ React__default.createElement(TooltipProvider, null, /* @__PURE__ */ React__default.createElement(Component, {
90
- className: classNames(
91
- "lb-root lb-inbox-notification",
92
- showActions === "hover" && "lb-inbox-notification:show-actions-hover",
93
- isMoreActionOpen && "lb-inbox-notification:action-open",
94
- className
95
- ),
96
- dir: $.dir,
97
- "data-unread": unread ? "" : void 0,
98
- "data-kind": inboxNotification.kind,
99
- onClick: handleClick,
100
- href,
101
- ...props,
102
- ref: forwardedRef
103
- }, aside && /* @__PURE__ */ React__default.createElement("div", {
104
- className: "lb-inbox-notification-aside"
105
- }, aside), /* @__PURE__ */ React__default.createElement("div", {
106
- className: "lb-inbox-notification-content"
107
- }, /* @__PURE__ */ React__default.createElement("div", {
108
- className: "lb-inbox-notification-header"
109
- }, /* @__PURE__ */ React__default.createElement("span", {
110
- className: "lb-inbox-notification-title"
111
- }, title), /* @__PURE__ */ React__default.createElement("div", {
112
- className: "lb-inbox-notification-details"
113
- }, /* @__PURE__ */ React__default.createElement("span", {
114
- className: "lb-inbox-notification-details-labels"
115
- }, /* @__PURE__ */ React__default.createElement(Timestamp, {
116
- locale: $.locale,
117
- date,
118
- className: "lb-date lb-inbox-notification-date"
119
- }), unread && /* @__PURE__ */ React__default.createElement("span", {
120
- className: "lb-inbox-notification-unread-indicator",
121
- role: "presentation"
122
- }))), showActions && /* @__PURE__ */ React__default.createElement("div", {
123
- className: "lb-inbox-notification-actions"
124
- }, /* @__PURE__ */ React__default.createElement(Dropdown, {
125
- open: isMoreActionOpen,
126
- onOpenChange: setMoreActionOpen,
127
- align: "end",
128
- content: /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, unread ? /* @__PURE__ */ React__default.createElement(DropdownItem, {
129
- onSelect: handleMarkAsRead,
130
- onClick: stopPropagation
131
- }, /* @__PURE__ */ React__default.createElement(CheckIcon, {
132
- className: "lb-dropdown-item-icon"
133
- }), $.INBOX_NOTIFICATION_MARK_AS_READ) : null, /* @__PURE__ */ React__default.createElement(DropdownItem, {
134
- onSelect: handleDelete,
135
- onClick: stopPropagation
136
- }, /* @__PURE__ */ React__default.createElement(DeleteIcon, {
137
- className: "lb-dropdown-item-icon"
138
- }), $.INBOX_NOTIFICATION_DELETE))
139
- }, /* @__PURE__ */ React__default.createElement(Tooltip, {
140
- content: $.INBOX_NOTIFICATION_MORE
141
- }, /* @__PURE__ */ React__default.createElement(DropdownMenuTrigger, {
142
- asChild: true
143
- }, /* @__PURE__ */ React__default.createElement(Button, {
144
- className: "lb-inbox-notification-action",
145
- onClick: handleMoreClick,
146
- onPointerDown: preventDefaultAndStopPropagation,
147
- onPointerUp: preventDefaultAndStopPropagation,
148
- "aria-label": $.INBOX_NOTIFICATION_MORE
149
- }, /* @__PURE__ */ React__default.createElement(EllipsisIcon, {
150
- className: "lb-button-icon"
151
- }))))))), /* @__PURE__ */ React__default.createElement("div", {
152
- className: "lb-inbox-notification-body"
153
- }, children))));
89
+ return /* @__PURE__ */ jsx(TooltipProvider, {
90
+ children: /* @__PURE__ */ jsxs(Component, {
91
+ className: classNames(
92
+ "lb-root lb-inbox-notification",
93
+ showActions === "hover" && "lb-inbox-notification:show-actions-hover",
94
+ isMoreActionOpen && "lb-inbox-notification:action-open",
95
+ className
96
+ ),
97
+ dir: $.dir,
98
+ "data-unread": unread ? "" : void 0,
99
+ "data-kind": inboxNotification.kind,
100
+ onClick: handleClick,
101
+ href,
102
+ ...props,
103
+ ref: forwardedRef,
104
+ children: [
105
+ aside && /* @__PURE__ */ jsx("div", {
106
+ className: "lb-inbox-notification-aside",
107
+ children: aside
108
+ }),
109
+ /* @__PURE__ */ jsxs("div", {
110
+ className: "lb-inbox-notification-content",
111
+ children: [
112
+ /* @__PURE__ */ jsxs("div", {
113
+ className: "lb-inbox-notification-header",
114
+ children: [
115
+ /* @__PURE__ */ jsx("span", {
116
+ className: "lb-inbox-notification-title",
117
+ children: title
118
+ }),
119
+ /* @__PURE__ */ jsx("div", {
120
+ className: "lb-inbox-notification-details",
121
+ children: /* @__PURE__ */ jsxs("span", {
122
+ className: "lb-inbox-notification-details-labels",
123
+ children: [
124
+ /* @__PURE__ */ jsx(Timestamp, {
125
+ locale: $.locale,
126
+ date,
127
+ className: "lb-date lb-inbox-notification-date"
128
+ }),
129
+ unread && /* @__PURE__ */ jsx("span", {
130
+ className: "lb-inbox-notification-unread-indicator",
131
+ role: "presentation"
132
+ })
133
+ ]
134
+ })
135
+ }),
136
+ showActions && /* @__PURE__ */ jsx("div", {
137
+ className: "lb-inbox-notification-actions",
138
+ children: /* @__PURE__ */ jsx(Dropdown, {
139
+ open: isMoreActionOpen,
140
+ onOpenChange: setMoreActionOpen,
141
+ align: "end",
142
+ content: /* @__PURE__ */ jsxs(Fragment, {
143
+ children: [
144
+ unread ? /* @__PURE__ */ jsxs(DropdownItem, {
145
+ onSelect: handleMarkAsRead,
146
+ onClick: stopPropagation,
147
+ children: [
148
+ /* @__PURE__ */ jsx(CheckIcon, {
149
+ className: "lb-dropdown-item-icon"
150
+ }),
151
+ $.INBOX_NOTIFICATION_MARK_AS_READ
152
+ ]
153
+ }) : null,
154
+ /* @__PURE__ */ jsxs(DropdownItem, {
155
+ onSelect: handleDelete,
156
+ onClick: stopPropagation,
157
+ children: [
158
+ /* @__PURE__ */ jsx(DeleteIcon, {
159
+ className: "lb-dropdown-item-icon"
160
+ }),
161
+ $.INBOX_NOTIFICATION_DELETE
162
+ ]
163
+ })
164
+ ]
165
+ }),
166
+ children: /* @__PURE__ */ jsx(Tooltip, {
167
+ content: $.INBOX_NOTIFICATION_MORE,
168
+ children: /* @__PURE__ */ jsx(DropdownMenuTrigger, {
169
+ asChild: true,
170
+ children: /* @__PURE__ */ jsx(Button, {
171
+ className: "lb-inbox-notification-action",
172
+ onClick: handleMoreClick,
173
+ onPointerDown: preventDefaultAndStopPropagation,
174
+ onPointerUp: preventDefaultAndStopPropagation,
175
+ "aria-label": $.INBOX_NOTIFICATION_MORE,
176
+ children: /* @__PURE__ */ jsx(EllipsisIcon, {
177
+ className: "lb-button-icon"
178
+ })
179
+ })
180
+ })
181
+ })
182
+ })
183
+ })
184
+ ]
185
+ }),
186
+ /* @__PURE__ */ jsx("div", {
187
+ className: "lb-inbox-notification-body",
188
+ children
189
+ })
190
+ ]
191
+ })
192
+ ]
193
+ })
194
+ });
154
195
  }
155
196
  );
156
197
  function InboxNotificationIcon({
157
198
  className,
158
199
  ...props
159
200
  }) {
160
- return /* @__PURE__ */ React__default.createElement("div", {
201
+ return /* @__PURE__ */ jsx("div", {
161
202
  className: classNames("lb-inbox-notification-icon", className),
162
203
  ...props
163
204
  });
@@ -166,7 +207,7 @@ function InboxNotificationAvatar({
166
207
  className,
167
208
  ...props
168
209
  }) {
169
- return /* @__PURE__ */ React__default.createElement(Avatar, {
210
+ return /* @__PURE__ */ jsx(Avatar, {
170
211
  className: classNames("lb-inbox-notification-avatar", className),
171
212
  ...props
172
213
  });
@@ -199,35 +240,34 @@ const InboxNotificationThread = forwardRef(
199
240
  case "comments": {
200
241
  const reversedUserIds = [...contents2.userIds].reverse();
201
242
  const firstUserId = reversedUserIds[0];
202
- const aside2 = /* @__PURE__ */ React__default.createElement(InboxNotificationAvatar, {
243
+ const aside2 = /* @__PURE__ */ jsx(InboxNotificationAvatar, {
203
244
  userId: firstUserId
204
245
  });
205
246
  const title2 = $.INBOX_NOTIFICATION_THREAD_COMMENTS_LIST(
206
- /* @__PURE__ */ React__default.createElement(List, {
207
- values: reversedUserIds.map((userId) => /* @__PURE__ */ React__default.createElement(User, {
208
- key: userId,
247
+ /* @__PURE__ */ jsx(List, {
248
+ values: reversedUserIds.map((userId) => /* @__PURE__ */ jsx(User, {
209
249
  userId,
210
250
  replaceSelf: true
211
- })),
251
+ }, userId)),
212
252
  formatRemaining: $.LIST_REMAINING_USERS,
213
253
  truncate: INBOX_NOTIFICATION_THREAD_MAX_COMMENTS - 1,
214
254
  locale: $.locale
215
255
  }),
216
- showRoomName ? /* @__PURE__ */ React__default.createElement(Room, {
256
+ showRoomName ? /* @__PURE__ */ jsx(Room, {
217
257
  roomId: thread.roomId
218
258
  }) : void 0,
219
259
  reversedUserIds.length
220
260
  );
221
- const content2 = /* @__PURE__ */ React__default.createElement("div", {
222
- className: "lb-inbox-notification-comments"
223
- }, contents2.comments.map((comment) => /* @__PURE__ */ React__default.createElement(InboxNotificationComment, {
224
- key: comment.id,
225
- comment,
226
- showHeader: contents2.comments.length > 1,
227
- showAttachments,
228
- showReactions,
229
- overrides
230
- })));
261
+ const content2 = /* @__PURE__ */ jsx("div", {
262
+ className: "lb-inbox-notification-comments",
263
+ children: contents2.comments.map((comment) => /* @__PURE__ */ jsx(InboxNotificationComment, {
264
+ comment,
265
+ showHeader: contents2.comments.length > 1,
266
+ showAttachments,
267
+ showReactions,
268
+ overrides
269
+ }, comment.id))
270
+ });
231
271
  return {
232
272
  unread: contents2.unread,
233
273
  date: contents2.date,
@@ -241,28 +281,27 @@ const InboxNotificationThread = forwardRef(
241
281
  case "mention": {
242
282
  const mentionUserId = contents2.userIds[0];
243
283
  const mentionComment = contents2.comments[0];
244
- const aside2 = /* @__PURE__ */ React__default.createElement(InboxNotificationAvatar, {
284
+ const aside2 = /* @__PURE__ */ jsx(InboxNotificationAvatar, {
245
285
  userId: mentionUserId
246
286
  });
247
287
  const title2 = $.INBOX_NOTIFICATION_THREAD_MENTION(
248
- /* @__PURE__ */ React__default.createElement(User, {
249
- key: mentionUserId,
288
+ /* @__PURE__ */ jsx(User, {
250
289
  userId: mentionUserId
251
- }),
252
- showRoomName ? /* @__PURE__ */ React__default.createElement(Room, {
290
+ }, mentionUserId),
291
+ showRoomName ? /* @__PURE__ */ jsx(Room, {
253
292
  roomId: thread.roomId
254
293
  }) : void 0
255
294
  );
256
- const content2 = /* @__PURE__ */ React__default.createElement("div", {
257
- className: "lb-inbox-notification-comments"
258
- }, /* @__PURE__ */ React__default.createElement(InboxNotificationComment, {
259
- key: mentionComment.id,
260
- comment: mentionComment,
261
- showHeader: false,
262
- showAttachments,
263
- showReactions,
264
- overrides
265
- }));
295
+ const content2 = /* @__PURE__ */ jsx("div", {
296
+ className: "lb-inbox-notification-comments",
297
+ children: /* @__PURE__ */ jsx(InboxNotificationComment, {
298
+ comment: mentionComment,
299
+ showHeader: false,
300
+ showAttachments,
301
+ showReactions,
302
+ overrides
303
+ }, mentionComment.id)
304
+ });
266
305
  return {
267
306
  unread: contents2.unread,
268
307
  date: contents2.date,
@@ -297,7 +336,7 @@ const InboxNotificationThread = forwardRef(
297
336
  return null;
298
337
  }
299
338
  const { aside, title, content, date, unread } = contents;
300
- return /* @__PURE__ */ React__default.createElement(InboxNotificationLayout, {
339
+ return /* @__PURE__ */ jsx(InboxNotificationLayout, {
301
340
  inboxNotification,
302
341
  aside,
303
342
  title,
@@ -308,8 +347,9 @@ const InboxNotificationThread = forwardRef(
308
347
  showActions,
309
348
  markAsReadOnClick: false,
310
349
  ...props,
311
- ref: forwardedRef
312
- }, content);
350
+ ref: forwardedRef,
351
+ children: content
352
+ });
313
353
  }
314
354
  );
315
355
  const InboxNotificationTextMention = forwardRef(
@@ -324,17 +364,16 @@ const InboxNotificationTextMention = forwardRef(
324
364
  const unread = useMemo(() => {
325
365
  return !inboxNotification.readAt || inboxNotification.notifiedAt > inboxNotification.readAt;
326
366
  }, [inboxNotification.notifiedAt, inboxNotification.readAt]);
327
- return /* @__PURE__ */ React__default.createElement(InboxNotificationLayout, {
367
+ return /* @__PURE__ */ jsx(InboxNotificationLayout, {
328
368
  inboxNotification,
329
- aside: /* @__PURE__ */ React__default.createElement(InboxNotificationAvatar, {
369
+ aside: /* @__PURE__ */ jsx(InboxNotificationAvatar, {
330
370
  userId: inboxNotification.createdBy
331
371
  }),
332
372
  title: $.INBOX_NOTIFICATION_TEXT_MENTION(
333
- /* @__PURE__ */ React__default.createElement(User, {
334
- key: inboxNotification.createdBy,
373
+ /* @__PURE__ */ jsx(User, {
335
374
  userId: inboxNotification.createdBy
336
- }),
337
- showRoomName ? /* @__PURE__ */ React__default.createElement(Room, {
375
+ }, inboxNotification.createdBy),
376
+ showRoomName ? /* @__PURE__ */ jsx(Room, {
338
377
  roomId: inboxNotification.roomId
339
378
  }) : void 0
340
379
  ),
@@ -360,7 +399,7 @@ const InboxNotificationCustom = forwardRef(
360
399
  const unread = useMemo(() => {
361
400
  return !inboxNotification.readAt || inboxNotification.notifiedAt > inboxNotification.readAt;
362
401
  }, [inboxNotification.notifiedAt, inboxNotification.readAt]);
363
- return /* @__PURE__ */ React__default.createElement(InboxNotificationLayout, {
402
+ return /* @__PURE__ */ jsx(InboxNotificationLayout, {
364
403
  inboxNotification,
365
404
  aside,
366
405
  title,
@@ -369,19 +408,38 @@ const InboxNotificationCustom = forwardRef(
369
408
  overrides,
370
409
  showActions,
371
410
  ...props,
372
- ref: forwardedRef
373
- }, children);
411
+ ref: forwardedRef,
412
+ children
413
+ });
374
414
  }
375
415
  );
376
416
  const InboxNotificationCustomMissing = forwardRef(({ inboxNotification, ...props }, forwardedRef) => {
377
- return /* @__PURE__ */ React__default.createElement(InboxNotificationCustom, {
417
+ return /* @__PURE__ */ jsxs(InboxNotificationCustom, {
378
418
  inboxNotification,
379
419
  ...props,
380
- title: /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, "Custom notification kind ", /* @__PURE__ */ React__default.createElement("code", null, inboxNotification.kind), " is not handled"),
381
- aside: /* @__PURE__ */ React__default.createElement(InboxNotificationIcon, null, /* @__PURE__ */ React__default.createElement(WarningIcon, null)),
420
+ title: /* @__PURE__ */ jsxs(Fragment, {
421
+ children: [
422
+ "Custom notification kind ",
423
+ /* @__PURE__ */ jsx("code", {
424
+ children: inboxNotification.kind
425
+ }),
426
+ " is not handled"
427
+ ]
428
+ }),
429
+ aside: /* @__PURE__ */ jsx(InboxNotificationIcon, {
430
+ children: /* @__PURE__ */ jsx(WarningIcon, {})
431
+ }),
382
432
  ref: forwardedRef,
383
- "data-missing": ""
384
- }, "Notifications of this kind won\u2019t be displayed in production. Use the", " ", /* @__PURE__ */ React__default.createElement("code", null, "kinds"), " prop to define how they should be rendered.");
433
+ "data-missing": "",
434
+ children: [
435
+ "Notifications of this kind won\u2019t be displayed in production. Use the",
436
+ " ",
437
+ /* @__PURE__ */ jsx("code", {
438
+ children: "kinds"
439
+ }),
440
+ " prop to define how they should be rendered."
441
+ ]
442
+ });
385
443
  });
386
444
  const inboxNotificationKindsWarnings = /* @__PURE__ */ new Set();
387
445
  const InboxNotification = Object.assign(
@@ -390,7 +448,7 @@ const InboxNotification = Object.assign(
390
448
  switch (inboxNotification.kind) {
391
449
  case "thread": {
392
450
  const ResolvedInboxNotificationThread = kinds?.thread ?? InboxNotificationThread;
393
- return /* @__PURE__ */ React__default.createElement(ResolvedInboxNotificationThread, {
451
+ return /* @__PURE__ */ jsx(ResolvedInboxNotificationThread, {
394
452
  inboxNotification,
395
453
  ...props,
396
454
  ref: forwardedRef
@@ -398,7 +456,7 @@ const InboxNotification = Object.assign(
398
456
  }
399
457
  case "textMention": {
400
458
  const ResolvedInboxNotificationTextMention = kinds?.textMention ?? InboxNotificationTextMention;
401
- return /* @__PURE__ */ React__default.createElement(ResolvedInboxNotificationTextMention, {
459
+ return /* @__PURE__ */ jsx(ResolvedInboxNotificationTextMention, {
402
460
  inboxNotification,
403
461
  ...props,
404
462
  ref: forwardedRef
@@ -414,7 +472,7 @@ const InboxNotification = Object.assign(
414
472
  `Custom notification kind "${inboxNotification.kind}" is not handled so notifications of this kind will not be displayed in production. Use the kinds prop to define how they should be rendered.`
415
473
  );
416
474
  }
417
- return /* @__PURE__ */ React__default.createElement(InboxNotificationCustomMissing, {
475
+ return /* @__PURE__ */ jsx(InboxNotificationCustomMissing, {
418
476
  inboxNotification,
419
477
  ...props,
420
478
  ref: forwardedRef
@@ -423,7 +481,7 @@ const InboxNotification = Object.assign(
423
481
  return null;
424
482
  }
425
483
  }
426
- return /* @__PURE__ */ React__default.createElement(ResolvedInboxNotificationCustom, {
484
+ return /* @__PURE__ */ jsx(ResolvedInboxNotificationCustom, {
427
485
  inboxNotification,
428
486
  ...props,
429
487
  ref: forwardedRef