@liveblocks/react-ui 3.14.0-types2 → 3.15.0-components1
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 +1 -1
- package/dist/_private/index.cjs +5 -5
- package/dist/_private/index.d.cts +14 -4
- package/dist/_private/index.d.ts +14 -4
- package/dist/_private/index.js +3 -2
- package/dist/_private/index.js.map +1 -1
- package/dist/components/AvatarStack.cjs +115 -0
- package/dist/components/AvatarStack.cjs.map +1 -0
- package/dist/components/AvatarStack.js +113 -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 +27 -0
- package/dist/components/CommentPin.cjs.map +1 -0
- package/dist/components/CommentPin.js +25 -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 +252 -0
- package/dist/components/Cursors.cjs.map +1 -0
- package/dist/components/Cursors.js +250 -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 -26
- package/dist/components/Thread.cjs.map +1 -1
- package/dist/components/Thread.js +19 -7
- 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/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 +214 -125
- package/dist/index.d.ts +214 -125
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/primitives/AiComposer/index.cjs +9 -6
- package/dist/primitives/AiComposer/index.cjs.map +1 -1
- package/dist/primitives/AiComposer/index.js +9 -6
- 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 +27 -42
- package/dist/primitives/Composer/index.cjs.map +1 -1
- package/dist/primitives/Composer/index.js +27 -23
- 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 +6 -3
- package/dist/utils/Portal.cjs.map +1 -1
- package/dist/utils/Portal.js +6 -3
- 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 +9 -13
- 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
package/dist/_private/index.cjs
CHANGED
|
@@ -8,9 +8,11 @@ var List = require('../components/internal/List.cjs');
|
|
|
8
8
|
var Prose = require('../components/internal/Prose.cjs');
|
|
9
9
|
var Tooltip = require('../components/internal/Tooltip.cjs');
|
|
10
10
|
var User = require('../components/internal/User.cjs');
|
|
11
|
+
var config = require('../config.cjs');
|
|
11
12
|
require('../icons/index.cjs');
|
|
12
13
|
var capitalize = require('../utils/capitalize.cjs');
|
|
13
14
|
var cn = require('../utils/cn.cjs');
|
|
15
|
+
var Portal = require('../utils/Portal.cjs');
|
|
14
16
|
var useInitial = require('../utils/use-initial.cjs');
|
|
15
17
|
var useRefs = require('../utils/use-refs.cjs');
|
|
16
18
|
var index = require('../primitives/AiComposer/index.cjs');
|
|
@@ -18,7 +20,6 @@ var contexts = require('../primitives/AiComposer/contexts.cjs');
|
|
|
18
20
|
var index$1 = require('../primitives/AiMessage/index.cjs');
|
|
19
21
|
var index$2 = require('../primitives/Collapsible/index.cjs');
|
|
20
22
|
var Markdown = require('../primitives/Markdown.cjs');
|
|
21
|
-
var TooltipPrimitive = require('@radix-ui/react-tooltip');
|
|
22
23
|
var ArrowCornerDownRight = require('../icons/ArrowCornerDownRight.cjs');
|
|
23
24
|
var ArrowCornerUpRight = require('../icons/ArrowCornerUpRight.cjs');
|
|
24
25
|
var ArrowDown = require('../icons/ArrowDown.cjs');
|
|
@@ -86,9 +87,12 @@ exports.List = List.List;
|
|
|
86
87
|
exports.Prose = Prose.Prose;
|
|
87
88
|
exports.ShortcutTooltip = Tooltip.ShortcutTooltip;
|
|
88
89
|
exports.Tooltip = Tooltip.Tooltip;
|
|
90
|
+
exports.TooltipProvider = Tooltip.TooltipProvider;
|
|
89
91
|
exports.User = User.User;
|
|
92
|
+
exports.useLiveblocksUiConfig = config.useLiveblocksUiConfig;
|
|
90
93
|
exports.capitalize = capitalize.capitalize;
|
|
91
94
|
exports.cn = cn.cn;
|
|
95
|
+
exports.Portal = Portal.Portal;
|
|
92
96
|
exports.useInitial = useInitial.useInitial;
|
|
93
97
|
exports.useRefs = useRefs.useRefs;
|
|
94
98
|
exports.AiComposer = index;
|
|
@@ -96,10 +100,6 @@ exports.useAiComposer = contexts.useAiComposer;
|
|
|
96
100
|
exports.AiMessage = index$1;
|
|
97
101
|
exports.Collapsible = index$2;
|
|
98
102
|
exports.Markdown = Markdown.Markdown;
|
|
99
|
-
Object.defineProperty(exports, 'TooltipProvider', {
|
|
100
|
-
enumerable: true,
|
|
101
|
-
get: function () { return TooltipPrimitive.TooltipProvider; }
|
|
102
|
-
});
|
|
103
103
|
exports.ArrowCornerDownRightIcon = ArrowCornerDownRight.ArrowCornerDownRightIcon;
|
|
104
104
|
exports.ArrowCornerUpRightIcon = ArrowCornerUpRight.ArrowCornerUpRightIcon;
|
|
105
105
|
exports.ArrowDownIcon = ArrowDown.ArrowDownIcon;
|
|
@@ -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
|
/**
|
|
@@ -367,6 +367,14 @@ interface UserProps extends ComponentProps<"span"> {
|
|
|
367
367
|
}
|
|
368
368
|
declare function User({ userId, replaceSelf, className, children, ...props }: UserProps): react_jsx_runtime.JSX.Element;
|
|
369
369
|
|
|
370
|
+
interface LiveblocksUiConfigContext {
|
|
371
|
+
portalContainer?: HTMLElement;
|
|
372
|
+
preventUnsavedComposerChanges?: boolean;
|
|
373
|
+
emojibaseUrl?: string;
|
|
374
|
+
}
|
|
375
|
+
declare const LiveblocksUiConfigContext: react.Context<LiveblocksUiConfigContext>;
|
|
376
|
+
declare function useLiveblocksUiConfig(): LiveblocksUiConfigContext;
|
|
377
|
+
|
|
370
378
|
declare function ArrowCornerDownRightIcon(props: ComponentProps<"svg">): react_jsx_runtime.JSX.Element;
|
|
371
379
|
|
|
372
380
|
declare function ArrowCornerUpRightIcon(props: ComponentProps<"svg">): react_jsx_runtime.JSX.Element;
|
|
@@ -484,6 +492,8 @@ declare function capitalize(string: string): string;
|
|
|
484
492
|
*/
|
|
485
493
|
declare function cn(...args: (string | number | boolean | undefined | null)[]): string;
|
|
486
494
|
|
|
495
|
+
declare const Portal: react.ForwardRefExoticComponent<Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & SlotProp & react.RefAttributes<HTMLDivElement>>;
|
|
496
|
+
|
|
487
497
|
/**
|
|
488
498
|
* "Freezes" a given value, so that it will return the same value/instance on
|
|
489
499
|
* each subsequent render. This can be used to freeze "initial" values for
|
|
@@ -708,4 +718,4 @@ declare namespace index {
|
|
|
708
718
|
};
|
|
709
719
|
}
|
|
710
720
|
|
|
711
|
-
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, 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, useRefs };
|
|
721
|
+
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 };
|
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
|
/**
|
|
@@ -367,6 +367,14 @@ interface UserProps extends ComponentProps<"span"> {
|
|
|
367
367
|
}
|
|
368
368
|
declare function User({ userId, replaceSelf, className, children, ...props }: UserProps): react_jsx_runtime.JSX.Element;
|
|
369
369
|
|
|
370
|
+
interface LiveblocksUiConfigContext {
|
|
371
|
+
portalContainer?: HTMLElement;
|
|
372
|
+
preventUnsavedComposerChanges?: boolean;
|
|
373
|
+
emojibaseUrl?: string;
|
|
374
|
+
}
|
|
375
|
+
declare const LiveblocksUiConfigContext: react.Context<LiveblocksUiConfigContext>;
|
|
376
|
+
declare function useLiveblocksUiConfig(): LiveblocksUiConfigContext;
|
|
377
|
+
|
|
370
378
|
declare function ArrowCornerDownRightIcon(props: ComponentProps<"svg">): react_jsx_runtime.JSX.Element;
|
|
371
379
|
|
|
372
380
|
declare function ArrowCornerUpRightIcon(props: ComponentProps<"svg">): react_jsx_runtime.JSX.Element;
|
|
@@ -484,6 +492,8 @@ declare function capitalize(string: string): string;
|
|
|
484
492
|
*/
|
|
485
493
|
declare function cn(...args: (string | number | boolean | undefined | null)[]): string;
|
|
486
494
|
|
|
495
|
+
declare const Portal: react.ForwardRefExoticComponent<Omit<react.DetailedHTMLProps<react.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & SlotProp & react.RefAttributes<HTMLDivElement>>;
|
|
496
|
+
|
|
487
497
|
/**
|
|
488
498
|
* "Freezes" a given value, so that it will return the same value/instance on
|
|
489
499
|
* each subsequent render. This can be used to freeze "initial" values for
|
|
@@ -708,4 +718,4 @@ declare namespace index {
|
|
|
708
718
|
};
|
|
709
719
|
}
|
|
710
720
|
|
|
711
|
-
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, 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, useRefs };
|
|
721
|
+
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 };
|
package/dist/_private/index.js
CHANGED
|
@@ -4,11 +4,13 @@ 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
|
+
export { useLiveblocksUiConfig } from '../config.js';
|
|
9
10
|
import '../icons/index.js';
|
|
10
11
|
export { capitalize } from '../utils/capitalize.js';
|
|
11
12
|
export { cn } from '../utils/cn.js';
|
|
13
|
+
export { Portal } from '../utils/Portal.js';
|
|
12
14
|
export { useInitial } from '../utils/use-initial.js';
|
|
13
15
|
export { useRefs } from '../utils/use-refs.js';
|
|
14
16
|
import * as index from '../primitives/AiComposer/index.js';
|
|
@@ -19,7 +21,6 @@ export { index$1 as AiMessage };
|
|
|
19
21
|
import * as index$2 from '../primitives/Collapsible/index.js';
|
|
20
22
|
export { index$2 as Collapsible };
|
|
21
23
|
export { Markdown } from '../primitives/Markdown.js';
|
|
22
|
-
export { TooltipProvider } from '@radix-ui/react-tooltip';
|
|
23
24
|
export { ArrowCornerDownRightIcon } from '../icons/ArrowCornerDownRight.js';
|
|
24
25
|
export { ArrowCornerUpRightIcon } from '../icons/ArrowCornerUpRight.js';
|
|
25
26
|
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,115 @@
|
|
|
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
|
+
overrides: overrides$1,
|
|
20
|
+
className,
|
|
21
|
+
style,
|
|
22
|
+
...props
|
|
23
|
+
}, forwardedRef) => {
|
|
24
|
+
const $ = overrides.useOverrides(overrides$1);
|
|
25
|
+
const otherIds = react$1.useOthers((others) => others.map((user) => user.id));
|
|
26
|
+
const selfId = react$1.useSelf((self) => self.id);
|
|
27
|
+
const userIds = react.useMemo(() => {
|
|
28
|
+
const uniqueUserIds = /* @__PURE__ */ new Set([
|
|
29
|
+
selfId,
|
|
30
|
+
...otherIds,
|
|
31
|
+
...additionalUserIds
|
|
32
|
+
]);
|
|
33
|
+
return [...uniqueUserIds];
|
|
34
|
+
}, [selfId, otherIds, additionalUserIds]);
|
|
35
|
+
const maxAvatars = Math.max(1, Math.floor(max));
|
|
36
|
+
const visibleUserIds = userIds.slice(0, maxAvatars);
|
|
37
|
+
const hiddenUserIds = userIds.slice(visibleUserIds.length);
|
|
38
|
+
const remainingUsersCount = hiddenUserIds.length;
|
|
39
|
+
const visibleItemsCount = visibleUserIds.length + Number(remainingUsersCount > 0);
|
|
40
|
+
if (userIds.length === 0) {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Tooltip.TooltipProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
44
|
+
"div",
|
|
45
|
+
{
|
|
46
|
+
className: cn.cn("lb-root lb-avatar-stack", className),
|
|
47
|
+
dir: $.dir,
|
|
48
|
+
style: {
|
|
49
|
+
"--lb-avatar-stack-count": visibleItemsCount - 1,
|
|
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__ */ jsxRuntime.jsx(
|
|
60
|
+
Tooltip.Tooltip,
|
|
61
|
+
{
|
|
62
|
+
content: /* @__PURE__ */ jsxRuntime.jsx(User.User, { userId }),
|
|
63
|
+
sideOffset: constants.FLOATING_ELEMENT_SIDE_OFFSET,
|
|
64
|
+
collisionPadding: constants.FLOATING_ELEMENT_COLLISION_PADDING,
|
|
65
|
+
side: "top",
|
|
66
|
+
align: "center",
|
|
67
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
68
|
+
Avatar.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__ */ jsxRuntime.jsx(
|
|
80
|
+
Tooltip.Tooltip,
|
|
81
|
+
{
|
|
82
|
+
content: /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "lb-users-tooltip-list", children: hiddenUserIds.map(
|
|
83
|
+
(userId) => userId ? /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "lb-users-tooltip-list-item", children: [
|
|
84
|
+
/* @__PURE__ */ jsxRuntime.jsx(Avatar.Avatar, { userId }),
|
|
85
|
+
/* @__PURE__ */ jsxRuntime.jsx(User.User, { userId })
|
|
86
|
+
] }, userId) : null
|
|
87
|
+
) }),
|
|
88
|
+
sideOffset: constants.FLOATING_ELEMENT_SIDE_OFFSET,
|
|
89
|
+
collisionPadding: constants.FLOATING_ELEMENT_COLLISION_PADDING,
|
|
90
|
+
side: "top",
|
|
91
|
+
align: "center",
|
|
92
|
+
className: "lb-users-tooltip",
|
|
93
|
+
children: /* @__PURE__ */ jsxRuntime.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__ */ jsxRuntime.jsxs("span", { className: "lb-avatar-fallback", children: [
|
|
101
|
+
"+",
|
|
102
|
+
remainingUsersCount
|
|
103
|
+
] })
|
|
104
|
+
}
|
|
105
|
+
)
|
|
106
|
+
}
|
|
107
|
+
) : null
|
|
108
|
+
]
|
|
109
|
+
}
|
|
110
|
+
) });
|
|
111
|
+
}
|
|
112
|
+
);
|
|
113
|
+
|
|
114
|
+
exports.AvatarStack = AvatarStack;
|
|
115
|
+
//# 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 */\n max?: 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 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 ...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":";;;;;;;;;;;;;;AAqCO;AAAoB;AAEvB;AACgC;AACxB;AACN;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;AAC5C;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,113 @@
|
|
|
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
|
+
overrides,
|
|
18
|
+
className,
|
|
19
|
+
style,
|
|
20
|
+
...props
|
|
21
|
+
}, forwardedRef) => {
|
|
22
|
+
const $ = useOverrides(overrides);
|
|
23
|
+
const otherIds = useOthers((others) => others.map((user) => user.id));
|
|
24
|
+
const selfId = useSelf((self) => self.id);
|
|
25
|
+
const userIds = useMemo(() => {
|
|
26
|
+
const uniqueUserIds = /* @__PURE__ */ new Set([
|
|
27
|
+
selfId,
|
|
28
|
+
...otherIds,
|
|
29
|
+
...additionalUserIds
|
|
30
|
+
]);
|
|
31
|
+
return [...uniqueUserIds];
|
|
32
|
+
}, [selfId, otherIds, additionalUserIds]);
|
|
33
|
+
const maxAvatars = Math.max(1, Math.floor(max));
|
|
34
|
+
const visibleUserIds = userIds.slice(0, maxAvatars);
|
|
35
|
+
const hiddenUserIds = userIds.slice(visibleUserIds.length);
|
|
36
|
+
const remainingUsersCount = hiddenUserIds.length;
|
|
37
|
+
const visibleItemsCount = visibleUserIds.length + Number(remainingUsersCount > 0);
|
|
38
|
+
if (userIds.length === 0) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
return /* @__PURE__ */ jsx(TooltipProvider, { children: /* @__PURE__ */ jsxs(
|
|
42
|
+
"div",
|
|
43
|
+
{
|
|
44
|
+
className: cn("lb-root lb-avatar-stack", className),
|
|
45
|
+
dir: $.dir,
|
|
46
|
+
style: {
|
|
47
|
+
"--lb-avatar-stack-count": visibleItemsCount - 1,
|
|
48
|
+
...style
|
|
49
|
+
},
|
|
50
|
+
...props,
|
|
51
|
+
ref: forwardedRef,
|
|
52
|
+
children: [
|
|
53
|
+
visibleUserIds.map((userId, index) => {
|
|
54
|
+
if (!userId) {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
return /* @__PURE__ */ jsx(
|
|
58
|
+
Tooltip,
|
|
59
|
+
{
|
|
60
|
+
content: /* @__PURE__ */ jsx(User, { userId }),
|
|
61
|
+
sideOffset: FLOATING_ELEMENT_SIDE_OFFSET,
|
|
62
|
+
collisionPadding: FLOATING_ELEMENT_COLLISION_PADDING,
|
|
63
|
+
side: "top",
|
|
64
|
+
align: "center",
|
|
65
|
+
children: /* @__PURE__ */ jsx(
|
|
66
|
+
Avatar,
|
|
67
|
+
{
|
|
68
|
+
userId,
|
|
69
|
+
className: "lb-avatar-stack-avatar",
|
|
70
|
+
style: { "--lb-avatar-stack-index": index }
|
|
71
|
+
}
|
|
72
|
+
)
|
|
73
|
+
},
|
|
74
|
+
userId
|
|
75
|
+
);
|
|
76
|
+
}),
|
|
77
|
+
remainingUsersCount > 0 ? /* @__PURE__ */ jsx(
|
|
78
|
+
Tooltip,
|
|
79
|
+
{
|
|
80
|
+
content: /* @__PURE__ */ jsx("ul", { className: "lb-users-tooltip-list", children: hiddenUserIds.map(
|
|
81
|
+
(userId) => userId ? /* @__PURE__ */ jsxs("li", { className: "lb-users-tooltip-list-item", children: [
|
|
82
|
+
/* @__PURE__ */ jsx(Avatar, { userId }),
|
|
83
|
+
/* @__PURE__ */ jsx(User, { userId })
|
|
84
|
+
] }, userId) : null
|
|
85
|
+
) }),
|
|
86
|
+
sideOffset: FLOATING_ELEMENT_SIDE_OFFSET,
|
|
87
|
+
collisionPadding: FLOATING_ELEMENT_COLLISION_PADDING,
|
|
88
|
+
side: "top",
|
|
89
|
+
align: "center",
|
|
90
|
+
className: "lb-users-tooltip",
|
|
91
|
+
children: /* @__PURE__ */ jsx(
|
|
92
|
+
"div",
|
|
93
|
+
{
|
|
94
|
+
className: "lb-avatar lb-avatar-stack-avatar lb-avatar-stack-more",
|
|
95
|
+
style: {
|
|
96
|
+
"--lb-avatar-stack-index": visibleUserIds.length
|
|
97
|
+
},
|
|
98
|
+
children: /* @__PURE__ */ jsxs("span", { className: "lb-avatar-fallback", children: [
|
|
99
|
+
"+",
|
|
100
|
+
remainingUsersCount
|
|
101
|
+
] })
|
|
102
|
+
}
|
|
103
|
+
)
|
|
104
|
+
}
|
|
105
|
+
) : null
|
|
106
|
+
]
|
|
107
|
+
}
|
|
108
|
+
) });
|
|
109
|
+
}
|
|
110
|
+
);
|
|
111
|
+
|
|
112
|
+
export { AvatarStack };
|
|
113
|
+
//# 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 */\n max?: 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 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 ...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":";;;;;;;;;;;;AAqCO;AAAoB;AAEvB;AACgC;AACxB;AACN;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;AAC5C;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');
|
|
@@ -35,28 +35,6 @@ var Group = require('./internal/Group.cjs');
|
|
|
35
35
|
var List = require('./internal/List.cjs');
|
|
36
36
|
var Tooltip = require('./internal/Tooltip.cjs');
|
|
37
37
|
var User = require('./internal/User.cjs');
|
|
38
|
-
var TooltipPrimitive = require('@radix-ui/react-tooltip');
|
|
39
|
-
var PopoverPrimitive = require('@radix-ui/react-popover');
|
|
40
|
-
var DropdownMenuPrimitive = require('@radix-ui/react-dropdown-menu');
|
|
41
|
-
|
|
42
|
-
function _interopNamespaceDefault(e) {
|
|
43
|
-
var n = Object.create(null);
|
|
44
|
-
if (e) {
|
|
45
|
-
Object.keys(e).forEach(function (k) {
|
|
46
|
-
if (k !== 'default') {
|
|
47
|
-
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
48
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
49
|
-
enumerable: true,
|
|
50
|
-
get: function () { return e[k]; }
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
n.default = e;
|
|
56
|
-
return Object.freeze(n);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
var TogglePrimitive__namespace = /*#__PURE__*/_interopNamespaceDefault(TogglePrimitive);
|
|
60
38
|
|
|
61
39
|
|
|
62
40
|
const REACTIONS_TRUNCATE = 5;
|
|
@@ -206,7 +184,7 @@ const CommentReaction = react.forwardRef(({ comment, reaction, overrides: overri
|
|
|
206
184
|
multiline: true,
|
|
207
185
|
className: "lb-comment-reaction-tooltip",
|
|
208
186
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
209
|
-
|
|
187
|
+
radixUi.Toggle.Root,
|
|
210
188
|
{
|
|
211
189
|
asChild: true,
|
|
212
190
|
pressed: isActive,
|
|
@@ -402,6 +380,7 @@ const Comment = Object.assign(
|
|
|
402
380
|
autoMarkReadThreadId,
|
|
403
381
|
...props
|
|
404
382
|
}, forwardedRef) => {
|
|
383
|
+
const bodyId = `${comment.id}:body`;
|
|
405
384
|
const ref = react.useRef(null);
|
|
406
385
|
const mergedRefs = useRefs.useRefs(forwardedRef, ref);
|
|
407
386
|
const currentUserId = shared.useCurrentUserId();
|
|
@@ -514,7 +493,7 @@ const Comment = Object.assign(
|
|
|
514
493
|
defaultDropdownItems,
|
|
515
494
|
dropdownItems
|
|
516
495
|
] });
|
|
517
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
496
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Tooltip.TooltipProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs(components.ComponentsProvider, { components: components$1, children: [
|
|
518
497
|
autoMarkReadThreadId && /* @__PURE__ */ jsxRuntime.jsx(
|
|
519
498
|
AutoMarkReadThreadIdHandler,
|
|
520
499
|
{
|
|
@@ -526,6 +505,7 @@ const Comment = Object.assign(
|
|
|
526
505
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
527
506
|
"div",
|
|
528
507
|
{
|
|
508
|
+
role: "article",
|
|
529
509
|
id: comment.id,
|
|
530
510
|
className: cn.cn(
|
|
531
511
|
"lb-root lb-comment",
|
|
@@ -537,6 +517,7 @@ const Comment = Object.assign(
|
|
|
537
517
|
"data-deleted": !comment.body ? "" : void 0,
|
|
538
518
|
"data-editing": isEditing ? "" : void 0,
|
|
539
519
|
"data-target": isTarget ? "" : void 0,
|
|
520
|
+
"aria-labelledby": bodyId,
|
|
540
521
|
dir: $.dir,
|
|
541
522
|
...props,
|
|
542
523
|
ref: mergedRefs,
|
|
@@ -583,7 +564,7 @@ const Comment = Object.assign(
|
|
|
583
564
|
{
|
|
584
565
|
onEmojiSelect: handleReactionSelect,
|
|
585
566
|
onOpenChange: setReactionActionOpen,
|
|
586
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(Tooltip.Tooltip, { content: $.COMMENT_ADD_REACTION, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
567
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Tooltip.Tooltip, { content: $.COMMENT_ADD_REACTION, children: /* @__PURE__ */ jsxRuntime.jsx(EmojiPicker.EmojiPickerTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
587
568
|
Button.Button,
|
|
588
569
|
{
|
|
589
570
|
className: "lb-comment-action",
|
|
@@ -601,7 +582,7 @@ const Comment = Object.assign(
|
|
|
601
582
|
onOpenChange: setMoreActionOpen,
|
|
602
583
|
align: "end",
|
|
603
584
|
content: dropdownContent,
|
|
604
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(Tooltip.Tooltip, { content: $.COMMENT_MORE, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
585
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Tooltip.Tooltip, { content: $.COMMENT_MORE, children: /* @__PURE__ */ jsxRuntime.jsx(Dropdown.DropdownTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
605
586
|
Button.Button,
|
|
606
587
|
{
|
|
607
588
|
className: "lb-comment-action",
|
|
@@ -670,6 +651,7 @@ const Comment = Object.assign(
|
|
|
670
651
|
index.Body,
|
|
671
652
|
{
|
|
672
653
|
className: "lb-comment-body",
|
|
654
|
+
id: bodyId,
|
|
673
655
|
body: comment.body,
|
|
674
656
|
components: {
|
|
675
657
|
Mention: ({ mention }) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -717,7 +699,7 @@ const Comment = Object.assign(
|
|
|
717
699
|
},
|
|
718
700
|
reaction.emoji
|
|
719
701
|
)),
|
|
720
|
-
canComment ? /* @__PURE__ */ jsxRuntime.jsx(EmojiPicker.EmojiPicker, { onEmojiSelect: handleReactionSelect, children: /* @__PURE__ */ jsxRuntime.jsx(Tooltip.Tooltip, { content: $.COMMENT_ADD_REACTION, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
702
|
+
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(
|
|
721
703
|
Button.Button,
|
|
722
704
|
{
|
|
723
705
|
className: "lb-comment-reaction lb-comment-reaction-add",
|