@liveblocks/react-ui 2.14.0 → 2.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (272) hide show
  1. package/dist/_private/index.d.mts +24 -22
  2. package/dist/_private/index.d.ts +24 -22
  3. package/dist/_private/index.js +1 -0
  4. package/dist/_private/index.js.map +1 -1
  5. package/dist/_private/index.mjs +1 -0
  6. package/dist/_private/index.mjs.map +1 -1
  7. package/dist/components/Comment.js +358 -256
  8. package/dist/components/Comment.js.map +1 -1
  9. package/dist/components/Comment.mjs +334 -232
  10. package/dist/components/Comment.mjs.map +1 -1
  11. package/dist/components/Composer.js +308 -225
  12. package/dist/components/Composer.js.map +1 -1
  13. package/dist/components/Composer.mjs +288 -206
  14. package/dist/components/Composer.mjs.map +1 -1
  15. package/dist/components/HistoryVersionSummary.js +28 -32
  16. package/dist/components/HistoryVersionSummary.js.map +1 -1
  17. package/dist/components/HistoryVersionSummary.mjs +27 -31
  18. package/dist/components/HistoryVersionSummary.mjs.map +1 -1
  19. package/dist/components/HistoryVersionSummaryList.js +11 -9
  20. package/dist/components/HistoryVersionSummaryList.js.map +1 -1
  21. package/dist/components/HistoryVersionSummaryList.mjs +10 -8
  22. package/dist/components/HistoryVersionSummaryList.mjs.map +1 -1
  23. package/dist/components/InboxNotification.js +202 -143
  24. package/dist/components/InboxNotification.js.map +1 -1
  25. package/dist/components/InboxNotification.mjs +180 -121
  26. package/dist/components/InboxNotification.mjs.map +1 -1
  27. package/dist/components/InboxNotificationList.js +19 -14
  28. package/dist/components/InboxNotificationList.js.map +1 -1
  29. package/dist/components/InboxNotificationList.mjs +17 -12
  30. package/dist/components/InboxNotificationList.mjs.map +1 -1
  31. package/dist/components/Thread.js +104 -86
  32. package/dist/components/Thread.js.map +1 -1
  33. package/dist/components/Thread.mjs +93 -75
  34. package/dist/components/Thread.mjs.map +1 -1
  35. package/dist/components/internal/Attachment.js +161 -113
  36. package/dist/components/internal/Attachment.js.map +1 -1
  37. package/dist/components/internal/Attachment.mjs +150 -102
  38. package/dist/components/internal/Attachment.mjs.map +1 -1
  39. package/dist/components/internal/Attribution.js +15 -13
  40. package/dist/components/internal/Attribution.js.map +1 -1
  41. package/dist/components/internal/Attribution.mjs +15 -13
  42. package/dist/components/internal/Attribution.mjs.map +1 -1
  43. package/dist/components/internal/Avatar.js +27 -20
  44. package/dist/components/internal/Avatar.js.map +1 -1
  45. package/dist/components/internal/Avatar.mjs +23 -16
  46. package/dist/components/internal/Avatar.mjs.map +1 -1
  47. package/dist/components/internal/Button.js +5 -4
  48. package/dist/components/internal/Button.js.map +1 -1
  49. package/dist/components/internal/Button.mjs +4 -3
  50. package/dist/components/internal/Button.mjs.map +1 -1
  51. package/dist/components/internal/Dropdown.js +27 -19
  52. package/dist/components/internal/Dropdown.js.map +1 -1
  53. package/dist/components/internal/Dropdown.mjs +26 -18
  54. package/dist/components/internal/Dropdown.mjs.map +1 -1
  55. package/dist/components/internal/Emoji.js +4 -3
  56. package/dist/components/internal/Emoji.js.map +1 -1
  57. package/dist/components/internal/Emoji.mjs +3 -2
  58. package/dist/components/internal/Emoji.mjs.map +1 -1
  59. package/dist/components/internal/EmojiPicker.js +96 -72
  60. package/dist/components/internal/EmojiPicker.js.map +1 -1
  61. package/dist/components/internal/EmojiPicker.mjs +90 -66
  62. package/dist/components/internal/EmojiPicker.mjs.map +1 -1
  63. package/dist/components/internal/Icon.js +5 -4
  64. package/dist/components/internal/Icon.js.map +1 -1
  65. package/dist/components/internal/Icon.mjs +5 -4
  66. package/dist/components/internal/Icon.mjs.map +1 -1
  67. package/dist/components/internal/InboxNotificationThread.js +53 -38
  68. package/dist/components/internal/InboxNotificationThread.js.map +1 -1
  69. package/dist/components/internal/InboxNotificationThread.mjs +53 -38
  70. package/dist/components/internal/InboxNotificationThread.mjs.map +1 -1
  71. package/dist/components/internal/List.js +8 -6
  72. package/dist/components/internal/List.js.map +1 -1
  73. package/dist/components/internal/List.mjs +6 -4
  74. package/dist/components/internal/List.mjs.map +1 -1
  75. package/dist/components/internal/Room.js +8 -6
  76. package/dist/components/internal/Room.js.map +1 -1
  77. package/dist/components/internal/Room.mjs +7 -5
  78. package/dist/components/internal/Room.mjs.map +1 -1
  79. package/dist/components/internal/Tooltip.js +49 -33
  80. package/dist/components/internal/Tooltip.js.map +1 -1
  81. package/dist/components/internal/Tooltip.mjs +46 -30
  82. package/dist/components/internal/Tooltip.mjs.map +1 -1
  83. package/dist/components/internal/User.js +8 -6
  84. package/dist/components/internal/User.js.map +1 -1
  85. package/dist/components/internal/User.mjs +7 -5
  86. package/dist/components/internal/User.mjs.map +1 -1
  87. package/dist/components.js +12 -29
  88. package/dist/components.js.map +1 -1
  89. package/dist/components.mjs +6 -5
  90. package/dist/components.mjs.map +1 -1
  91. package/dist/config.js +16 -12
  92. package/dist/config.js.map +1 -1
  93. package/dist/config.mjs +13 -9
  94. package/dist/config.mjs.map +1 -1
  95. package/dist/icons/ArrowDown.js +7 -6
  96. package/dist/icons/ArrowDown.js.map +1 -1
  97. package/dist/icons/ArrowDown.mjs +7 -6
  98. package/dist/icons/ArrowDown.mjs.map +1 -1
  99. package/dist/icons/ArrowUp.js +7 -6
  100. package/dist/icons/ArrowUp.js.map +1 -1
  101. package/dist/icons/ArrowUp.mjs +7 -6
  102. package/dist/icons/ArrowUp.mjs.map +1 -1
  103. package/dist/icons/Attachment.js +7 -6
  104. package/dist/icons/Attachment.js.map +1 -1
  105. package/dist/icons/Attachment.mjs +7 -6
  106. package/dist/icons/Attachment.mjs.map +1 -1
  107. package/dist/icons/Bold.js +7 -6
  108. package/dist/icons/Bold.js.map +1 -1
  109. package/dist/icons/Bold.mjs +7 -6
  110. package/dist/icons/Bold.mjs.map +1 -1
  111. package/dist/icons/Check.js +7 -6
  112. package/dist/icons/Check.js.map +1 -1
  113. package/dist/icons/Check.mjs +7 -6
  114. package/dist/icons/Check.mjs.map +1 -1
  115. package/dist/icons/Code.js +7 -6
  116. package/dist/icons/Code.js.map +1 -1
  117. package/dist/icons/Code.mjs +7 -6
  118. package/dist/icons/Code.mjs.map +1 -1
  119. package/dist/icons/Cross.js +12 -8
  120. package/dist/icons/Cross.js.map +1 -1
  121. package/dist/icons/Cross.mjs +12 -8
  122. package/dist/icons/Cross.mjs.map +1 -1
  123. package/dist/icons/Delete.js +7 -6
  124. package/dist/icons/Delete.js.map +1 -1
  125. package/dist/icons/Delete.mjs +7 -6
  126. package/dist/icons/Delete.mjs.map +1 -1
  127. package/dist/icons/Edit.js +7 -6
  128. package/dist/icons/Edit.js.map +1 -1
  129. package/dist/icons/Edit.mjs +7 -6
  130. package/dist/icons/Edit.mjs.map +1 -1
  131. package/dist/icons/Ellipsis.js +21 -16
  132. package/dist/icons/Ellipsis.js.map +1 -1
  133. package/dist/icons/Ellipsis.mjs +21 -16
  134. package/dist/icons/Ellipsis.mjs.map +1 -1
  135. package/dist/icons/Emoji.js +25 -18
  136. package/dist/icons/Emoji.js.map +1 -1
  137. package/dist/icons/Emoji.mjs +25 -18
  138. package/dist/icons/Emoji.mjs.map +1 -1
  139. package/dist/icons/EmojiAdd.js +28 -20
  140. package/dist/icons/EmojiAdd.js.map +1 -1
  141. package/dist/icons/EmojiAdd.mjs +28 -20
  142. package/dist/icons/EmojiAdd.mjs.map +1 -1
  143. package/dist/icons/Italic.js +7 -6
  144. package/dist/icons/Italic.js.map +1 -1
  145. package/dist/icons/Italic.mjs +7 -6
  146. package/dist/icons/Italic.mjs.map +1 -1
  147. package/dist/icons/Mention.js +12 -8
  148. package/dist/icons/Mention.js.map +1 -1
  149. package/dist/icons/Mention.mjs +12 -8
  150. package/dist/icons/Mention.mjs.map +1 -1
  151. package/dist/icons/Resolve.js +14 -10
  152. package/dist/icons/Resolve.js.map +1 -1
  153. package/dist/icons/Resolve.mjs +14 -10
  154. package/dist/icons/Resolve.mjs.map +1 -1
  155. package/dist/icons/Resolved.js +16 -12
  156. package/dist/icons/Resolved.js.map +1 -1
  157. package/dist/icons/Resolved.mjs +16 -12
  158. package/dist/icons/Resolved.mjs.map +1 -1
  159. package/dist/icons/Restore.js +12 -8
  160. package/dist/icons/Restore.js.map +1 -1
  161. package/dist/icons/Restore.mjs +12 -8
  162. package/dist/icons/Restore.mjs.map +1 -1
  163. package/dist/icons/Search.js +7 -6
  164. package/dist/icons/Search.js.map +1 -1
  165. package/dist/icons/Search.mjs +7 -6
  166. package/dist/icons/Search.mjs.map +1 -1
  167. package/dist/icons/Send.js +7 -6
  168. package/dist/icons/Send.js.map +1 -1
  169. package/dist/icons/Send.mjs +7 -6
  170. package/dist/icons/Send.mjs.map +1 -1
  171. package/dist/icons/Spinner.js +8 -7
  172. package/dist/icons/Spinner.js.map +1 -1
  173. package/dist/icons/Spinner.mjs +8 -7
  174. package/dist/icons/Spinner.mjs.map +1 -1
  175. package/dist/icons/Strikethrough.js +7 -6
  176. package/dist/icons/Strikethrough.js.map +1 -1
  177. package/dist/icons/Strikethrough.mjs +7 -6
  178. package/dist/icons/Strikethrough.mjs.map +1 -1
  179. package/dist/icons/Warning.js +14 -10
  180. package/dist/icons/Warning.js.map +1 -1
  181. package/dist/icons/Warning.mjs +14 -10
  182. package/dist/icons/Warning.mjs.map +1 -1
  183. package/dist/icons/index.js +42 -0
  184. package/dist/icons/index.js.map +1 -0
  185. package/dist/icons/index.mjs +19 -0
  186. package/dist/icons/index.mjs.map +1 -0
  187. package/dist/index.d.mts +14 -12
  188. package/dist/index.d.ts +14 -12
  189. package/dist/overrides.js +65 -36
  190. package/dist/overrides.js.map +1 -1
  191. package/dist/overrides.mjs +59 -12
  192. package/dist/overrides.mjs.map +1 -1
  193. package/dist/primitives/Comment/index.js +75 -66
  194. package/dist/primitives/Comment/index.js.map +1 -1
  195. package/dist/primitives/Comment/index.mjs +71 -62
  196. package/dist/primitives/Comment/index.mjs.map +1 -1
  197. package/dist/primitives/Composer/contexts.js +11 -11
  198. package/dist/primitives/Composer/index.js +343 -284
  199. package/dist/primitives/Composer/index.js.map +1 -1
  200. package/dist/primitives/Composer/index.mjs +262 -203
  201. package/dist/primitives/Composer/index.mjs.map +1 -1
  202. package/dist/primitives/Composer/utils.js +20 -21
  203. package/dist/primitives/Composer/utils.js.map +1 -1
  204. package/dist/primitives/Composer/utils.mjs +4 -5
  205. package/dist/primitives/Composer/utils.mjs.map +1 -1
  206. package/dist/primitives/EmojiPicker/contexts.js +3 -3
  207. package/dist/primitives/EmojiPicker/index.js +160 -142
  208. package/dist/primitives/EmojiPicker/index.js.map +1 -1
  209. package/dist/primitives/EmojiPicker/index.mjs +122 -104
  210. package/dist/primitives/EmojiPicker/index.mjs.map +1 -1
  211. package/dist/primitives/FileSize.js +9 -7
  212. package/dist/primitives/FileSize.js.map +1 -1
  213. package/dist/primitives/FileSize.mjs +7 -5
  214. package/dist/primitives/FileSize.mjs.map +1 -1
  215. package/dist/primitives/Timestamp.js +12 -10
  216. package/dist/primitives/Timestamp.js.map +1 -1
  217. package/dist/primitives/Timestamp.mjs +7 -5
  218. package/dist/primitives/Timestamp.mjs.map +1 -1
  219. package/dist/primitives/index.d.mts +24 -23
  220. package/dist/primitives/index.d.ts +24 -23
  221. package/dist/primitives/internal/Emoji.js +7 -5
  222. package/dist/primitives/internal/Emoji.js.map +1 -1
  223. package/dist/primitives/internal/Emoji.mjs +6 -4
  224. package/dist/primitives/internal/Emoji.mjs.map +1 -1
  225. package/dist/shared.js +2 -7
  226. package/dist/shared.js.map +1 -1
  227. package/dist/shared.mjs +2 -7
  228. package/dist/shared.mjs.map +1 -1
  229. package/dist/slate/plugins/auto-links.mjs +1 -1
  230. package/dist/slate/plugins/custom-links.mjs +1 -1
  231. package/dist/slate/plugins/mentions.mjs +1 -1
  232. package/dist/utils/Persist.js +19 -18
  233. package/dist/utils/Persist.js.map +1 -1
  234. package/dist/utils/Persist.mjs +7 -6
  235. package/dist/utils/Persist.mjs.map +1 -1
  236. package/dist/utils/Portal.js +5 -4
  237. package/dist/utils/Portal.js.map +1 -1
  238. package/dist/utils/Portal.mjs +4 -3
  239. package/dist/utils/Portal.mjs.map +1 -1
  240. package/dist/utils/use-controllable-state.js +5 -5
  241. package/dist/utils/use-index.js +7 -7
  242. package/dist/utils/use-initial.js +2 -2
  243. package/dist/utils/use-interval.js +4 -4
  244. package/dist/utils/use-latest.js +3 -3
  245. package/dist/utils/use-observable.js +2 -2
  246. package/dist/utils/use-refs.js +2 -2
  247. package/dist/utils/use-rerender.js +2 -2
  248. package/dist/utils/use-visible.js +24 -2
  249. package/dist/utils/use-visible.js.map +1 -1
  250. package/dist/utils/use-visible.mjs +23 -2
  251. package/dist/utils/use-visible.mjs.map +1 -1
  252. package/dist/utils/use-window-focus.js +2 -2
  253. package/dist/utils/use-window-focus.js.map +1 -1
  254. package/dist/utils/use-window-focus.mjs +1 -1
  255. package/dist/utils/use-window-focus.mjs.map +1 -1
  256. package/dist/version.js +2 -2
  257. package/dist/version.js.map +1 -1
  258. package/dist/version.mjs +2 -2
  259. package/dist/version.mjs.map +1 -1
  260. package/package.json +10 -25
  261. package/dist/utils/use-id.js +0 -29
  262. package/dist/utils/use-id.js.map +0 -1
  263. package/dist/utils/use-id.mjs +0 -27
  264. package/dist/utils/use-id.mjs.map +0 -1
  265. package/dist/utils/use-layout-effect.js +0 -8
  266. package/dist/utils/use-layout-effect.js.map +0 -1
  267. package/dist/utils/use-layout-effect.mjs +0 -6
  268. package/dist/utils/use-layout-effect.mjs.map +0 -1
  269. package/dist/utils/use-transition.js +0 -16
  270. package/dist/utils/use-transition.js.map +0 -1
  271. package/dist/utils/use-transition.mjs +0 -14
  272. package/dist/utils/use-transition.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"InboxNotification.mjs","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.mjs","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":["DropdownTrigger","contents","aside","title","content","resolvedHref"],"mappings":"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"}
@@ -1,35 +1,40 @@
1
- 'use client';
2
1
  'use strict';
3
2
 
4
- var React = require('react');
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var react = require('react');
5
5
  var classNames = require('../utils/class-names.js');
6
6
  var useVisible = require('../utils/use-visible.js');
7
7
 
8
+ "use client";
8
9
  function ReachEndMarker({
9
10
  enabled,
10
11
  onReachEnd
11
12
  }) {
12
- const markerRef = React.useRef(null);
13
+ const markerRef = react.useRef(null);
13
14
  useVisible.useVisibleCallback(markerRef, onReachEnd, {
14
15
  enabled
15
16
  });
16
- return /* @__PURE__ */ React.createElement("div", {
17
+ return /* @__PURE__ */ jsxRuntime.jsx("div", {
17
18
  ref: markerRef,
18
19
  style: { height: 0 }
19
20
  });
20
21
  }
21
- const InboxNotificationList = React.forwardRef(({ onReachEnd, children, className, ...props }, forwardedRef) => {
22
- return /* @__PURE__ */ React.createElement("ol", {
22
+ const InboxNotificationList = react.forwardRef(({ onReachEnd, children, className, ...props }, forwardedRef) => {
23
+ return /* @__PURE__ */ jsxRuntime.jsxs("ol", {
23
24
  className: classNames.classNames("lb-root lb-inbox-notification-list", className),
24
25
  ...props,
25
- ref: forwardedRef
26
- }, React.Children.map(children, (child, index) => /* @__PURE__ */ React.createElement("li", {
27
- key: index,
28
- className: "lb-inbox-notification-list-item"
29
- }, child)), onReachEnd && /* @__PURE__ */ React.createElement(ReachEndMarker, {
30
- onReachEnd,
31
- enabled: React.Children.count(children) > 0
32
- }));
26
+ ref: forwardedRef,
27
+ children: [
28
+ react.Children.map(children, (child, index) => /* @__PURE__ */ jsxRuntime.jsx("li", {
29
+ className: "lb-inbox-notification-list-item",
30
+ children: child
31
+ }, index)),
32
+ onReachEnd && /* @__PURE__ */ jsxRuntime.jsx(ReachEndMarker, {
33
+ onReachEnd,
34
+ enabled: react.Children.count(children) > 0
35
+ })
36
+ ]
37
+ });
33
38
  });
34
39
 
35
40
  exports.InboxNotificationList = InboxNotificationList;
@@ -1 +1 @@
1
- {"version":3,"file":"InboxNotificationList.js","sources":["../../src/components/InboxNotificationList.tsx"],"sourcesContent":["\"use client\";\n\nimport type { ComponentPropsWithoutRef } from \"react\";\nimport React, { Children, forwardRef, useRef } from \"react\";\n\nimport { classNames } from \"../utils/class-names\";\nimport { useVisibleCallback } from \"../utils/use-visible\";\n\nexport interface InboxNotificationListProps\n extends ComponentPropsWithoutRef<\"ol\"> {\n /**\n * This API is *EXPERIMENTAL* and likely not going to be the final API. Do\n * not rely on it.\n *\n * @private\n */\n onReachEnd?: () => void;\n}\n\nfunction ReachEndMarker({\n enabled,\n onReachEnd,\n}: {\n enabled: boolean;\n onReachEnd: () => void;\n}) {\n const markerRef = useRef<HTMLDivElement>(null);\n\n useVisibleCallback(markerRef, onReachEnd, {\n enabled,\n });\n\n return <div ref={markerRef} style={{ height: 0 }} />;\n}\n\n/**\n * Displays inbox notifications as a list.\n *\n * @example\n * <InboxNotificationList>\n * {inboxNotifications.map((inboxNotification) => (\n * <InboxNotification key={inboxNotification.id} inboxNotification={inboxNotification} />\n * ))}\n * </InboxNotificationList>\n */\nexport const InboxNotificationList = forwardRef<\n HTMLOListElement,\n InboxNotificationListProps\n>(({ onReachEnd, children, className, ...props }, forwardedRef) => {\n return (\n <ol\n className={classNames(\"lb-root lb-inbox-notification-list\", className)}\n {...props}\n ref={forwardedRef}\n >\n {Children.map(children, (child, index) => (\n <li key={index} className=\"lb-inbox-notification-list-item\">\n {child}\n </li>\n ))}\n {/* Render an invisible marker at the end which is tied to an IntersectionObserver to be alerted when the end of the list has been reached */}\n {onReachEnd && (\n <ReachEndMarker\n onReachEnd={onReachEnd}\n enabled={Children.count(children) > 0}\n />\n )}\n </ol>\n );\n});\n"],"names":[],"mappings":";;;;;;;AAmBA;AAAwB;AACtB;AAEF;AAIE;AAEA;AAA0C;AACxC;AAGF;AAAQ;AAAS;AAA8B;AACjD;AAYa;AAIX;AACG;AACsE;AACjE;AACC;AAGF;AAAQ;AAAiB;AAMzB;AACC;AACoC;AAK9C;;"}
1
+ {"version":3,"file":"InboxNotificationList.js","sources":["../../src/components/InboxNotificationList.tsx"],"sourcesContent":["\"use client\";\n\nimport type { ComponentPropsWithoutRef } from \"react\";\nimport { Children, forwardRef, useRef } from \"react\";\n\nimport { classNames } from \"../utils/class-names\";\nimport { useVisibleCallback } from \"../utils/use-visible\";\n\nexport interface InboxNotificationListProps\n extends ComponentPropsWithoutRef<\"ol\"> {\n /**\n * This API is *EXPERIMENTAL* and likely not going to be the final API. Do\n * not rely on it.\n *\n * @private\n */\n onReachEnd?: () => void;\n}\n\nfunction ReachEndMarker({\n enabled,\n onReachEnd,\n}: {\n enabled: boolean;\n onReachEnd: () => void;\n}) {\n const markerRef = useRef<HTMLDivElement>(null);\n\n useVisibleCallback(markerRef, onReachEnd, {\n enabled,\n });\n\n return <div ref={markerRef} style={{ height: 0 }} />;\n}\n\n/**\n * Displays inbox notifications as a list.\n *\n * @example\n * <InboxNotificationList>\n * {inboxNotifications.map((inboxNotification) => (\n * <InboxNotification key={inboxNotification.id} inboxNotification={inboxNotification} />\n * ))}\n * </InboxNotificationList>\n */\nexport const InboxNotificationList = forwardRef<\n HTMLOListElement,\n InboxNotificationListProps\n>(({ onReachEnd, children, className, ...props }, forwardedRef) => {\n return (\n <ol\n className={classNames(\"lb-root lb-inbox-notification-list\", className)}\n {...props}\n ref={forwardedRef}\n >\n {Children.map(children, (child, index) => (\n <li key={index} className=\"lb-inbox-notification-list-item\">\n {child}\n </li>\n ))}\n {/* Render an invisible marker at the end which is tied to an IntersectionObserver to be alerted when the end of the list has been reached */}\n {onReachEnd && (\n <ReachEndMarker\n onReachEnd={onReachEnd}\n enabled={Children.count(children) > 0}\n />\n )}\n </ol>\n );\n});\n"],"names":["useRef","useVisibleCallback","jsx","forwardRef","jsxs","classNames","Children"],"mappings":";;;;;;;AAAA,YAAA,CAAA;AAmBA,SAAS,cAAe,CAAA;AAAA,EACtB,OAAA;AAAA,EACA,UAAA;AACF,CAGG,EAAA;AACD,EAAM,MAAA,SAAA,GAAYA,aAAuB,IAAI,CAAA,CAAA;AAE7C,EAAAC,6BAAA,CAAmB,WAAW,UAAY,EAAA;AAAA,IACxC,OAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAA,uBAAQC,cAAA,CAAA,KAAA,EAAA;AAAA,IAAI,GAAK,EAAA,SAAA;AAAA,IAAW,KAAA,EAAO,EAAE,MAAA,EAAQ,CAAE,EAAA;AAAA,GAAG,CAAA,CAAA;AACpD,CAAA;AAYa,MAAA,qBAAA,GAAwBC,iBAGnC,CAAC,EAAE,YAAY,QAAU,EAAA,SAAA,EAAA,GAAc,KAAM,EAAA,EAAG,YAAiB,KAAA;AACjE,EAAA,uBACGC,eAAA,CAAA,IAAA,EAAA;AAAA,IACC,SAAA,EAAWC,qBAAW,CAAA,oCAAA,EAAsC,SAAS,CAAA;AAAA,IACpE,GAAG,KAAA;AAAA,IACJ,GAAK,EAAA,YAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,MAAAC,cAAA,CAAS,GAAI,CAAA,QAAA,EAAU,CAAC,KAAA,EAAO,0BAC7BJ,cAAA,CAAA,IAAA,EAAA;AAAA,QAAe,SAAU,EAAA,iCAAA;AAAA,QACvB,QAAA,EAAA,KAAA;AAAA,OAAA,EADM,KAET,CACD,CAAA;AAAA,MAEA,8BACEA,cAAA,CAAA,cAAA,EAAA;AAAA,QACC,UAAA;AAAA,QACA,OAAS,EAAAI,cAAA,CAAS,KAAM,CAAA,QAAQ,CAAI,GAAA,CAAA;AAAA,OACtC,CAAA;AAAA,KAAA;AAAA,GAEJ,CAAA,CAAA;AAEJ,CAAC;;;;"}
@@ -1,8 +1,9 @@
1
- 'use client';
2
- import React__default, { forwardRef, Children, useRef } from 'react';
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { useRef, forwardRef, Children } from 'react';
3
3
  import { classNames } from '../utils/class-names.mjs';
4
4
  import { useVisibleCallback } from '../utils/use-visible.mjs';
5
5
 
6
+ "use client";
6
7
  function ReachEndMarker({
7
8
  enabled,
8
9
  onReachEnd
@@ -11,23 +12,27 @@ function ReachEndMarker({
11
12
  useVisibleCallback(markerRef, onReachEnd, {
12
13
  enabled
13
14
  });
14
- return /* @__PURE__ */ React__default.createElement("div", {
15
+ return /* @__PURE__ */ jsx("div", {
15
16
  ref: markerRef,
16
17
  style: { height: 0 }
17
18
  });
18
19
  }
19
20
  const InboxNotificationList = forwardRef(({ onReachEnd, children, className, ...props }, forwardedRef) => {
20
- return /* @__PURE__ */ React__default.createElement("ol", {
21
+ return /* @__PURE__ */ jsxs("ol", {
21
22
  className: classNames("lb-root lb-inbox-notification-list", className),
22
23
  ...props,
23
- ref: forwardedRef
24
- }, Children.map(children, (child, index) => /* @__PURE__ */ React__default.createElement("li", {
25
- key: index,
26
- className: "lb-inbox-notification-list-item"
27
- }, child)), onReachEnd && /* @__PURE__ */ React__default.createElement(ReachEndMarker, {
28
- onReachEnd,
29
- enabled: Children.count(children) > 0
30
- }));
24
+ ref: forwardedRef,
25
+ children: [
26
+ Children.map(children, (child, index) => /* @__PURE__ */ jsx("li", {
27
+ className: "lb-inbox-notification-list-item",
28
+ children: child
29
+ }, index)),
30
+ onReachEnd && /* @__PURE__ */ jsx(ReachEndMarker, {
31
+ onReachEnd,
32
+ enabled: Children.count(children) > 0
33
+ })
34
+ ]
35
+ });
31
36
  });
32
37
 
33
38
  export { InboxNotificationList };
@@ -1 +1 @@
1
- {"version":3,"file":"InboxNotificationList.mjs","sources":["../../src/components/InboxNotificationList.tsx"],"sourcesContent":["\"use client\";\n\nimport type { ComponentPropsWithoutRef } from \"react\";\nimport React, { Children, forwardRef, useRef } from \"react\";\n\nimport { classNames } from \"../utils/class-names\";\nimport { useVisibleCallback } from \"../utils/use-visible\";\n\nexport interface InboxNotificationListProps\n extends ComponentPropsWithoutRef<\"ol\"> {\n /**\n * This API is *EXPERIMENTAL* and likely not going to be the final API. Do\n * not rely on it.\n *\n * @private\n */\n onReachEnd?: () => void;\n}\n\nfunction ReachEndMarker({\n enabled,\n onReachEnd,\n}: {\n enabled: boolean;\n onReachEnd: () => void;\n}) {\n const markerRef = useRef<HTMLDivElement>(null);\n\n useVisibleCallback(markerRef, onReachEnd, {\n enabled,\n });\n\n return <div ref={markerRef} style={{ height: 0 }} />;\n}\n\n/**\n * Displays inbox notifications as a list.\n *\n * @example\n * <InboxNotificationList>\n * {inboxNotifications.map((inboxNotification) => (\n * <InboxNotification key={inboxNotification.id} inboxNotification={inboxNotification} />\n * ))}\n * </InboxNotificationList>\n */\nexport const InboxNotificationList = forwardRef<\n HTMLOListElement,\n InboxNotificationListProps\n>(({ onReachEnd, children, className, ...props }, forwardedRef) => {\n return (\n <ol\n className={classNames(\"lb-root lb-inbox-notification-list\", className)}\n {...props}\n ref={forwardedRef}\n >\n {Children.map(children, (child, index) => (\n <li key={index} className=\"lb-inbox-notification-list-item\">\n {child}\n </li>\n ))}\n {/* Render an invisible marker at the end which is tied to an IntersectionObserver to be alerted when the end of the list has been reached */}\n {onReachEnd && (\n <ReachEndMarker\n onReachEnd={onReachEnd}\n enabled={Children.count(children) > 0}\n />\n )}\n </ol>\n );\n});\n"],"names":[],"mappings":";;;;;AAmBA;AAAwB;AACtB;AAEF;AAIE;AAEA;AAA0C;AACxC;AAGF;AAAQ;AAAS;AAA8B;AACjD;AAYa;AAIX;AACG;AACsE;AACjE;AACC;AAGF;AAAQ;AAAiB;AAMzB;AACC;AACoC;AAK9C;;"}
1
+ {"version":3,"file":"InboxNotificationList.mjs","sources":["../../src/components/InboxNotificationList.tsx"],"sourcesContent":["\"use client\";\n\nimport type { ComponentPropsWithoutRef } from \"react\";\nimport { Children, forwardRef, useRef } from \"react\";\n\nimport { classNames } from \"../utils/class-names\";\nimport { useVisibleCallback } from \"../utils/use-visible\";\n\nexport interface InboxNotificationListProps\n extends ComponentPropsWithoutRef<\"ol\"> {\n /**\n * This API is *EXPERIMENTAL* and likely not going to be the final API. Do\n * not rely on it.\n *\n * @private\n */\n onReachEnd?: () => void;\n}\n\nfunction ReachEndMarker({\n enabled,\n onReachEnd,\n}: {\n enabled: boolean;\n onReachEnd: () => void;\n}) {\n const markerRef = useRef<HTMLDivElement>(null);\n\n useVisibleCallback(markerRef, onReachEnd, {\n enabled,\n });\n\n return <div ref={markerRef} style={{ height: 0 }} />;\n}\n\n/**\n * Displays inbox notifications as a list.\n *\n * @example\n * <InboxNotificationList>\n * {inboxNotifications.map((inboxNotification) => (\n * <InboxNotification key={inboxNotification.id} inboxNotification={inboxNotification} />\n * ))}\n * </InboxNotificationList>\n */\nexport const InboxNotificationList = forwardRef<\n HTMLOListElement,\n InboxNotificationListProps\n>(({ onReachEnd, children, className, ...props }, forwardedRef) => {\n return (\n <ol\n className={classNames(\"lb-root lb-inbox-notification-list\", className)}\n {...props}\n ref={forwardedRef}\n >\n {Children.map(children, (child, index) => (\n <li key={index} className=\"lb-inbox-notification-list-item\">\n {child}\n </li>\n ))}\n {/* Render an invisible marker at the end which is tied to an IntersectionObserver to be alerted when the end of the list has been reached */}\n {onReachEnd && (\n <ReachEndMarker\n onReachEnd={onReachEnd}\n enabled={Children.count(children) > 0}\n />\n )}\n </ol>\n );\n});\n"],"names":[],"mappings":";;;;;AAAA,YAAA,CAAA;AAmBA,SAAS,cAAe,CAAA;AAAA,EACtB,OAAA;AAAA,EACA,UAAA;AACF,CAGG,EAAA;AACD,EAAM,MAAA,SAAA,GAAY,OAAuB,IAAI,CAAA,CAAA;AAE7C,EAAA,kBAAA,CAAmB,WAAW,UAAY,EAAA;AAAA,IACxC,OAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAA,uBAAQ,GAAA,CAAA,KAAA,EAAA;AAAA,IAAI,GAAK,EAAA,SAAA;AAAA,IAAW,KAAA,EAAO,EAAE,MAAA,EAAQ,CAAE,EAAA;AAAA,GAAG,CAAA,CAAA;AACpD,CAAA;AAYa,MAAA,qBAAA,GAAwB,WAGnC,CAAC,EAAE,YAAY,QAAU,EAAA,SAAA,EAAA,GAAc,KAAM,EAAA,EAAG,YAAiB,KAAA;AACjE,EAAA,uBACG,IAAA,CAAA,IAAA,EAAA;AAAA,IACC,SAAA,EAAW,UAAW,CAAA,oCAAA,EAAsC,SAAS,CAAA;AAAA,IACpE,GAAG,KAAA;AAAA,IACJ,GAAK,EAAA,YAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,MAAA,QAAA,CAAS,GAAI,CAAA,QAAA,EAAU,CAAC,KAAA,EAAO,0BAC7B,GAAA,CAAA,IAAA,EAAA;AAAA,QAAe,SAAU,EAAA,iCAAA;AAAA,QACvB,QAAA,EAAA,KAAA;AAAA,OAAA,EADM,KAET,CACD,CAAA;AAAA,MAEA,8BACE,GAAA,CAAA,cAAA,EAAA;AAAA,QACC,UAAA;AAAA,QACA,OAAS,EAAA,QAAA,CAAS,KAAM,CAAA,QAAQ,CAAI,GAAA,CAAA;AAAA,OACtC,CAAA;AAAA,KAAA;AAAA,GAEJ,CAAA,CAAA;AAEJ,CAAC;;;;"}
@@ -1,10 +1,10 @@
1
- 'use client';
2
1
  'use strict';
3
2
 
4
- var react = require('@liveblocks/react');
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var react$1 = require('@liveblocks/react');
5
5
  var _private = require('@liveblocks/react/_private');
6
6
  var TogglePrimitive = require('@radix-ui/react-toggle');
7
- var React = require('react');
7
+ var react = require('react');
8
8
  var ArrowDown = require('../icons/ArrowDown.js');
9
9
  var Resolve = require('../icons/Resolve.js');
10
10
  var Resolved = require('../icons/Resolved.js');
@@ -36,7 +36,8 @@ function _interopNamespaceDefault(e) {
36
36
 
37
37
  var TogglePrimitive__namespace = /*#__PURE__*/_interopNamespaceDefault(TogglePrimitive);
38
38
 
39
- const Thread = React.forwardRef(
39
+ "use client";
40
+ const Thread = react.forwardRef(
40
41
  ({
41
42
  thread,
42
43
  indentCommentContent = true,
@@ -62,16 +63,16 @@ const Thread = React.forwardRef(
62
63
  const markThreadAsResolved = _private.useMarkRoomThreadAsResolved(thread.roomId);
63
64
  const markThreadAsUnresolved = _private.useMarkRoomThreadAsUnresolved(thread.roomId);
64
65
  const $ = overrides.useOverrides(overrides$1);
65
- const firstCommentIndex = React.useMemo(() => {
66
+ const firstCommentIndex = react.useMemo(() => {
66
67
  return showDeletedComments ? 0 : thread.comments.findIndex((comment) => comment.body);
67
68
  }, [showDeletedComments, thread.comments]);
68
- const lastCommentIndex = React.useMemo(() => {
69
+ const lastCommentIndex = react.useMemo(() => {
69
70
  return showDeletedComments ? thread.comments.length - 1 : findLastIndex.findLastIndex(thread.comments, (comment) => comment.body);
70
71
  }, [showDeletedComments, thread.comments]);
71
- const { status: subscriptionStatus, unreadSince } = react.useThreadSubscription(
72
+ const { status: subscriptionStatus, unreadSince } = react$1.useThreadSubscription(
72
73
  thread.id
73
74
  );
74
- const unreadIndex = React.useMemo(() => {
75
+ const unreadIndex = react.useMemo(() => {
75
76
  if (subscriptionStatus !== "subscribed") {
76
77
  return;
77
78
  }
@@ -89,19 +90,19 @@ const Thread = React.forwardRef(
89
90
  thread.comments,
90
91
  unreadSince
91
92
  ]);
92
- const [newIndex, setNewIndex] = React.useState();
93
+ const [newIndex, setNewIndex] = react.useState();
93
94
  const newIndicatorIndex = newIndex === void 0 ? unreadIndex : newIndex;
94
- React.useEffect(() => {
95
+ react.useEffect(() => {
95
96
  if (unreadIndex) {
96
97
  setNewIndex(
97
98
  (persistedUnreadIndex) => Math.min(persistedUnreadIndex ?? Infinity, unreadIndex)
98
99
  );
99
100
  }
100
101
  }, [unreadIndex]);
101
- const stopPropagation = React.useCallback((event) => {
102
+ const stopPropagation = react.useCallback((event) => {
102
103
  event.stopPropagation();
103
104
  }, []);
104
- const handleResolvedChange = React.useCallback(
105
+ const handleResolvedChange = react.useCallback(
105
106
  (resolved) => {
106
107
  onResolvedChange?.(resolved);
107
108
  if (resolved) {
@@ -117,7 +118,7 @@ const Thread = React.forwardRef(
117
118
  thread.id
118
119
  ]
119
120
  );
120
- const handleCommentDelete = React.useCallback(
121
+ const handleCommentDelete = react.useCallback(
121
122
  (comment) => {
122
123
  onCommentDelete?.(comment);
123
124
  const filteredComments = thread.comments.filter(
@@ -129,79 +130,96 @@ const Thread = React.forwardRef(
129
130
  },
130
131
  [onCommentDelete, onThreadDelete, thread]
131
132
  );
132
- return /* @__PURE__ */ React.createElement(TooltipPrimitive.TooltipProvider, null, /* @__PURE__ */ React.createElement("div", {
133
- className: classNames.classNames(
134
- "lb-root lb-thread",
135
- showActions === "hover" && "lb-thread:show-actions-hover",
136
- className
137
- ),
138
- "data-resolved": thread.resolved ? "" : void 0,
139
- "data-unread": unreadIndex !== void 0 ? "" : void 0,
140
- dir: $.dir,
141
- ...props,
142
- ref: forwardedRef
143
- }, /* @__PURE__ */ React.createElement("div", {
144
- className: "lb-thread-comments"
145
- }, thread.comments.map((comment, index) => {
146
- const isFirstComment = index === firstCommentIndex;
147
- const isUnread = unreadIndex !== void 0 && index >= unreadIndex;
148
- const children = /* @__PURE__ */ React.createElement(Comment.Comment, {
149
- key: comment.id,
150
- className: "lb-thread-comment",
151
- "data-unread": isUnread ? "" : void 0,
152
- comment,
153
- indentContent: indentCommentContent,
154
- showDeleted: showDeletedComments,
155
- showActions,
156
- showReactions,
157
- showAttachments,
158
- showComposerFormattingControls,
159
- onCommentEdit,
160
- onCommentDelete: handleCommentDelete,
161
- onAuthorClick,
162
- onMentionClick,
163
- onAttachmentClick,
164
- autoMarkReadThreadId: index === lastCommentIndex && isUnread ? thread.id : void 0,
165
- additionalActionsClassName: isFirstComment ? "lb-thread-actions" : void 0,
166
- additionalActions: isFirstComment && showResolveAction ? /* @__PURE__ */ React.createElement(Tooltip.Tooltip, {
167
- content: thread.resolved ? $.THREAD_UNRESOLVE : $.THREAD_RESOLVE
168
- }, /* @__PURE__ */ React.createElement(TogglePrimitive__namespace.Root, {
169
- pressed: thread.resolved,
170
- onPressedChange: handleResolvedChange,
171
- asChild: true
172
- }, /* @__PURE__ */ React.createElement(Button.Button, {
173
- className: "lb-comment-action",
174
- onClick: stopPropagation,
175
- "aria-label": thread.resolved ? $.THREAD_UNRESOLVE : $.THREAD_RESOLVE
176
- }, thread.resolved ? /* @__PURE__ */ React.createElement(Resolved.ResolvedIcon, {
177
- className: "lb-button-icon"
178
- }) : /* @__PURE__ */ React.createElement(Resolve.ResolveIcon, {
179
- className: "lb-button-icon"
180
- })))) : null
181
- });
182
- return index === newIndicatorIndex && newIndicatorIndex !== firstCommentIndex && newIndicatorIndex <= lastCommentIndex ? /* @__PURE__ */ React.createElement(React.Fragment, {
183
- key: comment.id
184
- }, /* @__PURE__ */ React.createElement("div", {
185
- className: "lb-thread-new-indicator",
186
- "aria-label": $.THREAD_NEW_INDICATOR_DESCRIPTION
187
- }, /* @__PURE__ */ React.createElement("span", {
188
- className: "lb-thread-new-indicator-label"
189
- }, /* @__PURE__ */ React.createElement(ArrowDown.ArrowDownIcon, {
190
- className: "lb-thread-new-indicator-label-icon"
191
- }), $.THREAD_NEW_INDICATOR)), children) : children;
192
- })), showComposer && /* @__PURE__ */ React.createElement(Composer.Composer, {
193
- className: "lb-thread-composer",
194
- threadId: thread.id,
195
- defaultCollapsed: showComposer === "collapsed" ? true : void 0,
196
- showAttachments,
197
- showFormattingControls: showComposerFormattingControls,
198
- onComposerSubmit,
199
- overrides: {
200
- COMPOSER_PLACEHOLDER: $.THREAD_COMPOSER_PLACEHOLDER,
201
- COMPOSER_SEND: $.THREAD_COMPOSER_SEND
202
- },
203
- roomId: thread.roomId
204
- })));
133
+ return /* @__PURE__ */ jsxRuntime.jsx(TooltipPrimitive.TooltipProvider, {
134
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", {
135
+ className: classNames.classNames(
136
+ "lb-root lb-thread",
137
+ showActions === "hover" && "lb-thread:show-actions-hover",
138
+ className
139
+ ),
140
+ "data-resolved": thread.resolved ? "" : void 0,
141
+ "data-unread": unreadIndex !== void 0 ? "" : void 0,
142
+ dir: $.dir,
143
+ ...props,
144
+ ref: forwardedRef,
145
+ children: [
146
+ /* @__PURE__ */ jsxRuntime.jsx("div", {
147
+ className: "lb-thread-comments",
148
+ children: thread.comments.map((comment, index) => {
149
+ const isFirstComment = index === firstCommentIndex;
150
+ const isUnread = unreadIndex !== void 0 && index >= unreadIndex;
151
+ const children = /* @__PURE__ */ jsxRuntime.jsx(Comment.Comment, {
152
+ className: "lb-thread-comment",
153
+ "data-unread": isUnread ? "" : void 0,
154
+ comment,
155
+ indentContent: indentCommentContent,
156
+ showDeleted: showDeletedComments,
157
+ showActions,
158
+ showReactions,
159
+ showAttachments,
160
+ showComposerFormattingControls,
161
+ onCommentEdit,
162
+ onCommentDelete: handleCommentDelete,
163
+ onAuthorClick,
164
+ onMentionClick,
165
+ onAttachmentClick,
166
+ autoMarkReadThreadId: index === lastCommentIndex && isUnread ? thread.id : void 0,
167
+ additionalActionsClassName: isFirstComment ? "lb-thread-actions" : void 0,
168
+ additionalActions: isFirstComment && showResolveAction ? /* @__PURE__ */ jsxRuntime.jsx(Tooltip.Tooltip, {
169
+ content: thread.resolved ? $.THREAD_UNRESOLVE : $.THREAD_RESOLVE,
170
+ children: /* @__PURE__ */ jsxRuntime.jsx(TogglePrimitive__namespace.Root, {
171
+ pressed: thread.resolved,
172
+ onPressedChange: handleResolvedChange,
173
+ asChild: true,
174
+ children: /* @__PURE__ */ jsxRuntime.jsx(Button.Button, {
175
+ className: "lb-comment-action",
176
+ onClick: stopPropagation,
177
+ "aria-label": thread.resolved ? $.THREAD_UNRESOLVE : $.THREAD_RESOLVE,
178
+ children: thread.resolved ? /* @__PURE__ */ jsxRuntime.jsx(Resolved.ResolvedIcon, {
179
+ className: "lb-button-icon"
180
+ }) : /* @__PURE__ */ jsxRuntime.jsx(Resolve.ResolveIcon, {
181
+ className: "lb-button-icon"
182
+ })
183
+ })
184
+ })
185
+ }) : null
186
+ }, comment.id);
187
+ return index === newIndicatorIndex && newIndicatorIndex !== firstCommentIndex && newIndicatorIndex <= lastCommentIndex ? /* @__PURE__ */ jsxRuntime.jsxs(react.Fragment, {
188
+ children: [
189
+ /* @__PURE__ */ jsxRuntime.jsx("div", {
190
+ className: "lb-thread-new-indicator",
191
+ "aria-label": $.THREAD_NEW_INDICATOR_DESCRIPTION,
192
+ children: /* @__PURE__ */ jsxRuntime.jsxs("span", {
193
+ className: "lb-thread-new-indicator-label",
194
+ children: [
195
+ /* @__PURE__ */ jsxRuntime.jsx(ArrowDown.ArrowDownIcon, {
196
+ className: "lb-thread-new-indicator-label-icon"
197
+ }),
198
+ $.THREAD_NEW_INDICATOR
199
+ ]
200
+ })
201
+ }),
202
+ children
203
+ ]
204
+ }, comment.id) : children;
205
+ })
206
+ }),
207
+ showComposer && /* @__PURE__ */ jsxRuntime.jsx(Composer.Composer, {
208
+ className: "lb-thread-composer",
209
+ threadId: thread.id,
210
+ defaultCollapsed: showComposer === "collapsed" ? true : void 0,
211
+ showAttachments,
212
+ showFormattingControls: showComposerFormattingControls,
213
+ onComposerSubmit,
214
+ overrides: {
215
+ COMPOSER_PLACEHOLDER: $.THREAD_COMPOSER_PLACEHOLDER,
216
+ COMPOSER_SEND: $.THREAD_COMPOSER_SEND
217
+ },
218
+ roomId: thread.roomId
219
+ })
220
+ ]
221
+ })
222
+ });
205
223
  }
206
224
  );
207
225