@liveblocks/react-ui 2.25.0-aiprivatebeta9 → 3.0.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 (132) hide show
  1. package/_private/package.json +2 -2
  2. package/dist/_private/index.cjs +4 -0
  3. package/dist/_private/index.cjs.map +1 -1
  4. package/dist/_private/index.d.cts +8 -4
  5. package/dist/_private/index.d.ts +8 -4
  6. package/dist/_private/index.js +2 -0
  7. package/dist/_private/index.js.map +1 -1
  8. package/dist/components/AiChat.cjs +15 -19
  9. package/dist/components/AiChat.cjs.map +1 -1
  10. package/dist/components/AiChat.js +16 -20
  11. package/dist/components/AiChat.js.map +1 -1
  12. package/dist/components/AiTool.cjs +52 -28
  13. package/dist/components/AiTool.cjs.map +1 -1
  14. package/dist/components/AiTool.js +53 -29
  15. package/dist/components/AiTool.js.map +1 -1
  16. package/dist/components/Comment.cjs +254 -235
  17. package/dist/components/Comment.cjs.map +1 -1
  18. package/dist/components/Comment.js +255 -236
  19. package/dist/components/Comment.js.map +1 -1
  20. package/dist/components/Composer.cjs +42 -30
  21. package/dist/components/Composer.cjs.map +1 -1
  22. package/dist/components/Composer.js +44 -32
  23. package/dist/components/Composer.js.map +1 -1
  24. package/dist/components/Thread.cjs +7 -1
  25. package/dist/components/Thread.cjs.map +1 -1
  26. package/dist/components/Thread.js +8 -2
  27. package/dist/components/Thread.js.map +1 -1
  28. package/dist/components/internal/AiChatAssistantMessage.cjs +38 -6
  29. package/dist/components/internal/AiChatAssistantMessage.cjs.map +1 -1
  30. package/dist/components/internal/AiChatAssistantMessage.js +39 -7
  31. package/dist/components/internal/AiChatAssistantMessage.js.map +1 -1
  32. package/dist/components/internal/AiChatComposer.cjs.map +1 -1
  33. package/dist/components/internal/AiChatComposer.js.map +1 -1
  34. package/dist/components/internal/AiChatUserMessage.cjs.map +1 -1
  35. package/dist/components/internal/AiChatUserMessage.js.map +1 -1
  36. package/dist/components/internal/CodeBlock.cjs +6 -3
  37. package/dist/components/internal/CodeBlock.cjs.map +1 -1
  38. package/dist/components/internal/CodeBlock.js +6 -3
  39. package/dist/components/internal/CodeBlock.js.map +1 -1
  40. package/dist/components/internal/Dropdown.cjs +1 -1
  41. package/dist/components/internal/Dropdown.cjs.map +1 -1
  42. package/dist/components/internal/Dropdown.js +2 -2
  43. package/dist/components/internal/Dropdown.js.map +1 -1
  44. package/dist/components/internal/EmojiPicker.cjs +1 -1
  45. package/dist/components/internal/EmojiPicker.cjs.map +1 -1
  46. package/dist/components/internal/EmojiPicker.js +2 -2
  47. package/dist/components/internal/EmojiPicker.js.map +1 -1
  48. package/dist/components/internal/InboxNotificationThread.cjs +5 -2
  49. package/dist/components/internal/InboxNotificationThread.cjs.map +1 -1
  50. package/dist/components/internal/InboxNotificationThread.js +6 -3
  51. package/dist/components/internal/InboxNotificationThread.js.map +1 -1
  52. package/dist/components/internal/Tooltip.cjs +1 -1
  53. package/dist/components/internal/Tooltip.cjs.map +1 -1
  54. package/dist/components/internal/Tooltip.js +2 -2
  55. package/dist/components/internal/Tooltip.js.map +1 -1
  56. package/dist/config.cjs +9 -9
  57. package/dist/config.cjs.map +1 -1
  58. package/dist/config.js +8 -8
  59. package/dist/config.js.map +1 -1
  60. package/dist/icons/CrossCircleFill.cjs +25 -0
  61. package/dist/icons/CrossCircleFill.cjs.map +1 -0
  62. package/dist/icons/CrossCircleFill.js +23 -0
  63. package/dist/icons/CrossCircleFill.js.map +1 -0
  64. package/dist/icons/MinusCircle.cjs +23 -0
  65. package/dist/icons/MinusCircle.cjs.map +1 -0
  66. package/dist/icons/MinusCircle.js +21 -0
  67. package/dist/icons/MinusCircle.js.map +1 -0
  68. package/dist/icons/index.cjs +4 -0
  69. package/dist/icons/index.cjs.map +1 -1
  70. package/dist/icons/index.js +2 -0
  71. package/dist/icons/index.js.map +1 -1
  72. package/dist/index.cjs +1 -1
  73. package/dist/index.cjs.map +1 -1
  74. package/dist/index.d.cts +232 -25
  75. package/dist/index.d.ts +232 -25
  76. package/dist/index.js +1 -1
  77. package/dist/index.js.map +1 -1
  78. package/dist/overrides.cjs +5 -1
  79. package/dist/overrides.cjs.map +1 -1
  80. package/dist/overrides.js +5 -1
  81. package/dist/overrides.js.map +1 -1
  82. package/dist/primitives/AiMessage/index.cjs +11 -67
  83. package/dist/primitives/AiMessage/index.cjs.map +1 -1
  84. package/dist/primitives/AiMessage/index.js +13 -69
  85. package/dist/primitives/AiMessage/index.js.map +1 -1
  86. package/dist/primitives/AiMessage/tool-invocation.cjs +70 -0
  87. package/dist/primitives/AiMessage/tool-invocation.cjs.map +1 -0
  88. package/dist/primitives/AiMessage/tool-invocation.js +68 -0
  89. package/dist/primitives/AiMessage/tool-invocation.js.map +1 -0
  90. package/dist/primitives/Collapsible/index.cjs +3 -3
  91. package/dist/primitives/Collapsible/index.cjs.map +1 -1
  92. package/dist/primitives/Collapsible/index.js +3 -3
  93. package/dist/primitives/Collapsible/index.js.map +1 -1
  94. package/dist/primitives/Comment/index.cjs +5 -4
  95. package/dist/primitives/Comment/index.cjs.map +1 -1
  96. package/dist/primitives/Comment/index.js +5 -4
  97. package/dist/primitives/Comment/index.js.map +1 -1
  98. package/dist/primitives/Composer/index.cjs +49 -41
  99. package/dist/primitives/Composer/index.cjs.map +1 -1
  100. package/dist/primitives/Composer/index.js +50 -42
  101. package/dist/primitives/Composer/index.js.map +1 -1
  102. package/dist/primitives/Composer/slate/plugins/mentions.cjs +4 -4
  103. package/dist/primitives/Composer/slate/plugins/mentions.cjs.map +1 -1
  104. package/dist/primitives/Composer/slate/plugins/mentions.js +4 -4
  105. package/dist/primitives/Composer/slate/plugins/mentions.js.map +1 -1
  106. package/dist/primitives/Composer/utils.cjs +3 -6
  107. package/dist/primitives/Composer/utils.cjs.map +1 -1
  108. package/dist/primitives/Composer/utils.js +3 -6
  109. package/dist/primitives/Composer/utils.js.map +1 -1
  110. package/dist/primitives/Markdown.cjs +6 -2
  111. package/dist/primitives/Markdown.cjs.map +1 -1
  112. package/dist/primitives/Markdown.js +6 -2
  113. package/dist/primitives/Markdown.js.map +1 -1
  114. package/dist/primitives/index.d.cts +18 -18
  115. package/dist/primitives/index.d.ts +18 -18
  116. package/dist/utils/use-controllable-state.cjs +25 -2
  117. package/dist/utils/use-controllable-state.cjs.map +1 -1
  118. package/dist/utils/use-controllable-state.js +25 -3
  119. package/dist/utils/use-controllable-state.js.map +1 -1
  120. package/dist/utils/use-visible.cjs +3 -1
  121. package/dist/utils/use-visible.cjs.map +1 -1
  122. package/dist/utils/use-visible.js +3 -1
  123. package/dist/utils/use-visible.js.map +1 -1
  124. package/dist/version.cjs +1 -1
  125. package/dist/version.cjs.map +1 -1
  126. package/dist/version.js +1 -1
  127. package/dist/version.js.map +1 -1
  128. package/package.json +16 -5
  129. package/primitives/package.json +2 -2
  130. package/src/styles/index.css +22 -4
  131. package/styles.css +1 -1
  132. package/styles.css.map +1 -1
@@ -2,9 +2,11 @@
2
2
  'use strict';
3
3
 
4
4
  var jsxRuntime = require('react/jsx-runtime');
5
+ var core = require('@liveblocks/core');
5
6
  var _private = require('@liveblocks/react/_private');
6
7
  var TogglePrimitive = require('@radix-ui/react-toggle');
7
8
  var react = require('react');
9
+ var components = require('../components.cjs');
8
10
  var constants = require('../constants.cjs');
9
11
  var Check = require('../icons/Check.cjs');
10
12
  var Cross = require('../icons/Cross.cjs');
@@ -58,22 +60,27 @@ var TogglePrimitive__namespace = /*#__PURE__*/_interopNamespaceDefault(TogglePri
58
60
 
59
61
  const REACTIONS_TRUNCATE = 5;
60
62
  function CommentMention({
61
- userId,
63
+ mention,
62
64
  className,
63
65
  ...props
64
66
  }) {
65
67
  const currentId = shared.useCurrentUserId();
66
- return /* @__PURE__ */ jsxRuntime.jsxs(index.Mention, {
67
- className: classNames.classNames("lb-comment-mention", className),
68
- "data-self": userId === currentId ? "" : void 0,
69
- ...props,
70
- children: [
71
- constants.MENTION_CHARACTER,
72
- /* @__PURE__ */ jsxRuntime.jsx(User.User, {
73
- userId
74
- })
75
- ]
76
- });
68
+ switch (mention.kind) {
69
+ case "user":
70
+ return /* @__PURE__ */ jsxRuntime.jsxs(index.Mention, {
71
+ className: classNames.classNames("lb-comment-mention", className),
72
+ "data-self": mention.id === currentId ? "" : void 0,
73
+ ...props,
74
+ children: [
75
+ constants.MENTION_CHARACTER,
76
+ /* @__PURE__ */ jsxRuntime.jsx(User.User, {
77
+ userId: mention.id
78
+ })
79
+ ]
80
+ });
81
+ default:
82
+ return core.assertNever(mention.kind, "Unhandled mention kind");
83
+ }
77
84
  }
78
85
  function CommentLink({
79
86
  href,
@@ -81,11 +88,16 @@ function CommentLink({
81
88
  className,
82
89
  ...props
83
90
  }) {
91
+ const { Anchor } = components.useComponents();
84
92
  return /* @__PURE__ */ jsxRuntime.jsx(index.Link, {
85
93
  className: classNames.classNames("lb-comment-link", className),
86
94
  href,
87
95
  ...props,
88
- children
96
+ asChild: true,
97
+ children: /* @__PURE__ */ jsxRuntime.jsx(Anchor, {
98
+ ...props,
99
+ children
100
+ })
89
101
  });
90
102
  }
91
103
  function CommentNonInteractiveLink({
@@ -320,6 +332,7 @@ const Comment = react.forwardRef(
320
332
  onCommentEdit,
321
333
  onCommentDelete,
322
334
  overrides: overrides$1,
335
+ components: components$1,
323
336
  className,
324
337
  additionalActions,
325
338
  additionalActionsClassName,
@@ -343,6 +356,8 @@ const Comment = react.forwardRef(
343
356
  const { mediaAttachments, fileAttachments } = react.useMemo(() => {
344
357
  return Attachment.separateMediaAttachments(comment.attachments);
345
358
  }, [comment.attachments]);
359
+ const permissions = _private.useRoomPermissions(comment.roomId);
360
+ const canComment = permissions.size > 0 ? permissions.has(core.Permission.CommentsWrite) || permissions.has(core.Permission.Write) : true;
346
361
  const stopPropagation = react.useCallback((event) => {
347
362
  event.stopPropagation();
348
363
  }, []);
@@ -430,254 +445,258 @@ const Comment = react.forwardRef(
430
445
  if (!showDeleted && !comment.body) {
431
446
  return null;
432
447
  }
433
- return /* @__PURE__ */ jsxRuntime.jsxs(TooltipPrimitive.TooltipProvider, {
434
- children: [
435
- autoMarkReadThreadId && /* @__PURE__ */ jsxRuntime.jsx(AutoMarkReadThreadIdHandler, {
436
- commentRef: ref,
437
- threadId: autoMarkReadThreadId,
438
- roomId: comment.roomId
439
- }),
440
- /* @__PURE__ */ jsxRuntime.jsxs("div", {
441
- id: comment.id,
442
- className: classNames.classNames(
443
- "lb-root lb-comment",
444
- indentContent && "lb-comment:indent-content",
445
- showActions === "hover" && "lb-comment:show-actions-hover",
446
- (isMoreActionOpen || isReactionActionOpen) && "lb-comment:action-open",
447
- className
448
- ),
449
- "data-deleted": !comment.body ? "" : void 0,
450
- "data-editing": isEditing ? "" : void 0,
451
- "data-target": isTarget ? "" : void 0,
452
- dir: $.dir,
453
- ...props,
454
- ref: mergedRefs,
455
- children: [
456
- /* @__PURE__ */ jsxRuntime.jsxs("div", {
457
- className: "lb-comment-header",
458
- children: [
459
- /* @__PURE__ */ jsxRuntime.jsxs("div", {
460
- className: "lb-comment-details",
461
- children: [
462
- /* @__PURE__ */ jsxRuntime.jsx(Avatar.Avatar, {
463
- className: "lb-comment-avatar",
464
- userId: comment.userId,
465
- onClick: handleAuthorClick
466
- }),
467
- /* @__PURE__ */ jsxRuntime.jsxs("span", {
468
- className: "lb-comment-details-labels",
469
- children: [
470
- /* @__PURE__ */ jsxRuntime.jsx(User.User, {
471
- className: "lb-comment-author",
472
- userId: comment.userId,
473
- onClick: handleAuthorClick
474
- }),
475
- /* @__PURE__ */ jsxRuntime.jsxs("span", {
476
- className: "lb-comment-date",
477
- children: [
478
- /* @__PURE__ */ jsxRuntime.jsx(Timestamp.Timestamp, {
479
- locale: $.locale,
480
- date: comment.createdAt,
481
- className: "lb-date lb-comment-date-created"
482
- }),
483
- comment.editedAt && comment.body && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {
484
- children: [
485
- " ",
486
- /* @__PURE__ */ jsxRuntime.jsx("span", {
487
- className: "lb-comment-date-edited",
488
- children: $.COMMENT_EDITED
489
- })
490
- ]
491
- })
492
- ]
493
- })
494
- ]
495
- })
496
- ]
497
- }),
498
- showActions && !isEditing && /* @__PURE__ */ jsxRuntime.jsxs("div", {
499
- className: classNames.classNames(
500
- "lb-comment-actions",
501
- additionalActionsClassName
502
- ),
503
- children: [
504
- additionalActions ?? null,
505
- showReactions && /* @__PURE__ */ jsxRuntime.jsx(EmojiPicker.EmojiPicker, {
506
- onEmojiSelect: handleReactionSelect,
507
- onOpenChange: setReactionActionOpen,
508
- children: /* @__PURE__ */ jsxRuntime.jsx(Tooltip.Tooltip, {
509
- content: $.COMMENT_ADD_REACTION,
510
- children: /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive.PopoverTrigger, {
511
- asChild: true,
512
- children: /* @__PURE__ */ jsxRuntime.jsx(Button.Button, {
513
- className: "lb-comment-action",
514
- onClick: stopPropagation,
515
- "aria-label": $.COMMENT_ADD_REACTION,
516
- icon: /* @__PURE__ */ jsxRuntime.jsx(EmojiPlus.EmojiPlusIcon, {})
517
- })
518
- })
519
- })
520
- }),
521
- comment.userId === currentUserId || additionalDropdownItemsBefore || additionalDropdownItemsAfter ? /* @__PURE__ */ jsxRuntime.jsx(Dropdown.Dropdown, {
522
- open: isMoreActionOpen,
523
- onOpenChange: setMoreActionOpen,
524
- align: "end",
525
- content: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {
448
+ return /* @__PURE__ */ jsxRuntime.jsx(TooltipPrimitive.TooltipProvider, {
449
+ children: /* @__PURE__ */ jsxRuntime.jsxs(components.ComponentsProvider, {
450
+ components: components$1,
451
+ children: [
452
+ autoMarkReadThreadId && /* @__PURE__ */ jsxRuntime.jsx(AutoMarkReadThreadIdHandler, {
453
+ commentRef: ref,
454
+ threadId: autoMarkReadThreadId,
455
+ roomId: comment.roomId
456
+ }),
457
+ /* @__PURE__ */ jsxRuntime.jsxs("div", {
458
+ id: comment.id,
459
+ className: classNames.classNames(
460
+ "lb-root lb-comment",
461
+ indentContent && "lb-comment:indent-content",
462
+ showActions === "hover" && "lb-comment:show-actions-hover",
463
+ (isMoreActionOpen || isReactionActionOpen) && "lb-comment:action-open",
464
+ className
465
+ ),
466
+ "data-deleted": !comment.body ? "" : void 0,
467
+ "data-editing": isEditing ? "" : void 0,
468
+ "data-target": isTarget ? "" : void 0,
469
+ dir: $.dir,
470
+ ...props,
471
+ ref: mergedRefs,
472
+ children: [
473
+ /* @__PURE__ */ jsxRuntime.jsxs("div", {
474
+ className: "lb-comment-header",
475
+ children: [
476
+ /* @__PURE__ */ jsxRuntime.jsxs("div", {
477
+ className: "lb-comment-details",
478
+ children: [
479
+ /* @__PURE__ */ jsxRuntime.jsx(Avatar.Avatar, {
480
+ className: "lb-comment-avatar",
481
+ userId: comment.userId,
482
+ onClick: handleAuthorClick
483
+ }),
484
+ /* @__PURE__ */ jsxRuntime.jsxs("span", {
485
+ className: "lb-comment-details-labels",
526
486
  children: [
527
- additionalDropdownItemsBefore,
528
- comment.userId === currentUserId && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {
487
+ /* @__PURE__ */ jsxRuntime.jsx(User.User, {
488
+ className: "lb-comment-author",
489
+ userId: comment.userId,
490
+ onClick: handleAuthorClick
491
+ }),
492
+ /* @__PURE__ */ jsxRuntime.jsxs("span", {
493
+ className: "lb-comment-date",
529
494
  children: [
530
- /* @__PURE__ */ jsxRuntime.jsx(Dropdown.DropdownItem, {
531
- onSelect: handleEdit,
532
- onClick: stopPropagation,
533
- icon: /* @__PURE__ */ jsxRuntime.jsx(Edit.EditIcon, {}),
534
- children: $.COMMENT_EDIT
495
+ /* @__PURE__ */ jsxRuntime.jsx(Timestamp.Timestamp, {
496
+ locale: $.locale,
497
+ date: comment.createdAt,
498
+ className: "lb-date lb-comment-date-created"
535
499
  }),
536
- /* @__PURE__ */ jsxRuntime.jsx(Dropdown.DropdownItem, {
537
- onSelect: handleDelete,
538
- onClick: stopPropagation,
539
- icon: /* @__PURE__ */ jsxRuntime.jsx(Delete.DeleteIcon, {}),
540
- children: $.COMMENT_DELETE
500
+ comment.editedAt && comment.body && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {
501
+ children: [
502
+ " ",
503
+ /* @__PURE__ */ jsxRuntime.jsx("span", {
504
+ className: "lb-comment-date-edited",
505
+ children: $.COMMENT_EDITED
506
+ })
507
+ ]
541
508
  })
542
509
  ]
543
- }),
544
- additionalDropdownItemsAfter
545
- ]
546
- }),
547
- children: /* @__PURE__ */ jsxRuntime.jsx(Tooltip.Tooltip, {
548
- content: $.COMMENT_MORE,
549
- children: /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive.DropdownMenuTrigger, {
550
- asChild: true,
551
- children: /* @__PURE__ */ jsxRuntime.jsx(Button.Button, {
552
- className: "lb-comment-action",
553
- disabled: !comment.body,
554
- onClick: stopPropagation,
555
- "aria-label": $.COMMENT_MORE,
556
- icon: /* @__PURE__ */ jsxRuntime.jsx(Ellipsis.EllipsisIcon, {})
557
510
  })
558
- })
559
- })
560
- }) : null
561
- ]
562
- })
563
- ]
564
- }),
565
- /* @__PURE__ */ jsxRuntime.jsx("div", {
566
- className: "lb-comment-content",
567
- children: isEditing ? /* @__PURE__ */ jsxRuntime.jsx(Composer.Composer, {
568
- className: "lb-comment-composer",
569
- onComposerSubmit: handleEditSubmit,
570
- defaultValue: comment.body,
571
- defaultAttachments: comment.attachments,
572
- autoFocus: true,
573
- showAttribution: false,
574
- showAttachments,
575
- showFormattingControls: showComposerFormattingControls,
576
- actions: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {
577
- children: [
578
- /* @__PURE__ */ jsxRuntime.jsx(Tooltip.Tooltip, {
579
- content: $.COMMENT_EDIT_COMPOSER_CANCEL,
580
- "aria-label": $.COMMENT_EDIT_COMPOSER_CANCEL,
581
- children: /* @__PURE__ */ jsxRuntime.jsx(Button.Button, {
582
- className: "lb-composer-action",
583
- onClick: handleEditCancel,
584
- icon: /* @__PURE__ */ jsxRuntime.jsx(Cross.CrossIcon, {})
585
- })
586
- }),
587
- /* @__PURE__ */ jsxRuntime.jsx(Tooltip.ShortcutTooltip, {
588
- content: $.COMMENT_EDIT_COMPOSER_SAVE,
589
- shortcut: "Enter",
590
- children: /* @__PURE__ */ jsxRuntime.jsx(index$1.Submit, {
591
- asChild: true,
592
- children: /* @__PURE__ */ jsxRuntime.jsx(Button.Button, {
593
- variant: "primary",
594
- className: "lb-composer-action",
595
- onClick: stopPropagation,
596
- "aria-label": $.COMMENT_EDIT_COMPOSER_SAVE,
597
- icon: /* @__PURE__ */ jsxRuntime.jsx(Check.CheckIcon, {})
598
- })
511
+ ]
599
512
  })
600
- })
601
- ]
602
- }),
603
- overrides: {
604
- COMPOSER_PLACEHOLDER: $.COMMENT_EDIT_COMPOSER_PLACEHOLDER
605
- },
606
- roomId: comment.roomId
607
- }) : comment.body ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {
608
- children: [
609
- /* @__PURE__ */ jsxRuntime.jsx(index.Body, {
610
- className: "lb-comment-body",
611
- body: comment.body,
612
- components: {
613
- Mention: ({ userId }) => /* @__PURE__ */ jsxRuntime.jsx(CommentMention, {
614
- userId,
615
- onClick: (event) => onMentionClick?.(userId, event)
616
- }),
617
- Link: CommentLink
618
- }
619
- }),
620
- showAttachments && (mediaAttachments.length > 0 || fileAttachments.length > 0) ? /* @__PURE__ */ jsxRuntime.jsxs("div", {
621
- className: "lb-comment-attachments",
622
- children: [
623
- mediaAttachments.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", {
624
- className: "lb-attachments",
625
- children: mediaAttachments.map((attachment) => /* @__PURE__ */ jsxRuntime.jsx(CommentMediaAttachment, {
626
- attachment,
627
- overrides: overrides$1,
628
- onAttachmentClick,
629
- roomId: comment.roomId
630
- }, attachment.id))
631
- }) : null,
632
- fileAttachments.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", {
633
- className: "lb-attachments",
634
- children: fileAttachments.map((attachment) => /* @__PURE__ */ jsxRuntime.jsx(CommentFileAttachment, {
635
- attachment,
636
- overrides: overrides$1,
637
- onAttachmentClick,
638
- roomId: comment.roomId
639
- }, attachment.id))
640
- }) : null
641
513
  ]
642
- }) : null,
643
- showReactions && comment.reactions.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", {
644
- className: "lb-comment-reactions",
514
+ }),
515
+ showActions && !isEditing && /* @__PURE__ */ jsxRuntime.jsxs("div", {
516
+ className: classNames.classNames(
517
+ "lb-comment-actions",
518
+ additionalActionsClassName
519
+ ),
645
520
  children: [
646
- comment.reactions.map((reaction) => /* @__PURE__ */ jsxRuntime.jsx(CommentReaction, {
647
- comment,
648
- reaction,
649
- overrides: overrides$1
650
- }, reaction.emoji)),
651
- /* @__PURE__ */ jsxRuntime.jsx(EmojiPicker.EmojiPicker, {
521
+ additionalActions ?? null,
522
+ showReactions && canComment ? /* @__PURE__ */ jsxRuntime.jsx(EmojiPicker.EmojiPicker, {
652
523
  onEmojiSelect: handleReactionSelect,
524
+ onOpenChange: setReactionActionOpen,
653
525
  children: /* @__PURE__ */ jsxRuntime.jsx(Tooltip.Tooltip, {
654
526
  content: $.COMMENT_ADD_REACTION,
655
527
  children: /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive.PopoverTrigger, {
656
528
  asChild: true,
657
529
  children: /* @__PURE__ */ jsxRuntime.jsx(Button.Button, {
658
- className: "lb-comment-reaction lb-comment-reaction-add",
659
- variant: "outline",
530
+ className: "lb-comment-action",
660
531
  onClick: stopPropagation,
661
532
  "aria-label": $.COMMENT_ADD_REACTION,
662
533
  icon: /* @__PURE__ */ jsxRuntime.jsx(EmojiPlus.EmojiPlusIcon, {})
663
534
  })
664
535
  })
665
536
  })
666
- })
537
+ }) : null,
538
+ comment.userId === currentUserId || additionalDropdownItemsBefore || additionalDropdownItemsAfter ? /* @__PURE__ */ jsxRuntime.jsx(Dropdown.Dropdown, {
539
+ open: isMoreActionOpen,
540
+ onOpenChange: setMoreActionOpen,
541
+ align: "end",
542
+ content: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {
543
+ children: [
544
+ additionalDropdownItemsBefore,
545
+ comment.userId === currentUserId && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {
546
+ children: [
547
+ /* @__PURE__ */ jsxRuntime.jsx(Dropdown.DropdownItem, {
548
+ onSelect: handleEdit,
549
+ onClick: stopPropagation,
550
+ icon: /* @__PURE__ */ jsxRuntime.jsx(Edit.EditIcon, {}),
551
+ children: $.COMMENT_EDIT
552
+ }),
553
+ /* @__PURE__ */ jsxRuntime.jsx(Dropdown.DropdownItem, {
554
+ onSelect: handleDelete,
555
+ onClick: stopPropagation,
556
+ icon: /* @__PURE__ */ jsxRuntime.jsx(Delete.DeleteIcon, {}),
557
+ children: $.COMMENT_DELETE
558
+ })
559
+ ]
560
+ }),
561
+ additionalDropdownItemsAfter
562
+ ]
563
+ }),
564
+ children: /* @__PURE__ */ jsxRuntime.jsx(Tooltip.Tooltip, {
565
+ content: $.COMMENT_MORE,
566
+ children: /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuPrimitive.DropdownMenuTrigger, {
567
+ asChild: true,
568
+ children: /* @__PURE__ */ jsxRuntime.jsx(Button.Button, {
569
+ className: "lb-comment-action",
570
+ disabled: !comment.body,
571
+ onClick: stopPropagation,
572
+ "aria-label": $.COMMENT_MORE,
573
+ icon: /* @__PURE__ */ jsxRuntime.jsx(Ellipsis.EllipsisIcon, {})
574
+ })
575
+ })
576
+ })
577
+ }) : null
667
578
  ]
668
579
  })
669
580
  ]
670
- }) : /* @__PURE__ */ jsxRuntime.jsx("div", {
671
- className: "lb-comment-body",
672
- children: /* @__PURE__ */ jsxRuntime.jsx("p", {
673
- className: "lb-comment-deleted",
674
- children: $.COMMENT_DELETED
581
+ }),
582
+ /* @__PURE__ */ jsxRuntime.jsx("div", {
583
+ className: "lb-comment-content",
584
+ children: isEditing ? /* @__PURE__ */ jsxRuntime.jsx(Composer.Composer, {
585
+ className: "lb-comment-composer",
586
+ onComposerSubmit: handleEditSubmit,
587
+ defaultValue: comment.body,
588
+ defaultAttachments: comment.attachments,
589
+ autoFocus: true,
590
+ showAttribution: false,
591
+ showAttachments,
592
+ showFormattingControls: showComposerFormattingControls,
593
+ actions: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {
594
+ children: [
595
+ /* @__PURE__ */ jsxRuntime.jsx(Tooltip.Tooltip, {
596
+ content: $.COMMENT_EDIT_COMPOSER_CANCEL,
597
+ "aria-label": $.COMMENT_EDIT_COMPOSER_CANCEL,
598
+ children: /* @__PURE__ */ jsxRuntime.jsx(Button.Button, {
599
+ className: "lb-composer-action",
600
+ onClick: handleEditCancel,
601
+ icon: /* @__PURE__ */ jsxRuntime.jsx(Cross.CrossIcon, {})
602
+ })
603
+ }),
604
+ /* @__PURE__ */ jsxRuntime.jsx(Tooltip.ShortcutTooltip, {
605
+ content: $.COMMENT_EDIT_COMPOSER_SAVE,
606
+ shortcut: "Enter",
607
+ children: /* @__PURE__ */ jsxRuntime.jsx(index$1.Submit, {
608
+ asChild: true,
609
+ children: /* @__PURE__ */ jsxRuntime.jsx(Button.Button, {
610
+ variant: "primary",
611
+ className: "lb-composer-action",
612
+ onClick: stopPropagation,
613
+ "aria-label": $.COMMENT_EDIT_COMPOSER_SAVE,
614
+ icon: /* @__PURE__ */ jsxRuntime.jsx(Check.CheckIcon, {})
615
+ })
616
+ })
617
+ })
618
+ ]
619
+ }),
620
+ overrides: {
621
+ COMPOSER_PLACEHOLDER: $.COMMENT_EDIT_COMPOSER_PLACEHOLDER
622
+ },
623
+ roomId: comment.roomId
624
+ }) : comment.body ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {
625
+ children: [
626
+ /* @__PURE__ */ jsxRuntime.jsx(index.Body, {
627
+ className: "lb-comment-body",
628
+ body: comment.body,
629
+ components: {
630
+ Mention: ({ mention }) => /* @__PURE__ */ jsxRuntime.jsx(CommentMention, {
631
+ mention,
632
+ onClick: (event) => onMentionClick?.(mention, event)
633
+ }),
634
+ Link: CommentLink
635
+ }
636
+ }),
637
+ showAttachments && (mediaAttachments.length > 0 || fileAttachments.length > 0) ? /* @__PURE__ */ jsxRuntime.jsxs("div", {
638
+ className: "lb-comment-attachments",
639
+ children: [
640
+ mediaAttachments.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", {
641
+ className: "lb-attachments",
642
+ children: mediaAttachments.map((attachment) => /* @__PURE__ */ jsxRuntime.jsx(CommentMediaAttachment, {
643
+ attachment,
644
+ overrides: overrides$1,
645
+ onAttachmentClick,
646
+ roomId: comment.roomId
647
+ }, attachment.id))
648
+ }) : null,
649
+ fileAttachments.length > 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", {
650
+ className: "lb-attachments",
651
+ children: fileAttachments.map((attachment) => /* @__PURE__ */ jsxRuntime.jsx(CommentFileAttachment, {
652
+ attachment,
653
+ overrides: overrides$1,
654
+ onAttachmentClick,
655
+ roomId: comment.roomId
656
+ }, attachment.id))
657
+ }) : null
658
+ ]
659
+ }) : null,
660
+ showReactions && comment.reactions.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", {
661
+ className: "lb-comment-reactions",
662
+ children: [
663
+ comment.reactions.map((reaction) => /* @__PURE__ */ jsxRuntime.jsx(CommentReaction, {
664
+ comment,
665
+ reaction,
666
+ overrides: overrides$1,
667
+ disabled: !canComment
668
+ }, reaction.emoji)),
669
+ canComment ? /* @__PURE__ */ jsxRuntime.jsx(EmojiPicker.EmojiPicker, {
670
+ onEmojiSelect: handleReactionSelect,
671
+ children: /* @__PURE__ */ jsxRuntime.jsx(Tooltip.Tooltip, {
672
+ content: $.COMMENT_ADD_REACTION,
673
+ children: /* @__PURE__ */ jsxRuntime.jsx(PopoverPrimitive.PopoverTrigger, {
674
+ asChild: true,
675
+ children: /* @__PURE__ */ jsxRuntime.jsx(Button.Button, {
676
+ className: "lb-comment-reaction lb-comment-reaction-add",
677
+ variant: "outline",
678
+ onClick: stopPropagation,
679
+ "aria-label": $.COMMENT_ADD_REACTION,
680
+ icon: /* @__PURE__ */ jsxRuntime.jsx(EmojiPlus.EmojiPlusIcon, {})
681
+ })
682
+ })
683
+ })
684
+ }) : null
685
+ ]
686
+ })
687
+ ]
688
+ }) : /* @__PURE__ */ jsxRuntime.jsx("div", {
689
+ className: "lb-comment-body",
690
+ children: /* @__PURE__ */ jsxRuntime.jsx("p", {
691
+ className: "lb-comment-deleted",
692
+ children: $.COMMENT_DELETED
693
+ })
675
694
  })
676
695
  })
677
- })
678
- ]
679
- })
680
- ]
696
+ ]
697
+ })
698
+ ]
699
+ })
681
700
  });
682
701
  }
683
702
  );