@liveblocks/react-ui 3.15.0-thread2 → 3.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.
- package/README.md +6 -16
- package/dist/_private/index.cjs +1 -5
- package/dist/_private/index.cjs.map +1 -1
- package/dist/_private/index.d.cts +4 -4
- package/dist/_private/index.d.ts +4 -4
- package/dist/_private/index.js +1 -2
- package/dist/_private/index.js.map +1 -1
- package/dist/components/AvatarStack.cjs +117 -0
- package/dist/components/AvatarStack.cjs.map +1 -0
- package/dist/components/AvatarStack.js +115 -0
- package/dist/components/AvatarStack.js.map +1 -0
- package/dist/components/Comment.cjs +10 -28
- package/dist/components/Comment.cjs.map +1 -1
- package/dist/components/Comment.js +12 -11
- package/dist/components/Comment.js.map +1 -1
- package/dist/components/CommentPin.cjs +36 -0
- package/dist/components/CommentPin.cjs.map +1 -0
- package/dist/components/CommentPin.js +34 -0
- package/dist/components/CommentPin.js.map +1 -0
- package/dist/components/Composer.cjs +2 -4
- package/dist/components/Composer.cjs.map +1 -1
- package/dist/components/Composer.js +3 -5
- package/dist/components/Composer.js.map +1 -1
- package/dist/components/Cursor.cjs +40 -0
- package/dist/components/Cursor.cjs.map +1 -0
- package/dist/components/Cursor.js +38 -0
- package/dist/components/Cursor.js.map +1 -0
- package/dist/components/Cursors.cjs +256 -0
- package/dist/components/Cursors.cjs.map +1 -0
- package/dist/components/Cursors.js +254 -0
- package/dist/components/Cursors.js.map +1 -0
- package/dist/components/FloatingComposer.cjs +82 -0
- package/dist/components/FloatingComposer.cjs.map +1 -0
- package/dist/components/FloatingComposer.js +80 -0
- package/dist/components/FloatingComposer.js.map +1 -0
- package/dist/components/FloatingThread.cjs +82 -0
- package/dist/components/FloatingThread.cjs.map +1 -0
- package/dist/components/FloatingThread.js +80 -0
- package/dist/components/FloatingThread.js.map +1 -0
- package/dist/components/InboxNotification.cjs +4 -6
- package/dist/components/InboxNotification.cjs.map +1 -1
- package/dist/components/InboxNotification.js +5 -7
- package/dist/components/InboxNotification.js.map +1 -1
- package/dist/components/Thread.cjs +19 -28
- package/dist/components/Thread.cjs.map +1 -1
- package/dist/components/Thread.js +19 -9
- package/dist/components/Thread.js.map +1 -1
- package/dist/components/internal/AiComposer.cjs +1 -2
- package/dist/components/internal/AiComposer.cjs.map +1 -1
- package/dist/components/internal/AiComposer.js +1 -2
- package/dist/components/internal/AiComposer.js.map +1 -1
- package/dist/components/internal/Avatar.cjs +10 -13
- package/dist/components/internal/Avatar.cjs.map +1 -1
- package/dist/components/internal/Avatar.js +11 -14
- package/dist/components/internal/Avatar.js.map +1 -1
- package/dist/components/internal/CodeBlock.cjs +1 -2
- package/dist/components/internal/CodeBlock.cjs.map +1 -1
- package/dist/components/internal/CodeBlock.js +1 -2
- package/dist/components/internal/CodeBlock.js.map +1 -1
- package/dist/components/internal/Dropdown.cjs +7 -28
- package/dist/components/internal/Dropdown.cjs.map +1 -1
- package/dist/components/internal/Dropdown.js +7 -7
- package/dist/components/internal/Dropdown.js.map +1 -1
- package/dist/components/internal/EmojiPicker.cjs +6 -27
- package/dist/components/internal/EmojiPicker.cjs.map +1 -1
- package/dist/components/internal/EmojiPicker.js +6 -6
- package/dist/components/internal/EmojiPicker.js.map +1 -1
- package/dist/components/internal/List.cjs +2 -2
- package/dist/components/internal/List.cjs.map +1 -1
- package/dist/components/internal/List.js +2 -2
- package/dist/components/internal/List.js.map +1 -1
- package/dist/components/internal/Tooltip.cjs +7 -28
- package/dist/components/internal/Tooltip.cjs.map +1 -1
- package/dist/components/internal/Tooltip.js +7 -7
- package/dist/components/internal/Tooltip.js.map +1 -1
- package/dist/index.cjs +12 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +232 -137
- package/dist/index.d.ts +232 -137
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/primitives/AiComposer/index.cjs +5 -4
- package/dist/primitives/AiComposer/index.cjs.map +1 -1
- package/dist/primitives/AiComposer/index.js +5 -4
- package/dist/primitives/AiComposer/index.js.map +1 -1
- package/dist/primitives/AiMessage/index.cjs +2 -2
- package/dist/primitives/AiMessage/index.cjs.map +1 -1
- package/dist/primitives/AiMessage/index.js +2 -2
- package/dist/primitives/AiMessage/index.js.map +1 -1
- package/dist/primitives/Collapsible/index.cjs +4 -4
- package/dist/primitives/Collapsible/index.cjs.map +1 -1
- package/dist/primitives/Collapsible/index.js +4 -4
- package/dist/primitives/Collapsible/index.js.map +1 -1
- package/dist/primitives/Comment/index.cjs +4 -4
- package/dist/primitives/Comment/index.cjs.map +1 -1
- package/dist/primitives/Comment/index.js +4 -4
- package/dist/primitives/Comment/index.js.map +1 -1
- package/dist/primitives/Composer/index.cjs +23 -35
- package/dist/primitives/Composer/index.cjs.map +1 -1
- package/dist/primitives/Composer/index.js +23 -16
- package/dist/primitives/Composer/index.js.map +1 -1
- package/dist/primitives/Duration.cjs +2 -2
- package/dist/primitives/Duration.cjs.map +1 -1
- package/dist/primitives/Duration.js +2 -2
- package/dist/primitives/Duration.js.map +1 -1
- package/dist/primitives/FileSize.cjs +2 -2
- package/dist/primitives/FileSize.cjs.map +1 -1
- package/dist/primitives/FileSize.js +2 -2
- package/dist/primitives/FileSize.js.map +1 -1
- package/dist/primitives/Markdown.cjs +2 -2
- package/dist/primitives/Markdown.cjs.map +1 -1
- package/dist/primitives/Markdown.js +2 -2
- package/dist/primitives/Markdown.js.map +1 -1
- package/dist/primitives/Timestamp.cjs +2 -2
- package/dist/primitives/Timestamp.cjs.map +1 -1
- package/dist/primitives/Timestamp.js +2 -2
- package/dist/primitives/Timestamp.js.map +1 -1
- package/dist/utils/Portal.cjs +2 -2
- package/dist/utils/Portal.cjs.map +1 -1
- package/dist/utils/Portal.js +2 -2
- package/dist/utils/Portal.js.map +1 -1
- package/dist/utils/animation-loop.cjs +44 -0
- package/dist/utils/animation-loop.cjs.map +1 -0
- package/dist/utils/animation-loop.js +42 -0
- package/dist/utils/animation-loop.js.map +1 -0
- package/dist/utils/use-pre-resolve-user.cjs +18 -0
- package/dist/utils/use-pre-resolve-user.cjs.map +1 -0
- package/dist/utils/use-pre-resolve-user.js +16 -0
- package/dist/utils/use-pre-resolve-user.js.map +1 -0
- package/dist/version.cjs +1 -1
- package/dist/version.cjs.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +7 -10
- package/src/styles/dark/index.css +1 -1
- package/src/styles/index.css +252 -4
- package/styles/dark/attributes.css +1 -1
- package/styles/dark/attributes.css.map +1 -1
- package/styles/dark/media-query.css +1 -1
- package/styles/dark/media-query.css.map +1 -1
- package/styles.css +1 -1
- package/styles.css.map +1 -1
package/README.md
CHANGED
|
@@ -1,24 +1,14 @@
|
|
|
1
|
-
<p
|
|
2
|
-
<a href="https://liveblocks.io#gh-light-mode-only">
|
|
3
|
-
|
|
4
|
-
</a>
|
|
5
|
-
<a href="https://liveblocks.io#gh-dark-mode-only">
|
|
6
|
-
<img src="https://raw.githubusercontent.com/liveblocks/liveblocks/main/.github/assets/header-dark.svg" alt="Liveblocks" />
|
|
7
|
-
</a>
|
|
1
|
+
<p>
|
|
2
|
+
<a href="https://liveblocks.io#gh-light-mode-only"><img src="https://raw.githubusercontent.com/liveblocks/liveblocks/main/.github/assets/header-light.svg" alt="Liveblocks" /></a>
|
|
3
|
+
<a href="https://liveblocks.io#gh-dark-mode-only"><img src="https://raw.githubusercontent.com/liveblocks/liveblocks/main/.github/assets/header-dark.svg" alt="Liveblocks" /></a>
|
|
8
4
|
</p>
|
|
9
5
|
|
|
10
6
|
# `@liveblocks/react-ui`
|
|
11
7
|
|
|
12
8
|
<p>
|
|
13
|
-
<a href="https://npmjs.org/package/@liveblocks/react-ui">
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
<a href="https://bundlephobia.com/package/@liveblocks/react-ui">
|
|
17
|
-
<img src="https://img.shields.io/bundlephobia/minzip/@liveblocks/react-ui?style=flat&label=size&color=09f" alt="Size" />
|
|
18
|
-
</a>
|
|
19
|
-
<a href="https://github.com/liveblocks/liveblocks/blob/main/LICENSE">
|
|
20
|
-
<img src="https://img.shields.io/github/license/liveblocks/liveblocks?style=flat&label=license&color=f80" alt="License" />
|
|
21
|
-
</a>
|
|
9
|
+
<a href="https://npmjs.org/package/@liveblocks/react-ui"><img src="https://img.shields.io/npm/v/@liveblocks/react-ui?style=flat&label=npm&color=c33" alt="NPM" /></a>
|
|
10
|
+
<a href="https://bundlephobia.com/package/@liveblocks/react-ui"><img src="https://img.shields.io/bundlephobia/minzip/@liveblocks/react-ui?style=flat&label=size&color=09f" alt="Size" /></a>
|
|
11
|
+
<a href="https://github.com/liveblocks/liveblocks/blob/main/licenses/LICENSE-APACHE-2.0"><img src="https://img.shields.io/badge/license-Apache--2.0-green" alt="License" /></a>
|
|
22
12
|
</p>
|
|
23
13
|
|
|
24
14
|
`@liveblocks/react-ui` provides [React](https://reactjs.org/) pre-built
|
package/dist/_private/index.cjs
CHANGED
|
@@ -21,7 +21,6 @@ var contexts = require('../primitives/AiComposer/contexts.cjs');
|
|
|
21
21
|
var index$1 = require('../primitives/AiMessage/index.cjs');
|
|
22
22
|
var index$2 = require('../primitives/Collapsible/index.cjs');
|
|
23
23
|
var Markdown = require('../primitives/Markdown.cjs');
|
|
24
|
-
var TooltipPrimitive = require('@radix-ui/react-tooltip');
|
|
25
24
|
var ArrowCornerDownRight = require('../icons/ArrowCornerDownRight.cjs');
|
|
26
25
|
var ArrowCornerUpRight = require('../icons/ArrowCornerUpRight.cjs');
|
|
27
26
|
var ArrowDown = require('../icons/ArrowDown.cjs');
|
|
@@ -89,6 +88,7 @@ exports.List = List.List;
|
|
|
89
88
|
exports.Prose = Prose.Prose;
|
|
90
89
|
exports.ShortcutTooltip = Tooltip.ShortcutTooltip;
|
|
91
90
|
exports.Tooltip = Tooltip.Tooltip;
|
|
91
|
+
exports.TooltipProvider = Tooltip.TooltipProvider;
|
|
92
92
|
exports.User = User.User;
|
|
93
93
|
exports.useLiveblocksUiConfig = config.useLiveblocksUiConfig;
|
|
94
94
|
exports.capitalize = capitalize.capitalize;
|
|
@@ -102,10 +102,6 @@ exports.useAiComposer = contexts.useAiComposer;
|
|
|
102
102
|
exports.AiMessage = index$1;
|
|
103
103
|
exports.Collapsible = index$2;
|
|
104
104
|
exports.Markdown = Markdown.Markdown;
|
|
105
|
-
Object.defineProperty(exports, 'TooltipProvider', {
|
|
106
|
-
enumerable: true,
|
|
107
|
-
get: function () { return TooltipPrimitive.TooltipProvider; }
|
|
108
|
-
});
|
|
109
105
|
exports.ArrowCornerDownRightIcon = ArrowCornerDownRight.ArrowCornerDownRightIcon;
|
|
110
106
|
exports.ArrowCornerUpRightIcon = ArrowCornerUpRight.ArrowCornerUpRightIcon;
|
|
111
107
|
exports.ArrowDownIcon = ArrowDown.ArrowDownIcon;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -2,8 +2,7 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
|
2
2
|
import { Relax, AiTextPart, AiReasoningPart, AiChatMessage } from '@liveblocks/core';
|
|
3
3
|
import * as react from 'react';
|
|
4
4
|
import { ComponentProps, ReactNode, ComponentPropsWithoutRef, ElementType, ComponentType, Ref, RefCallback, FormEvent } from 'react';
|
|
5
|
-
import
|
|
6
|
-
export { TooltipProvider } from '@radix-ui/react-tooltip';
|
|
5
|
+
import { Tooltip as Tooltip$1 } from 'radix-ui';
|
|
7
6
|
|
|
8
7
|
type AvatarProps = ComponentProps<"div"> & {
|
|
9
8
|
icon?: ReactNode;
|
|
@@ -345,7 +344,7 @@ interface ProseProps extends ComponentProps<"div"> {
|
|
|
345
344
|
*/
|
|
346
345
|
declare function Prose({ content, partial, components, className, ...props }: ProseProps): react_jsx_runtime.JSX.Element;
|
|
347
346
|
|
|
348
|
-
interface TooltipProps extends Pick<
|
|
347
|
+
interface TooltipProps extends Pick<Tooltip$1.TooltipTriggerProps, "children">, Omit<Tooltip$1.TooltipContentProps, "content"> {
|
|
349
348
|
content: ReactNode;
|
|
350
349
|
multiline?: boolean;
|
|
351
350
|
}
|
|
@@ -354,6 +353,7 @@ interface ShortcutTooltipProps extends TooltipProps {
|
|
|
354
353
|
}
|
|
355
354
|
declare const Tooltip: react.ForwardRefExoticComponent<TooltipProps & react.RefAttributes<HTMLButtonElement>>;
|
|
356
355
|
declare const ShortcutTooltip: react.ForwardRefExoticComponent<ShortcutTooltipProps & react.RefAttributes<HTMLButtonElement>>;
|
|
356
|
+
declare const TooltipProvider: react.FC<Tooltip$1.TooltipProviderProps>;
|
|
357
357
|
|
|
358
358
|
interface UserProps extends ComponentProps<"span"> {
|
|
359
359
|
/**
|
|
@@ -724,4 +724,4 @@ declare namespace index {
|
|
|
724
724
|
};
|
|
725
725
|
}
|
|
726
726
|
|
|
727
|
-
export { index$2 as AiComposer, AiComposerEditorProps, AiComposerFormProps, AiComposerSubmitProps, index$1 as AiMessage, AiMessageContentComponents, AiMessageContentProps, AiMessageContentReasoningPartProps, AiMessageContentTextPartProps, ArrowCornerDownRightIcon, ArrowCornerUpRightIcon, ArrowDownIcon, ArrowUpIcon, AttachmentIcon, Avatar, BellCrossedIcon, BellIcon, BlockquoteIcon, BoldIcon, Button, CheckCircleFillIcon, CheckCircleIcon, CheckIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, CodeIcon, index as Collapsible, CommentIcon, CopyIcon, CrossCircleFillIcon, CrossIcon, DeleteIcon, EditIcon, EllipsisIcon, EmojiIcon, EmojiPlusIcon, GlobeIcon, Group, GroupDescription, H1Icon, H2Icon, H3Icon, ItalicIcon, LengthenIcon, List, ListOrderedIcon, ListUnorderedIcon, Markdown, MarkdownComponents, MarkdownComponentsBlockquoteProps, MarkdownComponentsCodeBlockProps, MarkdownComponentsHeadingProps, MarkdownComponentsImageProps, MarkdownComponentsInlineProps, MarkdownComponentsLinkProps, MarkdownComponentsListProps, MarkdownComponentsParagraphProps, MarkdownComponentsTableProps, MarkdownProps, MentionIcon, MinusCircleIcon, Portal, Prose, QuestionMarkIcon, RedoIcon, RestoreIcon, RetryIcon, SearchIcon, SelectButton, SendIcon, ShortcutTooltip, ShortenIcon, SparklesIcon, SparklesTextIcon, SpinnerIcon, StopIcon, StrikethroughIcon, TextIcon, Tooltip, TranslateIcon, UnderlineIcon, UndoIcon, User, UserIcon, UsersIcon, WarningIcon, capitalize, cn, useAiComposer, useInitial, useLiveblocksUiConfig, useRefs, useStableComponent };
|
|
727
|
+
export { index$2 as AiComposer, AiComposerEditorProps, AiComposerFormProps, AiComposerSubmitProps, index$1 as AiMessage, AiMessageContentComponents, AiMessageContentProps, AiMessageContentReasoningPartProps, AiMessageContentTextPartProps, ArrowCornerDownRightIcon, ArrowCornerUpRightIcon, ArrowDownIcon, ArrowUpIcon, AttachmentIcon, Avatar, BellCrossedIcon, BellIcon, BlockquoteIcon, BoldIcon, Button, CheckCircleFillIcon, CheckCircleIcon, CheckIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, CodeIcon, index as Collapsible, CommentIcon, CopyIcon, CrossCircleFillIcon, CrossIcon, DeleteIcon, EditIcon, EllipsisIcon, EmojiIcon, EmojiPlusIcon, GlobeIcon, Group, GroupDescription, H1Icon, H2Icon, H3Icon, ItalicIcon, LengthenIcon, List, ListOrderedIcon, ListUnorderedIcon, Markdown, MarkdownComponents, MarkdownComponentsBlockquoteProps, MarkdownComponentsCodeBlockProps, MarkdownComponentsHeadingProps, MarkdownComponentsImageProps, MarkdownComponentsInlineProps, MarkdownComponentsLinkProps, MarkdownComponentsListProps, MarkdownComponentsParagraphProps, MarkdownComponentsTableProps, MarkdownProps, MentionIcon, MinusCircleIcon, Portal, Prose, QuestionMarkIcon, RedoIcon, RestoreIcon, RetryIcon, SearchIcon, SelectButton, SendIcon, ShortcutTooltip, ShortenIcon, SparklesIcon, SparklesTextIcon, SpinnerIcon, StopIcon, StrikethroughIcon, TextIcon, Tooltip, TooltipProvider, TranslateIcon, UnderlineIcon, UndoIcon, User, UserIcon, UsersIcon, WarningIcon, capitalize, cn, useAiComposer, useInitial, useLiveblocksUiConfig, useRefs, useStableComponent };
|
package/dist/_private/index.d.ts
CHANGED
|
@@ -2,8 +2,7 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
|
2
2
|
import { Relax, AiTextPart, AiReasoningPart, AiChatMessage } from '@liveblocks/core';
|
|
3
3
|
import * as react from 'react';
|
|
4
4
|
import { ComponentProps, ReactNode, ComponentPropsWithoutRef, ElementType, ComponentType, Ref, RefCallback, FormEvent } from 'react';
|
|
5
|
-
import
|
|
6
|
-
export { TooltipProvider } from '@radix-ui/react-tooltip';
|
|
5
|
+
import { Tooltip as Tooltip$1 } from 'radix-ui';
|
|
7
6
|
|
|
8
7
|
type AvatarProps = ComponentProps<"div"> & {
|
|
9
8
|
icon?: ReactNode;
|
|
@@ -345,7 +344,7 @@ interface ProseProps extends ComponentProps<"div"> {
|
|
|
345
344
|
*/
|
|
346
345
|
declare function Prose({ content, partial, components, className, ...props }: ProseProps): react_jsx_runtime.JSX.Element;
|
|
347
346
|
|
|
348
|
-
interface TooltipProps extends Pick<
|
|
347
|
+
interface TooltipProps extends Pick<Tooltip$1.TooltipTriggerProps, "children">, Omit<Tooltip$1.TooltipContentProps, "content"> {
|
|
349
348
|
content: ReactNode;
|
|
350
349
|
multiline?: boolean;
|
|
351
350
|
}
|
|
@@ -354,6 +353,7 @@ interface ShortcutTooltipProps extends TooltipProps {
|
|
|
354
353
|
}
|
|
355
354
|
declare const Tooltip: react.ForwardRefExoticComponent<TooltipProps & react.RefAttributes<HTMLButtonElement>>;
|
|
356
355
|
declare const ShortcutTooltip: react.ForwardRefExoticComponent<ShortcutTooltipProps & react.RefAttributes<HTMLButtonElement>>;
|
|
356
|
+
declare const TooltipProvider: react.FC<Tooltip$1.TooltipProviderProps>;
|
|
357
357
|
|
|
358
358
|
interface UserProps extends ComponentProps<"span"> {
|
|
359
359
|
/**
|
|
@@ -724,4 +724,4 @@ declare namespace index {
|
|
|
724
724
|
};
|
|
725
725
|
}
|
|
726
726
|
|
|
727
|
-
export { index$2 as AiComposer, AiComposerEditorProps, AiComposerFormProps, AiComposerSubmitProps, index$1 as AiMessage, AiMessageContentComponents, AiMessageContentProps, AiMessageContentReasoningPartProps, AiMessageContentTextPartProps, ArrowCornerDownRightIcon, ArrowCornerUpRightIcon, ArrowDownIcon, ArrowUpIcon, AttachmentIcon, Avatar, BellCrossedIcon, BellIcon, BlockquoteIcon, BoldIcon, Button, CheckCircleFillIcon, CheckCircleIcon, CheckIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, CodeIcon, index as Collapsible, CommentIcon, CopyIcon, CrossCircleFillIcon, CrossIcon, DeleteIcon, EditIcon, EllipsisIcon, EmojiIcon, EmojiPlusIcon, GlobeIcon, Group, GroupDescription, H1Icon, H2Icon, H3Icon, ItalicIcon, LengthenIcon, List, ListOrderedIcon, ListUnorderedIcon, Markdown, MarkdownComponents, MarkdownComponentsBlockquoteProps, MarkdownComponentsCodeBlockProps, MarkdownComponentsHeadingProps, MarkdownComponentsImageProps, MarkdownComponentsInlineProps, MarkdownComponentsLinkProps, MarkdownComponentsListProps, MarkdownComponentsParagraphProps, MarkdownComponentsTableProps, MarkdownProps, MentionIcon, MinusCircleIcon, Portal, Prose, QuestionMarkIcon, RedoIcon, RestoreIcon, RetryIcon, SearchIcon, SelectButton, SendIcon, ShortcutTooltip, ShortenIcon, SparklesIcon, SparklesTextIcon, SpinnerIcon, StopIcon, StrikethroughIcon, TextIcon, Tooltip, TranslateIcon, UnderlineIcon, UndoIcon, User, UserIcon, UsersIcon, WarningIcon, capitalize, cn, useAiComposer, useInitial, useLiveblocksUiConfig, useRefs, useStableComponent };
|
|
727
|
+
export { index$2 as AiComposer, AiComposerEditorProps, AiComposerFormProps, AiComposerSubmitProps, index$1 as AiMessage, AiMessageContentComponents, AiMessageContentProps, AiMessageContentReasoningPartProps, AiMessageContentTextPartProps, ArrowCornerDownRightIcon, ArrowCornerUpRightIcon, ArrowDownIcon, ArrowUpIcon, AttachmentIcon, Avatar, BellCrossedIcon, BellIcon, BlockquoteIcon, BoldIcon, Button, CheckCircleFillIcon, CheckCircleIcon, CheckIcon, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, CodeIcon, index as Collapsible, CommentIcon, CopyIcon, CrossCircleFillIcon, CrossIcon, DeleteIcon, EditIcon, EllipsisIcon, EmojiIcon, EmojiPlusIcon, GlobeIcon, Group, GroupDescription, H1Icon, H2Icon, H3Icon, ItalicIcon, LengthenIcon, List, ListOrderedIcon, ListUnorderedIcon, Markdown, MarkdownComponents, MarkdownComponentsBlockquoteProps, MarkdownComponentsCodeBlockProps, MarkdownComponentsHeadingProps, MarkdownComponentsImageProps, MarkdownComponentsInlineProps, MarkdownComponentsLinkProps, MarkdownComponentsListProps, MarkdownComponentsParagraphProps, MarkdownComponentsTableProps, MarkdownProps, MentionIcon, MinusCircleIcon, Portal, Prose, QuestionMarkIcon, RedoIcon, RestoreIcon, RetryIcon, SearchIcon, SelectButton, SendIcon, ShortcutTooltip, ShortenIcon, SparklesIcon, SparklesTextIcon, SpinnerIcon, StopIcon, StrikethroughIcon, TextIcon, Tooltip, TooltipProvider, TranslateIcon, UnderlineIcon, UndoIcon, User, UserIcon, UsersIcon, WarningIcon, capitalize, cn, useAiComposer, useInitial, useLiveblocksUiConfig, useRefs, useStableComponent };
|
package/dist/_private/index.js
CHANGED
|
@@ -4,7 +4,7 @@ export { Group } from '../components/internal/Group.js';
|
|
|
4
4
|
export { GroupDescription } from '../components/internal/GroupDescription.js';
|
|
5
5
|
export { List } from '../components/internal/List.js';
|
|
6
6
|
export { Prose } from '../components/internal/Prose.js';
|
|
7
|
-
export { ShortcutTooltip, Tooltip } from '../components/internal/Tooltip.js';
|
|
7
|
+
export { ShortcutTooltip, Tooltip, TooltipProvider } from '../components/internal/Tooltip.js';
|
|
8
8
|
export { User } from '../components/internal/User.js';
|
|
9
9
|
export { useLiveblocksUiConfig } from '../config.js';
|
|
10
10
|
import '../icons/index.js';
|
|
@@ -22,7 +22,6 @@ export { index$1 as AiMessage };
|
|
|
22
22
|
import * as index$2 from '../primitives/Collapsible/index.js';
|
|
23
23
|
export { index$2 as Collapsible };
|
|
24
24
|
export { Markdown } from '../primitives/Markdown.js';
|
|
25
|
-
export { TooltipProvider } from '@radix-ui/react-tooltip';
|
|
26
25
|
export { ArrowCornerDownRightIcon } from '../icons/ArrowCornerDownRight.js';
|
|
27
26
|
export { ArrowCornerUpRightIcon } from '../icons/ArrowCornerUpRight.js';
|
|
28
27
|
export { ArrowDownIcon } from '../icons/ArrowDown.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
5
|
+
var react$1 = require('@liveblocks/react');
|
|
6
|
+
var react = require('react');
|
|
7
|
+
var constants = require('../constants.cjs');
|
|
8
|
+
var overrides = require('../overrides.cjs');
|
|
9
|
+
var cn = require('../utils/cn.cjs');
|
|
10
|
+
var Avatar = require('./internal/Avatar.cjs');
|
|
11
|
+
var Tooltip = require('./internal/Tooltip.cjs');
|
|
12
|
+
var User = require('./internal/User.cjs');
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
const AvatarStack = react.forwardRef(
|
|
16
|
+
({
|
|
17
|
+
userIds: additionalUserIds = [],
|
|
18
|
+
max = 3,
|
|
19
|
+
size,
|
|
20
|
+
overrides: overrides$1,
|
|
21
|
+
className,
|
|
22
|
+
style,
|
|
23
|
+
...props
|
|
24
|
+
}, forwardedRef) => {
|
|
25
|
+
const $ = overrides.useOverrides(overrides$1);
|
|
26
|
+
const otherIds = react$1.useOthers((others) => others.map((user) => user.id));
|
|
27
|
+
const selfId = react$1.useSelf((self) => self.id);
|
|
28
|
+
const userIds = react.useMemo(() => {
|
|
29
|
+
const uniqueUserIds = /* @__PURE__ */ new Set([
|
|
30
|
+
selfId,
|
|
31
|
+
...otherIds,
|
|
32
|
+
...additionalUserIds
|
|
33
|
+
]);
|
|
34
|
+
return [...uniqueUserIds];
|
|
35
|
+
}, [selfId, otherIds, additionalUserIds]);
|
|
36
|
+
const maxAvatars = Math.max(1, Math.floor(max));
|
|
37
|
+
const visibleUserIds = userIds.slice(0, maxAvatars);
|
|
38
|
+
const hiddenUserIds = userIds.slice(visibleUserIds.length);
|
|
39
|
+
const remainingUsersCount = hiddenUserIds.length;
|
|
40
|
+
const visibleItemsCount = visibleUserIds.length + Number(remainingUsersCount > 0);
|
|
41
|
+
if (userIds.length === 0) {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Tooltip.TooltipProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
45
|
+
"div",
|
|
46
|
+
{
|
|
47
|
+
className: cn.cn("lb-root lb-avatar-stack", className),
|
|
48
|
+
dir: $.dir,
|
|
49
|
+
style: {
|
|
50
|
+
"--lb-avatar-stack-count": visibleItemsCount - 1,
|
|
51
|
+
"--lb-avatar-stack-size": size,
|
|
52
|
+
...style
|
|
53
|
+
},
|
|
54
|
+
...props,
|
|
55
|
+
ref: forwardedRef,
|
|
56
|
+
children: [
|
|
57
|
+
visibleUserIds.map((userId, index) => {
|
|
58
|
+
if (!userId) {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
62
|
+
Tooltip.Tooltip,
|
|
63
|
+
{
|
|
64
|
+
content: /* @__PURE__ */ jsxRuntime.jsx(User.User, { userId }),
|
|
65
|
+
sideOffset: constants.FLOATING_ELEMENT_SIDE_OFFSET,
|
|
66
|
+
collisionPadding: constants.FLOATING_ELEMENT_COLLISION_PADDING,
|
|
67
|
+
side: "top",
|
|
68
|
+
align: "center",
|
|
69
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
70
|
+
Avatar.Avatar,
|
|
71
|
+
{
|
|
72
|
+
userId,
|
|
73
|
+
className: "lb-avatar-stack-avatar",
|
|
74
|
+
style: { "--lb-avatar-stack-index": index }
|
|
75
|
+
}
|
|
76
|
+
)
|
|
77
|
+
},
|
|
78
|
+
userId
|
|
79
|
+
);
|
|
80
|
+
}),
|
|
81
|
+
remainingUsersCount > 0 ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
82
|
+
Tooltip.Tooltip,
|
|
83
|
+
{
|
|
84
|
+
content: /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "lb-users-tooltip-list", children: hiddenUserIds.map(
|
|
85
|
+
(userId) => userId ? /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "lb-users-tooltip-list-item", children: [
|
|
86
|
+
/* @__PURE__ */ jsxRuntime.jsx(Avatar.Avatar, { userId }),
|
|
87
|
+
/* @__PURE__ */ jsxRuntime.jsx(User.User, { userId })
|
|
88
|
+
] }, userId) : null
|
|
89
|
+
) }),
|
|
90
|
+
sideOffset: constants.FLOATING_ELEMENT_SIDE_OFFSET,
|
|
91
|
+
collisionPadding: constants.FLOATING_ELEMENT_COLLISION_PADDING,
|
|
92
|
+
side: "top",
|
|
93
|
+
align: "center",
|
|
94
|
+
className: "lb-users-tooltip",
|
|
95
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
96
|
+
"div",
|
|
97
|
+
{
|
|
98
|
+
className: "lb-avatar lb-avatar-stack-avatar lb-avatar-stack-more",
|
|
99
|
+
style: {
|
|
100
|
+
"--lb-avatar-stack-index": visibleUserIds.length
|
|
101
|
+
},
|
|
102
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "lb-avatar-fallback", children: [
|
|
103
|
+
"+",
|
|
104
|
+
remainingUsersCount
|
|
105
|
+
] })
|
|
106
|
+
}
|
|
107
|
+
)
|
|
108
|
+
}
|
|
109
|
+
) : null
|
|
110
|
+
]
|
|
111
|
+
}
|
|
112
|
+
) });
|
|
113
|
+
}
|
|
114
|
+
);
|
|
115
|
+
|
|
116
|
+
exports.AvatarStack = AvatarStack;
|
|
117
|
+
//# sourceMappingURL=AvatarStack.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AvatarStack.cjs","sources":["../../src/components/AvatarStack.tsx"],"sourcesContent":["\"use client\";\n\nimport { useOthers, useSelf } from \"@liveblocks/react\";\nimport type { ComponentPropsWithoutRef, CSSProperties } from \"react\";\nimport { forwardRef, useMemo } from \"react\";\n\nimport {\n FLOATING_ELEMENT_COLLISION_PADDING,\n FLOATING_ELEMENT_SIDE_OFFSET,\n} from \"../constants\";\nimport type { GlobalOverrides } from \"../overrides\";\nimport { useOverrides } from \"../overrides\";\nimport { cn } from \"../utils/cn\";\nimport { Avatar } from \"./internal/Avatar\";\nimport { Tooltip, TooltipProvider } from \"./internal/Tooltip\";\nimport { User } from \"./internal/User\";\n\nexport interface AvatarStackProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * Optional additional user IDs to include in the stack.\n */\n userIds?: string[];\n\n /**\n * The maximum number of visible avatars.\n * Defaults to 3, set to `undefined` to show all avatars.\n */\n max?: number;\n\n /**\n * The size of the avatars.\n */\n size?: string | number;\n\n /**\n * Override the component's strings.\n */\n overrides?: Partial<GlobalOverrides>;\n}\n\n/**\n * Displays a stack of avatars for the users currently present in the room.\n */\nexport const AvatarStack = forwardRef<HTMLDivElement, AvatarStackProps>(\n (\n {\n userIds: additionalUserIds = [],\n max = 3,\n size,\n overrides,\n className,\n style,\n ...props\n },\n forwardedRef\n ) => {\n const $ = useOverrides(overrides);\n const otherIds = useOthers((others) => others.map((user) => user.id));\n const selfId = useSelf((self) => self.id);\n const userIds = useMemo(() => {\n const uniqueUserIds = new Set([\n selfId,\n ...otherIds,\n ...additionalUserIds,\n ]);\n\n return [...uniqueUserIds];\n }, [selfId, otherIds, additionalUserIds]);\n const maxAvatars = Math.max(1, Math.floor(max));\n const visibleUserIds = userIds.slice(0, maxAvatars);\n const hiddenUserIds = userIds.slice(visibleUserIds.length);\n const remainingUsersCount = hiddenUserIds.length;\n const visibleItemsCount =\n visibleUserIds.length + Number(remainingUsersCount > 0);\n\n if (userIds.length === 0) {\n return null;\n }\n\n return (\n <TooltipProvider>\n <div\n className={cn(\"lb-root lb-avatar-stack\", className)}\n dir={$.dir}\n style={\n {\n \"--lb-avatar-stack-count\": visibleItemsCount - 1,\n \"--lb-avatar-stack-size\": size,\n ...style,\n } as CSSProperties\n }\n {...props}\n ref={forwardedRef}\n >\n {visibleUserIds.map((userId, index) => {\n if (!userId) {\n return null;\n }\n\n return (\n <Tooltip\n key={userId}\n content={<User userId={userId} />}\n sideOffset={FLOATING_ELEMENT_SIDE_OFFSET}\n collisionPadding={FLOATING_ELEMENT_COLLISION_PADDING}\n side=\"top\"\n align=\"center\"\n >\n <Avatar\n userId={userId}\n className=\"lb-avatar-stack-avatar\"\n style={{ \"--lb-avatar-stack-index\": index } as CSSProperties}\n />\n </Tooltip>\n );\n })}\n {remainingUsersCount > 0 ? (\n <Tooltip\n content={\n <ul className=\"lb-users-tooltip-list\">\n {hiddenUserIds.map((userId) =>\n userId ? (\n <li key={userId} className=\"lb-users-tooltip-list-item\">\n <Avatar userId={userId} />\n <User userId={userId} />\n </li>\n ) : null\n )}\n </ul>\n }\n sideOffset={FLOATING_ELEMENT_SIDE_OFFSET}\n collisionPadding={FLOATING_ELEMENT_COLLISION_PADDING}\n side=\"top\"\n align=\"center\"\n className=\"lb-users-tooltip\"\n >\n <div\n className=\"lb-avatar lb-avatar-stack-avatar lb-avatar-stack-more\"\n style={\n {\n \"--lb-avatar-stack-index\": visibleUserIds.length,\n } as CSSProperties\n }\n >\n <span className=\"lb-avatar-fallback\">\n +{remainingUsersCount}\n </span>\n </div>\n </Tooltip>\n ) : null}\n </div>\n </TooltipProvider>\n );\n }\n);\n"],"names":[],"mappings":";;;;;;;;;;;;;;AA2CO;AAAoB;AAEvB;AACgC;AACxB;AACN;AACA;AACA;AACA;AACG;AAIL;AACA;AACA;AACA;AACE;AAA8B;AAC5B;AACG;AACA;AAGL;AAAwB;AAE1B;AACA;AACA;AACA;AACA;AAGA;AACE;AAAO;AAGT;AAEI;AAAC;AAAA;AACmD;AAC3C;AAEL;AACiD;AACrB;AACvB;AACL;AAEE;AACC;AAEJ;AACC;AACE;AAAO;AAGT;AACE;AAAC;AAAA;AAEgC;AACnB;AACM;AACb;AACC;AAEN;AAAC;AAAA;AACC;AACU;AACgC;AAAA;AAC5C;AAAA;AAXK;AAYP;AAEH;AAEC;AAAC;AAAA;AAGoB;AAGT;AAAwB;AACF;AAEtB;AAER;AAEU;AACM;AACb;AACC;AACI;AAEV;AAAC;AAAA;AACW;AAER;AAC4C;AAC5C;AAGmC;AAAA;AACjC;AACJ;AAAA;AACF;AAAA;AAEA;AAAA;AAAA;AAER;AAGN;;"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
3
|
+
import { useOthers, useSelf } from '@liveblocks/react';
|
|
4
|
+
import { forwardRef, useMemo } from 'react';
|
|
5
|
+
import { FLOATING_ELEMENT_SIDE_OFFSET, FLOATING_ELEMENT_COLLISION_PADDING } from '../constants.js';
|
|
6
|
+
import { useOverrides } from '../overrides.js';
|
|
7
|
+
import { cn } from '../utils/cn.js';
|
|
8
|
+
import { Avatar } from './internal/Avatar.js';
|
|
9
|
+
import { TooltipProvider, Tooltip } from './internal/Tooltip.js';
|
|
10
|
+
import { User } from './internal/User.js';
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
const AvatarStack = forwardRef(
|
|
14
|
+
({
|
|
15
|
+
userIds: additionalUserIds = [],
|
|
16
|
+
max = 3,
|
|
17
|
+
size,
|
|
18
|
+
overrides,
|
|
19
|
+
className,
|
|
20
|
+
style,
|
|
21
|
+
...props
|
|
22
|
+
}, forwardedRef) => {
|
|
23
|
+
const $ = useOverrides(overrides);
|
|
24
|
+
const otherIds = useOthers((others) => others.map((user) => user.id));
|
|
25
|
+
const selfId = useSelf((self) => self.id);
|
|
26
|
+
const userIds = useMemo(() => {
|
|
27
|
+
const uniqueUserIds = /* @__PURE__ */ new Set([
|
|
28
|
+
selfId,
|
|
29
|
+
...otherIds,
|
|
30
|
+
...additionalUserIds
|
|
31
|
+
]);
|
|
32
|
+
return [...uniqueUserIds];
|
|
33
|
+
}, [selfId, otherIds, additionalUserIds]);
|
|
34
|
+
const maxAvatars = Math.max(1, Math.floor(max));
|
|
35
|
+
const visibleUserIds = userIds.slice(0, maxAvatars);
|
|
36
|
+
const hiddenUserIds = userIds.slice(visibleUserIds.length);
|
|
37
|
+
const remainingUsersCount = hiddenUserIds.length;
|
|
38
|
+
const visibleItemsCount = visibleUserIds.length + Number(remainingUsersCount > 0);
|
|
39
|
+
if (userIds.length === 0) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
return /* @__PURE__ */ jsx(TooltipProvider, { children: /* @__PURE__ */ jsxs(
|
|
43
|
+
"div",
|
|
44
|
+
{
|
|
45
|
+
className: cn("lb-root lb-avatar-stack", className),
|
|
46
|
+
dir: $.dir,
|
|
47
|
+
style: {
|
|
48
|
+
"--lb-avatar-stack-count": visibleItemsCount - 1,
|
|
49
|
+
"--lb-avatar-stack-size": size,
|
|
50
|
+
...style
|
|
51
|
+
},
|
|
52
|
+
...props,
|
|
53
|
+
ref: forwardedRef,
|
|
54
|
+
children: [
|
|
55
|
+
visibleUserIds.map((userId, index) => {
|
|
56
|
+
if (!userId) {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
return /* @__PURE__ */ jsx(
|
|
60
|
+
Tooltip,
|
|
61
|
+
{
|
|
62
|
+
content: /* @__PURE__ */ jsx(User, { userId }),
|
|
63
|
+
sideOffset: FLOATING_ELEMENT_SIDE_OFFSET,
|
|
64
|
+
collisionPadding: FLOATING_ELEMENT_COLLISION_PADDING,
|
|
65
|
+
side: "top",
|
|
66
|
+
align: "center",
|
|
67
|
+
children: /* @__PURE__ */ jsx(
|
|
68
|
+
Avatar,
|
|
69
|
+
{
|
|
70
|
+
userId,
|
|
71
|
+
className: "lb-avatar-stack-avatar",
|
|
72
|
+
style: { "--lb-avatar-stack-index": index }
|
|
73
|
+
}
|
|
74
|
+
)
|
|
75
|
+
},
|
|
76
|
+
userId
|
|
77
|
+
);
|
|
78
|
+
}),
|
|
79
|
+
remainingUsersCount > 0 ? /* @__PURE__ */ jsx(
|
|
80
|
+
Tooltip,
|
|
81
|
+
{
|
|
82
|
+
content: /* @__PURE__ */ jsx("ul", { className: "lb-users-tooltip-list", children: hiddenUserIds.map(
|
|
83
|
+
(userId) => userId ? /* @__PURE__ */ jsxs("li", { className: "lb-users-tooltip-list-item", children: [
|
|
84
|
+
/* @__PURE__ */ jsx(Avatar, { userId }),
|
|
85
|
+
/* @__PURE__ */ jsx(User, { userId })
|
|
86
|
+
] }, userId) : null
|
|
87
|
+
) }),
|
|
88
|
+
sideOffset: FLOATING_ELEMENT_SIDE_OFFSET,
|
|
89
|
+
collisionPadding: FLOATING_ELEMENT_COLLISION_PADDING,
|
|
90
|
+
side: "top",
|
|
91
|
+
align: "center",
|
|
92
|
+
className: "lb-users-tooltip",
|
|
93
|
+
children: /* @__PURE__ */ jsx(
|
|
94
|
+
"div",
|
|
95
|
+
{
|
|
96
|
+
className: "lb-avatar lb-avatar-stack-avatar lb-avatar-stack-more",
|
|
97
|
+
style: {
|
|
98
|
+
"--lb-avatar-stack-index": visibleUserIds.length
|
|
99
|
+
},
|
|
100
|
+
children: /* @__PURE__ */ jsxs("span", { className: "lb-avatar-fallback", children: [
|
|
101
|
+
"+",
|
|
102
|
+
remainingUsersCount
|
|
103
|
+
] })
|
|
104
|
+
}
|
|
105
|
+
)
|
|
106
|
+
}
|
|
107
|
+
) : null
|
|
108
|
+
]
|
|
109
|
+
}
|
|
110
|
+
) });
|
|
111
|
+
}
|
|
112
|
+
);
|
|
113
|
+
|
|
114
|
+
export { AvatarStack };
|
|
115
|
+
//# sourceMappingURL=AvatarStack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AvatarStack.js","sources":["../../src/components/AvatarStack.tsx"],"sourcesContent":["\"use client\";\n\nimport { useOthers, useSelf } from \"@liveblocks/react\";\nimport type { ComponentPropsWithoutRef, CSSProperties } from \"react\";\nimport { forwardRef, useMemo } from \"react\";\n\nimport {\n FLOATING_ELEMENT_COLLISION_PADDING,\n FLOATING_ELEMENT_SIDE_OFFSET,\n} from \"../constants\";\nimport type { GlobalOverrides } from \"../overrides\";\nimport { useOverrides } from \"../overrides\";\nimport { cn } from \"../utils/cn\";\nimport { Avatar } from \"./internal/Avatar\";\nimport { Tooltip, TooltipProvider } from \"./internal/Tooltip\";\nimport { User } from \"./internal/User\";\n\nexport interface AvatarStackProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * Optional additional user IDs to include in the stack.\n */\n userIds?: string[];\n\n /**\n * The maximum number of visible avatars.\n * Defaults to 3, set to `undefined` to show all avatars.\n */\n max?: number;\n\n /**\n * The size of the avatars.\n */\n size?: string | number;\n\n /**\n * Override the component's strings.\n */\n overrides?: Partial<GlobalOverrides>;\n}\n\n/**\n * Displays a stack of avatars for the users currently present in the room.\n */\nexport const AvatarStack = forwardRef<HTMLDivElement, AvatarStackProps>(\n (\n {\n userIds: additionalUserIds = [],\n max = 3,\n size,\n overrides,\n className,\n style,\n ...props\n },\n forwardedRef\n ) => {\n const $ = useOverrides(overrides);\n const otherIds = useOthers((others) => others.map((user) => user.id));\n const selfId = useSelf((self) => self.id);\n const userIds = useMemo(() => {\n const uniqueUserIds = new Set([\n selfId,\n ...otherIds,\n ...additionalUserIds,\n ]);\n\n return [...uniqueUserIds];\n }, [selfId, otherIds, additionalUserIds]);\n const maxAvatars = Math.max(1, Math.floor(max));\n const visibleUserIds = userIds.slice(0, maxAvatars);\n const hiddenUserIds = userIds.slice(visibleUserIds.length);\n const remainingUsersCount = hiddenUserIds.length;\n const visibleItemsCount =\n visibleUserIds.length + Number(remainingUsersCount > 0);\n\n if (userIds.length === 0) {\n return null;\n }\n\n return (\n <TooltipProvider>\n <div\n className={cn(\"lb-root lb-avatar-stack\", className)}\n dir={$.dir}\n style={\n {\n \"--lb-avatar-stack-count\": visibleItemsCount - 1,\n \"--lb-avatar-stack-size\": size,\n ...style,\n } as CSSProperties\n }\n {...props}\n ref={forwardedRef}\n >\n {visibleUserIds.map((userId, index) => {\n if (!userId) {\n return null;\n }\n\n return (\n <Tooltip\n key={userId}\n content={<User userId={userId} />}\n sideOffset={FLOATING_ELEMENT_SIDE_OFFSET}\n collisionPadding={FLOATING_ELEMENT_COLLISION_PADDING}\n side=\"top\"\n align=\"center\"\n >\n <Avatar\n userId={userId}\n className=\"lb-avatar-stack-avatar\"\n style={{ \"--lb-avatar-stack-index\": index } as CSSProperties}\n />\n </Tooltip>\n );\n })}\n {remainingUsersCount > 0 ? (\n <Tooltip\n content={\n <ul className=\"lb-users-tooltip-list\">\n {hiddenUserIds.map((userId) =>\n userId ? (\n <li key={userId} className=\"lb-users-tooltip-list-item\">\n <Avatar userId={userId} />\n <User userId={userId} />\n </li>\n ) : null\n )}\n </ul>\n }\n sideOffset={FLOATING_ELEMENT_SIDE_OFFSET}\n collisionPadding={FLOATING_ELEMENT_COLLISION_PADDING}\n side=\"top\"\n align=\"center\"\n className=\"lb-users-tooltip\"\n >\n <div\n className=\"lb-avatar lb-avatar-stack-avatar lb-avatar-stack-more\"\n style={\n {\n \"--lb-avatar-stack-index\": visibleUserIds.length,\n } as CSSProperties\n }\n >\n <span className=\"lb-avatar-fallback\">\n +{remainingUsersCount}\n </span>\n </div>\n </Tooltip>\n ) : null}\n </div>\n </TooltipProvider>\n );\n }\n);\n"],"names":[],"mappings":";;;;;;;;;;;;AA2CO;AAAoB;AAEvB;AACgC;AACxB;AACN;AACA;AACA;AACA;AACG;AAIL;AACA;AACA;AACA;AACE;AAA8B;AAC5B;AACG;AACA;AAGL;AAAwB;AAE1B;AACA;AACA;AACA;AACA;AAGA;AACE;AAAO;AAGT;AAEI;AAAC;AAAA;AACmD;AAC3C;AAEL;AACiD;AACrB;AACvB;AACL;AAEE;AACC;AAEJ;AACC;AACE;AAAO;AAGT;AACE;AAAC;AAAA;AAEgC;AACnB;AACM;AACb;AACC;AAEN;AAAC;AAAA;AACC;AACU;AACgC;AAAA;AAC5C;AAAA;AAXK;AAYP;AAEH;AAEC;AAAC;AAAA;AAGoB;AAGT;AAAwB;AACF;AAEtB;AAER;AAEU;AACM;AACb;AACC;AACI;AAEV;AAAC;AAAA;AACW;AAER;AAC4C;AAC5C;AAGmC;AAAA;AACjC;AACJ;AAAA;AACF;AAAA;AAEA;AAAA;AAAA;AAER;AAGN;;"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
var jsxRuntime = require('react/jsx-runtime');
|
|
5
5
|
var core = require('@liveblocks/core');
|
|
6
6
|
var _private = require('@liveblocks/react/_private');
|
|
7
|
-
var
|
|
7
|
+
var radixUi = require('radix-ui');
|
|
8
8
|
var react = require('react');
|
|
9
9
|
var components = require('../components.cjs');
|
|
10
10
|
var Check = require('../icons/Check.cjs');
|
|
@@ -33,28 +33,6 @@ var Group = require('./internal/Group.cjs');
|
|
|
33
33
|
var List = require('./internal/List.cjs');
|
|
34
34
|
var Tooltip = require('./internal/Tooltip.cjs');
|
|
35
35
|
var User = require('./internal/User.cjs');
|
|
36
|
-
var PopoverPrimitive = require('@radix-ui/react-popover');
|
|
37
|
-
var TooltipPrimitive = require('@radix-ui/react-tooltip');
|
|
38
|
-
var DropdownMenuPrimitive = require('@radix-ui/react-dropdown-menu');
|
|
39
|
-
|
|
40
|
-
function _interopNamespaceDefault(e) {
|
|
41
|
-
var n = Object.create(null);
|
|
42
|
-
if (e) {
|
|
43
|
-
Object.keys(e).forEach(function (k) {
|
|
44
|
-
if (k !== 'default') {
|
|
45
|
-
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
46
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
47
|
-
enumerable: true,
|
|
48
|
-
get: function () { return e[k]; }
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
n.default = e;
|
|
54
|
-
return Object.freeze(n);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
var TogglePrimitive__namespace = /*#__PURE__*/_interopNamespaceDefault(TogglePrimitive);
|
|
58
36
|
|
|
59
37
|
|
|
60
38
|
const REACTIONS_TRUNCATE = 5;
|
|
@@ -221,7 +199,7 @@ const CommentReaction = react.forwardRef(({ comment, reaction, overrides: overri
|
|
|
221
199
|
multiline: true,
|
|
222
200
|
className: "lb-comment-reaction-tooltip",
|
|
223
201
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
224
|
-
|
|
202
|
+
radixUi.Toggle.Root,
|
|
225
203
|
{
|
|
226
204
|
asChild: true,
|
|
227
205
|
pressed: isActive,
|
|
@@ -401,6 +379,7 @@ const Comment = Object.assign(
|
|
|
401
379
|
children,
|
|
402
380
|
...props
|
|
403
381
|
}, forwardedRef) => {
|
|
382
|
+
const bodyId = `${comment.id}:body`;
|
|
404
383
|
const ref = react.useRef(null);
|
|
405
384
|
const mergedRefs = useRefs.useRefs(forwardedRef, ref);
|
|
406
385
|
const currentUserId = shared.useCurrentUserId();
|
|
@@ -576,6 +555,7 @@ const Comment = Object.assign(
|
|
|
576
555
|
index.Body,
|
|
577
556
|
{
|
|
578
557
|
className: "lb-comment-body",
|
|
558
|
+
id: bodyId,
|
|
579
559
|
body: comment.body,
|
|
580
560
|
components: {
|
|
581
561
|
Mention: ({ mention }) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -624,7 +604,7 @@ const Comment = Object.assign(
|
|
|
624
604
|
},
|
|
625
605
|
reaction.emoji
|
|
626
606
|
)),
|
|
627
|
-
canComment ? /* @__PURE__ */ jsxRuntime.jsx(EmojiPicker.EmojiPicker, { onEmojiSelect: handleReactionSelect, children: /* @__PURE__ */ jsxRuntime.jsx(Tooltip.Tooltip, { content: $.COMMENT_ADD_REACTION, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
607
|
+
canComment ? /* @__PURE__ */ jsxRuntime.jsx(EmojiPicker.EmojiPicker, { onEmojiSelect: handleReactionSelect, children: /* @__PURE__ */ jsxRuntime.jsx(Tooltip.Tooltip, { content: $.COMMENT_ADD_REACTION, children: /* @__PURE__ */ jsxRuntime.jsx(EmojiPicker.EmojiPickerTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
628
608
|
Button.Button,
|
|
629
609
|
{
|
|
630
610
|
className: "lb-comment-reaction lb-comment-reaction-add",
|
|
@@ -638,9 +618,10 @@ const Comment = Object.assign(
|
|
|
638
618
|
] }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "lb-comment-body", children: /* @__PURE__ */ jsxRuntime.jsx("p", { className: "lb-comment-deleted", children: $.COMMENT_DELETED }) });
|
|
639
619
|
content = typeof children === "function" ? children({ comment, children: content }) : children ?? content;
|
|
640
620
|
}
|
|
641
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
621
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Tooltip.TooltipProvider, { children: /* @__PURE__ */ jsxRuntime.jsx(components.ComponentsProvider, { components: components$1, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
642
622
|
"div",
|
|
643
623
|
{
|
|
624
|
+
role: "article",
|
|
644
625
|
id: comment.id,
|
|
645
626
|
className: cn.cn(
|
|
646
627
|
"lb-root lb-comment",
|
|
@@ -652,6 +633,7 @@ const Comment = Object.assign(
|
|
|
652
633
|
"data-deleted": !comment.body ? "" : void 0,
|
|
653
634
|
"data-editing": isEditing ? "" : void 0,
|
|
654
635
|
"data-target": isTarget ? "" : void 0,
|
|
636
|
+
"aria-labelledby": bodyId,
|
|
655
637
|
dir: $.dir,
|
|
656
638
|
...props,
|
|
657
639
|
ref: mergedRefs,
|
|
@@ -712,7 +694,7 @@ const Comment = Object.assign(
|
|
|
712
694
|
{
|
|
713
695
|
onEmojiSelect: handleReactionSelect,
|
|
714
696
|
onOpenChange: setReactionActionOpen,
|
|
715
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(Tooltip.Tooltip, { content: $.COMMENT_ADD_REACTION, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
697
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Tooltip.Tooltip, { content: $.COMMENT_ADD_REACTION, children: /* @__PURE__ */ jsxRuntime.jsx(EmojiPicker.EmojiPickerTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
716
698
|
Button.Button,
|
|
717
699
|
{
|
|
718
700
|
className: "lb-comment-action",
|
|
@@ -730,7 +712,7 @@ const Comment = Object.assign(
|
|
|
730
712
|
onOpenChange: setMoreActionOpen,
|
|
731
713
|
align: "end",
|
|
732
714
|
content: dropdownContent,
|
|
733
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(Tooltip.Tooltip, { content: $.COMMENT_MORE, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
715
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Tooltip.Tooltip, { content: $.COMMENT_MORE, children: /* @__PURE__ */ jsxRuntime.jsx(Dropdown.DropdownTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
734
716
|
Button.Button,
|
|
735
717
|
{
|
|
736
718
|
className: "lb-comment-action",
|