@liveblocks/react-ui 2.14.0 → 2.15.0-debug1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_private/index.d.mts +24 -22
- package/dist/_private/index.d.ts +24 -22
- package/dist/components/Comment.js +355 -254
- package/dist/components/Comment.js.map +1 -1
- package/dist/components/Comment.mjs +330 -229
- package/dist/components/Comment.mjs.map +1 -1
- package/dist/components/Composer.js +305 -224
- package/dist/components/Composer.js.map +1 -1
- package/dist/components/Composer.mjs +281 -200
- package/dist/components/Composer.mjs.map +1 -1
- package/dist/components/HistoryVersionSummary.js +25 -22
- package/dist/components/HistoryVersionSummary.js.map +1 -1
- package/dist/components/HistoryVersionSummary.mjs +24 -21
- package/dist/components/HistoryVersionSummary.mjs.map +1 -1
- package/dist/components/HistoryVersionSummaryList.js +10 -9
- package/dist/components/HistoryVersionSummaryList.js.map +1 -1
- package/dist/components/HistoryVersionSummaryList.mjs +9 -8
- package/dist/components/HistoryVersionSummaryList.mjs.map +1 -1
- package/dist/components/InboxNotification.js +201 -143
- package/dist/components/InboxNotification.js.map +1 -1
- package/dist/components/InboxNotification.mjs +179 -121
- package/dist/components/InboxNotification.mjs.map +1 -1
- package/dist/components/InboxNotificationList.js +18 -14
- package/dist/components/InboxNotificationList.js.map +1 -1
- package/dist/components/InboxNotificationList.mjs +16 -12
- package/dist/components/InboxNotificationList.mjs.map +1 -1
- package/dist/components/Thread.js +103 -86
- package/dist/components/Thread.js.map +1 -1
- package/dist/components/Thread.mjs +92 -75
- package/dist/components/Thread.mjs.map +1 -1
- package/dist/components/internal/Attachment.js +158 -107
- package/dist/components/internal/Attachment.js.map +1 -1
- package/dist/components/internal/Attachment.mjs +147 -96
- package/dist/components/internal/Attachment.mjs.map +1 -1
- package/dist/components/internal/Attribution.js +15 -13
- package/dist/components/internal/Attribution.js.map +1 -1
- package/dist/components/internal/Attribution.mjs +15 -13
- package/dist/components/internal/Attribution.mjs.map +1 -1
- package/dist/components/internal/Avatar.js +26 -20
- package/dist/components/internal/Avatar.js.map +1 -1
- package/dist/components/internal/Avatar.mjs +22 -16
- package/dist/components/internal/Avatar.mjs.map +1 -1
- package/dist/components/internal/Button.js +4 -4
- package/dist/components/internal/Button.js.map +1 -1
- package/dist/components/internal/Button.mjs +3 -3
- package/dist/components/internal/Button.mjs.map +1 -1
- package/dist/components/internal/Dropdown.js +26 -19
- package/dist/components/internal/Dropdown.js.map +1 -1
- package/dist/components/internal/Dropdown.mjs +25 -18
- package/dist/components/internal/Dropdown.mjs.map +1 -1
- package/dist/components/internal/Emoji.js +4 -3
- package/dist/components/internal/Emoji.js.map +1 -1
- package/dist/components/internal/Emoji.mjs +3 -2
- package/dist/components/internal/Emoji.mjs.map +1 -1
- package/dist/components/internal/EmojiPicker.js +96 -72
- package/dist/components/internal/EmojiPicker.js.map +1 -1
- package/dist/components/internal/EmojiPicker.mjs +90 -66
- package/dist/components/internal/EmojiPicker.mjs.map +1 -1
- package/dist/components/internal/Icon.js +5 -4
- package/dist/components/internal/Icon.js.map +1 -1
- package/dist/components/internal/Icon.mjs +5 -4
- package/dist/components/internal/Icon.mjs.map +1 -1
- package/dist/components/internal/InboxNotificationThread.js +53 -38
- package/dist/components/internal/InboxNotificationThread.js.map +1 -1
- package/dist/components/internal/InboxNotificationThread.mjs +53 -38
- package/dist/components/internal/InboxNotificationThread.mjs.map +1 -1
- package/dist/components/internal/List.js +8 -6
- package/dist/components/internal/List.js.map +1 -1
- package/dist/components/internal/List.mjs +6 -4
- package/dist/components/internal/List.mjs.map +1 -1
- package/dist/components/internal/Room.js +7 -6
- package/dist/components/internal/Room.js.map +1 -1
- package/dist/components/internal/Room.mjs +6 -5
- package/dist/components/internal/Room.mjs.map +1 -1
- package/dist/components/internal/Tooltip.js +48 -33
- package/dist/components/internal/Tooltip.js.map +1 -1
- package/dist/components/internal/Tooltip.mjs +45 -30
- package/dist/components/internal/Tooltip.mjs.map +1 -1
- package/dist/components/internal/User.js +7 -6
- package/dist/components/internal/User.js.map +1 -1
- package/dist/components/internal/User.mjs +6 -5
- package/dist/components/internal/User.mjs.map +1 -1
- package/dist/components.js +11 -29
- package/dist/components.js.map +1 -1
- package/dist/components.mjs +5 -5
- package/dist/components.mjs.map +1 -1
- package/dist/config.js +15 -12
- package/dist/config.js.map +1 -1
- package/dist/config.mjs +12 -9
- package/dist/config.mjs.map +1 -1
- package/dist/icons/ArrowDown.js +7 -6
- package/dist/icons/ArrowDown.js.map +1 -1
- package/dist/icons/ArrowDown.mjs +7 -6
- package/dist/icons/ArrowDown.mjs.map +1 -1
- package/dist/icons/ArrowUp.js +7 -6
- package/dist/icons/ArrowUp.js.map +1 -1
- package/dist/icons/ArrowUp.mjs +7 -6
- package/dist/icons/ArrowUp.mjs.map +1 -1
- package/dist/icons/Attachment.js +7 -6
- package/dist/icons/Attachment.js.map +1 -1
- package/dist/icons/Attachment.mjs +7 -6
- package/dist/icons/Attachment.mjs.map +1 -1
- package/dist/icons/Bold.js +7 -6
- package/dist/icons/Bold.js.map +1 -1
- package/dist/icons/Bold.mjs +7 -6
- package/dist/icons/Bold.mjs.map +1 -1
- package/dist/icons/Check.js +7 -6
- package/dist/icons/Check.js.map +1 -1
- package/dist/icons/Check.mjs +7 -6
- package/dist/icons/Check.mjs.map +1 -1
- package/dist/icons/Code.js +7 -6
- package/dist/icons/Code.js.map +1 -1
- package/dist/icons/Code.mjs +7 -6
- package/dist/icons/Code.mjs.map +1 -1
- package/dist/icons/Cross.js +12 -8
- package/dist/icons/Cross.js.map +1 -1
- package/dist/icons/Cross.mjs +12 -8
- package/dist/icons/Cross.mjs.map +1 -1
- package/dist/icons/Delete.js +7 -6
- package/dist/icons/Delete.js.map +1 -1
- package/dist/icons/Delete.mjs +7 -6
- package/dist/icons/Delete.mjs.map +1 -1
- package/dist/icons/Edit.js +7 -6
- package/dist/icons/Edit.js.map +1 -1
- package/dist/icons/Edit.mjs +7 -6
- package/dist/icons/Edit.mjs.map +1 -1
- package/dist/icons/Ellipsis.js +21 -16
- package/dist/icons/Ellipsis.js.map +1 -1
- package/dist/icons/Ellipsis.mjs +21 -16
- package/dist/icons/Ellipsis.mjs.map +1 -1
- package/dist/icons/Emoji.js +25 -18
- package/dist/icons/Emoji.js.map +1 -1
- package/dist/icons/Emoji.mjs +25 -18
- package/dist/icons/Emoji.mjs.map +1 -1
- package/dist/icons/EmojiAdd.js +28 -20
- package/dist/icons/EmojiAdd.js.map +1 -1
- package/dist/icons/EmojiAdd.mjs +28 -20
- package/dist/icons/EmojiAdd.mjs.map +1 -1
- package/dist/icons/Italic.js +7 -6
- package/dist/icons/Italic.js.map +1 -1
- package/dist/icons/Italic.mjs +7 -6
- package/dist/icons/Italic.mjs.map +1 -1
- package/dist/icons/Mention.js +12 -8
- package/dist/icons/Mention.js.map +1 -1
- package/dist/icons/Mention.mjs +12 -8
- package/dist/icons/Mention.mjs.map +1 -1
- package/dist/icons/Resolve.js +14 -10
- package/dist/icons/Resolve.js.map +1 -1
- package/dist/icons/Resolve.mjs +14 -10
- package/dist/icons/Resolve.mjs.map +1 -1
- package/dist/icons/Resolved.js +16 -12
- package/dist/icons/Resolved.js.map +1 -1
- package/dist/icons/Resolved.mjs +16 -12
- package/dist/icons/Resolved.mjs.map +1 -1
- package/dist/icons/Restore.js +12 -8
- package/dist/icons/Restore.js.map +1 -1
- package/dist/icons/Restore.mjs +12 -8
- package/dist/icons/Restore.mjs.map +1 -1
- package/dist/icons/Search.js +7 -6
- package/dist/icons/Search.js.map +1 -1
- package/dist/icons/Search.mjs +7 -6
- package/dist/icons/Search.mjs.map +1 -1
- package/dist/icons/Send.js +7 -6
- package/dist/icons/Send.js.map +1 -1
- package/dist/icons/Send.mjs +7 -6
- package/dist/icons/Send.mjs.map +1 -1
- package/dist/icons/Spinner.js +8 -7
- package/dist/icons/Spinner.js.map +1 -1
- package/dist/icons/Spinner.mjs +8 -7
- package/dist/icons/Spinner.mjs.map +1 -1
- package/dist/icons/Strikethrough.js +7 -6
- package/dist/icons/Strikethrough.js.map +1 -1
- package/dist/icons/Strikethrough.mjs +7 -6
- package/dist/icons/Strikethrough.mjs.map +1 -1
- package/dist/icons/Warning.js +14 -10
- package/dist/icons/Warning.js.map +1 -1
- package/dist/icons/Warning.mjs +14 -10
- package/dist/icons/Warning.mjs.map +1 -1
- package/dist/index.d.mts +14 -12
- package/dist/index.d.ts +14 -12
- package/dist/overrides.js +64 -36
- package/dist/overrides.js.map +1 -1
- package/dist/overrides.mjs +58 -12
- package/dist/overrides.mjs.map +1 -1
- package/dist/primitives/Comment/index.js +75 -66
- package/dist/primitives/Comment/index.js.map +1 -1
- package/dist/primitives/Comment/index.mjs +71 -62
- package/dist/primitives/Comment/index.mjs.map +1 -1
- package/dist/primitives/Composer/contexts.js +11 -11
- package/dist/primitives/Composer/index.js +329 -271
- package/dist/primitives/Composer/index.js.map +1 -1
- package/dist/primitives/Composer/index.mjs +254 -196
- package/dist/primitives/Composer/index.mjs.map +1 -1
- package/dist/primitives/Composer/utils.js +18 -20
- package/dist/primitives/Composer/utils.js.map +1 -1
- package/dist/primitives/Composer/utils.mjs +1 -3
- package/dist/primitives/Composer/utils.mjs.map +1 -1
- package/dist/primitives/EmojiPicker/contexts.js +3 -3
- package/dist/primitives/EmojiPicker/index.js +159 -142
- package/dist/primitives/EmojiPicker/index.js.map +1 -1
- package/dist/primitives/EmojiPicker/index.mjs +120 -103
- package/dist/primitives/EmojiPicker/index.mjs.map +1 -1
- package/dist/primitives/FileSize.js +8 -7
- package/dist/primitives/FileSize.js.map +1 -1
- package/dist/primitives/FileSize.mjs +6 -5
- package/dist/primitives/FileSize.mjs.map +1 -1
- package/dist/primitives/Timestamp.js +11 -10
- package/dist/primitives/Timestamp.js.map +1 -1
- package/dist/primitives/Timestamp.mjs +6 -5
- package/dist/primitives/Timestamp.mjs.map +1 -1
- package/dist/primitives/index.d.mts +24 -23
- package/dist/primitives/index.d.ts +24 -23
- package/dist/primitives/internal/Emoji.js +7 -5
- package/dist/primitives/internal/Emoji.js.map +1 -1
- package/dist/primitives/internal/Emoji.mjs +6 -4
- package/dist/primitives/internal/Emoji.mjs.map +1 -1
- package/dist/shared.js +2 -7
- package/dist/shared.js.map +1 -1
- package/dist/shared.mjs +2 -7
- package/dist/shared.mjs.map +1 -1
- package/dist/utils/Persist.js +18 -18
- package/dist/utils/Persist.js.map +1 -1
- package/dist/utils/Persist.mjs +6 -6
- package/dist/utils/Persist.mjs.map +1 -1
- package/dist/utils/Portal.js +4 -4
- package/dist/utils/Portal.js.map +1 -1
- package/dist/utils/Portal.mjs +3 -3
- package/dist/utils/Portal.mjs.map +1 -1
- package/dist/utils/use-controllable-state.js +5 -5
- package/dist/utils/use-index.js +7 -7
- package/dist/utils/use-initial.js +2 -2
- package/dist/utils/use-interval.js +4 -4
- package/dist/utils/use-latest.js +3 -3
- package/dist/utils/use-observable.js +2 -2
- package/dist/utils/use-refs.js +2 -2
- package/dist/utils/use-rerender.js +2 -2
- package/dist/utils/use-visible.js +2 -2
- package/dist/utils/use-window-focus.js +2 -2
- package/dist/utils/use-window-focus.js.map +1 -1
- package/dist/utils/use-window-focus.mjs +1 -1
- package/dist/utils/use-window-focus.mjs.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/dist/version.mjs +1 -1
- package/dist/version.mjs.map +1 -1
- package/package.json +6 -8
- package/dist/utils/use-id.js +0 -29
- package/dist/utils/use-id.js.map +0 -1
- package/dist/utils/use-id.mjs +0 -27
- package/dist/utils/use-id.mjs.map +0 -1
- package/dist/utils/use-layout-effect.js +0 -8
- package/dist/utils/use-layout-effect.js.map +0 -1
- package/dist/utils/use-layout-effect.mjs +0 -6
- package/dist/utils/use-layout-effect.mjs.map +0 -1
- package/dist/utils/use-transition.js +0 -16
- package/dist/utils/use-transition.js.map +0 -1
- package/dist/utils/use-transition.mjs +0 -14
- package/dist/utils/use-transition.mjs.map +0 -1
package/dist/shared.mjs
CHANGED
|
@@ -1,15 +1,10 @@
|
|
|
1
1
|
import { kInternal } from '@liveblocks/core';
|
|
2
2
|
import { useClient } from '@liveblocks/react';
|
|
3
|
-
import {
|
|
3
|
+
import { useSignal } from '@liveblocks/react/_private';
|
|
4
4
|
|
|
5
5
|
function useCurrentUserId() {
|
|
6
6
|
const client = useClient();
|
|
7
|
-
|
|
8
|
-
return useSyncExternalStore(
|
|
9
|
-
currentUserIdStore.subscribe,
|
|
10
|
-
currentUserIdStore.get,
|
|
11
|
-
currentUserIdStore.get
|
|
12
|
-
) ?? null;
|
|
7
|
+
return useSignal(client[kInternal].currentUserId) ?? null;
|
|
13
8
|
}
|
|
14
9
|
|
|
15
10
|
export { useCurrentUserId };
|
package/dist/shared.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.mjs","sources":["../src/shared.ts"],"sourcesContent":["import { kInternal } from \"@liveblocks/core\";\nimport { useClient } from \"@liveblocks/react\";\nimport {
|
|
1
|
+
{"version":3,"file":"shared.mjs","sources":["../src/shared.ts"],"sourcesContent":["import { kInternal } from \"@liveblocks/core\";\nimport { useClient } from \"@liveblocks/react\";\nimport { useSignal } from \"@liveblocks/react/_private\";\n\nexport function useCurrentUserId(): string | null {\n const client = useClient();\n return useSignal(client[kInternal].currentUserId) ?? null;\n}\n"],"names":[],"mappings":";;;;AAIO,SAAS,gBAAkC,GAAA;AAChD,EAAA,MAAM,SAAS,SAAU,EAAA,CAAA;AACzB,EAAA,OAAO,SAAU,CAAA,MAAA,CAAO,SAAW,CAAA,CAAA,aAAa,CAAK,IAAA,IAAA,CAAA;AACvD;;;;"}
|
package/dist/utils/Persist.js
CHANGED
|
@@ -1,26 +1,25 @@
|
|
|
1
|
-
'use client';
|
|
2
1
|
'use strict';
|
|
3
2
|
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
4
|
var core = require('@liveblocks/core');
|
|
5
|
-
var
|
|
5
|
+
var react = require('react');
|
|
6
6
|
var flushSync = require('./flush-sync.js');
|
|
7
|
-
var useLayoutEffect = require('./use-layout-effect.js');
|
|
8
7
|
|
|
9
8
|
const PERSIST_NAME = "Persist";
|
|
10
|
-
const PersistContext =
|
|
9
|
+
const PersistContext = react.createContext(null);
|
|
11
10
|
function usePersist() {
|
|
12
|
-
const persistContext =
|
|
11
|
+
const persistContext = react.useContext(PersistContext);
|
|
13
12
|
return core.nn(persistContext, "Persist is missing from the React tree.");
|
|
14
13
|
}
|
|
15
14
|
function getChild(children) {
|
|
16
|
-
const child = Array.isArray(children) ?
|
|
17
|
-
return
|
|
15
|
+
const child = Array.isArray(children) ? react.Children.only(children) : children;
|
|
16
|
+
return react.isValidElement(child) ? child : void 0;
|
|
18
17
|
}
|
|
19
18
|
function useAnimationPersist(ref) {
|
|
20
19
|
const [isPresent, unmount] = usePersist();
|
|
21
|
-
const previousAnimationName =
|
|
22
|
-
const unmountAnimationName =
|
|
23
|
-
|
|
20
|
+
const previousAnimationName = react.useRef(null);
|
|
21
|
+
const unmountAnimationName = react.useRef(null);
|
|
22
|
+
react.useLayoutEffect(() => {
|
|
24
23
|
const element = ref.current;
|
|
25
24
|
if (!element) {
|
|
26
25
|
return;
|
|
@@ -38,7 +37,7 @@ function useAnimationPersist(ref) {
|
|
|
38
37
|
element.removeEventListener("animationend", handleAnimationEnd);
|
|
39
38
|
};
|
|
40
39
|
}, [ref, unmount]);
|
|
41
|
-
|
|
40
|
+
react.useLayoutEffect(() => {
|
|
42
41
|
const element = ref.current;
|
|
43
42
|
let animationFrameId;
|
|
44
43
|
if (!element) {
|
|
@@ -59,21 +58,22 @@ function useAnimationPersist(ref) {
|
|
|
59
58
|
}, [isPresent, ref, unmount]);
|
|
60
59
|
}
|
|
61
60
|
function Persist({ children }) {
|
|
62
|
-
const [isPersisting, setPersisting] =
|
|
63
|
-
const lastPresentChild =
|
|
61
|
+
const [isPersisting, setPersisting] = react.useState(true);
|
|
62
|
+
const lastPresentChild = react.useRef(null);
|
|
64
63
|
const child = getChild(children);
|
|
65
|
-
const unmount =
|
|
64
|
+
const unmount = react.useCallback(() => {
|
|
66
65
|
flushSync.flushSync(() => setPersisting(false));
|
|
67
66
|
}, []);
|
|
68
|
-
|
|
67
|
+
react.useLayoutEffect(() => {
|
|
69
68
|
if (child) {
|
|
70
69
|
setPersisting(true);
|
|
71
70
|
lastPresentChild.current = child;
|
|
72
71
|
}
|
|
73
72
|
}, [child]);
|
|
74
|
-
return /* @__PURE__ */
|
|
75
|
-
value: [Boolean(child), unmount]
|
|
76
|
-
|
|
73
|
+
return /* @__PURE__ */ jsxRuntime.jsx(PersistContext.Provider, {
|
|
74
|
+
value: [Boolean(child), unmount],
|
|
75
|
+
children: child ?? (isPersisting ? lastPresentChild.current : null)
|
|
76
|
+
});
|
|
77
77
|
}
|
|
78
78
|
if (process.env.NODE_ENV !== "production") {
|
|
79
79
|
Persist.displayName = PERSIST_NAME;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Persist.js","sources":["../../src/utils/Persist.tsx"],"sourcesContent":["\"use client\";\n\nimport { nn } from \"@liveblocks/core\";\nimport type { ReactNode, RefObject } from \"react\";\nimport
|
|
1
|
+
{"version":3,"file":"Persist.js","sources":["../../src/utils/Persist.tsx"],"sourcesContent":["\"use client\";\n\nimport { nn } from \"@liveblocks/core\";\nimport type { ReactNode, RefObject } from \"react\";\nimport {\n Children,\n createContext,\n isValidElement,\n useCallback,\n useContext,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\n\nimport { flushSync } from \"./flush-sync\";\n\n// Persist is an overly simplified version of Framer Motion's AnimatePresence,\n// mostly mimicking its usePresence API: https://github.com/framer/motion/blob/main/packages/framer-motion/src/components/AnimatePresence/use-presence.ts\n\nconst PERSIST_NAME = \"Persist\";\n\ninterface PersistProps {\n children: Exclude<ReactNode, Iterable<ReactNode>>;\n}\n\ntype PersistContext = [boolean, () => void];\n\nconst PersistContext = createContext<PersistContext | null>(null);\n\nexport function usePersist() {\n const persistContext = useContext(PersistContext);\n\n return nn(persistContext, \"Persist is missing from the React tree.\");\n}\n\nfunction getChild(children: ReactNode) {\n const child: ReactNode = Array.isArray(children)\n ? Children.only(children)\n : children;\n\n return isValidElement(child) ? child : undefined;\n}\n\nexport function useAnimationPersist(ref: RefObject<HTMLElement>) {\n const [isPresent, unmount] = usePersist();\n const previousAnimationName = useRef<string | null>(null);\n const unmountAnimationName = useRef<string | null>(null);\n\n useLayoutEffect(() => {\n const element = ref.current;\n\n if (!element) {\n return;\n }\n\n /**\n * Stop persisting at the end of the last animation.\n *\n * We keep track of all ending animations because animations stay\n * on getComputedStyle(element).animationName even if they're over,\n * so we need to keep track of previous animations to truly know if\n * an animation should be waited on.\n */\n const handleAnimationEnd = (event: AnimationEvent) => {\n if (event.animationName === unmountAnimationName.current) {\n unmount();\n }\n\n previousAnimationName.current = event.animationName;\n };\n\n element.addEventListener(\"animationcancel\", handleAnimationEnd);\n element.addEventListener(\"animationend\", handleAnimationEnd);\n\n return () => {\n element.removeEventListener(\"animationcancel\", handleAnimationEnd);\n element.removeEventListener(\"animationend\", handleAnimationEnd);\n };\n }, [ref, unmount]);\n\n useLayoutEffect(() => {\n const element = ref.current;\n let animationFrameId: number;\n\n if (!element) {\n return;\n }\n\n if (!isPresent) {\n // If the element should be unmounting, wait for a repaint and check\n // if it is visible and has an animation. If not, unmount immediately.\n animationFrameId = requestAnimationFrame(() => {\n const styles = getComputedStyle(element);\n unmountAnimationName.current = styles.animationName;\n\n if (\n styles.animationName === \"none\" ||\n styles.animationName === previousAnimationName.current ||\n styles.display === \"none\"\n ) {\n unmount();\n }\n });\n }\n\n return () => {\n cancelAnimationFrame(animationFrameId);\n };\n }, [isPresent, ref, unmount]);\n}\n\n/**\n * Persist a component until it decides to unmount by\n * itself (instead of orchestrating the unmount from the parent).\n */\nexport function Persist({ children }: PersistProps) {\n const [isPersisting, setPersisting] = useState(true);\n const lastPresentChild = useRef<ReactNode>(null);\n const child = getChild(children);\n\n const unmount = useCallback(() => {\n flushSync(() => setPersisting(false));\n }, []);\n\n useLayoutEffect(() => {\n if (child) {\n setPersisting(true);\n lastPresentChild.current = child;\n }\n }, [child]);\n\n return (\n <PersistContext.Provider value={[Boolean(child), unmount]}>\n {child ?? (isPersisting ? lastPresentChild.current : null)}\n </PersistContext.Provider>\n );\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n Persist.displayName = PERSIST_NAME;\n}\n"],"names":["createContext","useContext","nn","Children","isValidElement","useRef","useLayoutEffect","useState","useCallback","flushSync","jsx"],"mappings":"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"}
|
package/dist/utils/Persist.mjs
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { nn } from '@liveblocks/core';
|
|
3
|
-
import
|
|
3
|
+
import { createContext, useContext, useRef, useLayoutEffect, useState, useCallback, Children, isValidElement } from 'react';
|
|
4
4
|
import { flushSync } from './flush-sync.mjs';
|
|
5
|
-
import { useLayoutEffect } from './use-layout-effect.mjs';
|
|
6
5
|
|
|
7
6
|
const PERSIST_NAME = "Persist";
|
|
8
7
|
const PersistContext = createContext(null);
|
|
@@ -69,9 +68,10 @@ function Persist({ children }) {
|
|
|
69
68
|
lastPresentChild.current = child;
|
|
70
69
|
}
|
|
71
70
|
}, [child]);
|
|
72
|
-
return /* @__PURE__ */
|
|
73
|
-
value: [Boolean(child), unmount]
|
|
74
|
-
|
|
71
|
+
return /* @__PURE__ */ jsx(PersistContext.Provider, {
|
|
72
|
+
value: [Boolean(child), unmount],
|
|
73
|
+
children: child ?? (isPersisting ? lastPresentChild.current : null)
|
|
74
|
+
});
|
|
75
75
|
}
|
|
76
76
|
if (process.env.NODE_ENV !== "production") {
|
|
77
77
|
Persist.displayName = PERSIST_NAME;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Persist.mjs","sources":["../../src/utils/Persist.tsx"],"sourcesContent":["\"use client\";\n\nimport { nn } from \"@liveblocks/core\";\nimport type { ReactNode, RefObject } from \"react\";\nimport
|
|
1
|
+
{"version":3,"file":"Persist.mjs","sources":["../../src/utils/Persist.tsx"],"sourcesContent":["\"use client\";\n\nimport { nn } from \"@liveblocks/core\";\nimport type { ReactNode, RefObject } from \"react\";\nimport {\n Children,\n createContext,\n isValidElement,\n useCallback,\n useContext,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\n\nimport { flushSync } from \"./flush-sync\";\n\n// Persist is an overly simplified version of Framer Motion's AnimatePresence,\n// mostly mimicking its usePresence API: https://github.com/framer/motion/blob/main/packages/framer-motion/src/components/AnimatePresence/use-presence.ts\n\nconst PERSIST_NAME = \"Persist\";\n\ninterface PersistProps {\n children: Exclude<ReactNode, Iterable<ReactNode>>;\n}\n\ntype PersistContext = [boolean, () => void];\n\nconst PersistContext = createContext<PersistContext | null>(null);\n\nexport function usePersist() {\n const persistContext = useContext(PersistContext);\n\n return nn(persistContext, \"Persist is missing from the React tree.\");\n}\n\nfunction getChild(children: ReactNode) {\n const child: ReactNode = Array.isArray(children)\n ? Children.only(children)\n : children;\n\n return isValidElement(child) ? child : undefined;\n}\n\nexport function useAnimationPersist(ref: RefObject<HTMLElement>) {\n const [isPresent, unmount] = usePersist();\n const previousAnimationName = useRef<string | null>(null);\n const unmountAnimationName = useRef<string | null>(null);\n\n useLayoutEffect(() => {\n const element = ref.current;\n\n if (!element) {\n return;\n }\n\n /**\n * Stop persisting at the end of the last animation.\n *\n * We keep track of all ending animations because animations stay\n * on getComputedStyle(element).animationName even if they're over,\n * so we need to keep track of previous animations to truly know if\n * an animation should be waited on.\n */\n const handleAnimationEnd = (event: AnimationEvent) => {\n if (event.animationName === unmountAnimationName.current) {\n unmount();\n }\n\n previousAnimationName.current = event.animationName;\n };\n\n element.addEventListener(\"animationcancel\", handleAnimationEnd);\n element.addEventListener(\"animationend\", handleAnimationEnd);\n\n return () => {\n element.removeEventListener(\"animationcancel\", handleAnimationEnd);\n element.removeEventListener(\"animationend\", handleAnimationEnd);\n };\n }, [ref, unmount]);\n\n useLayoutEffect(() => {\n const element = ref.current;\n let animationFrameId: number;\n\n if (!element) {\n return;\n }\n\n if (!isPresent) {\n // If the element should be unmounting, wait for a repaint and check\n // if it is visible and has an animation. If not, unmount immediately.\n animationFrameId = requestAnimationFrame(() => {\n const styles = getComputedStyle(element);\n unmountAnimationName.current = styles.animationName;\n\n if (\n styles.animationName === \"none\" ||\n styles.animationName === previousAnimationName.current ||\n styles.display === \"none\"\n ) {\n unmount();\n }\n });\n }\n\n return () => {\n cancelAnimationFrame(animationFrameId);\n };\n }, [isPresent, ref, unmount]);\n}\n\n/**\n * Persist a component until it decides to unmount by\n * itself (instead of orchestrating the unmount from the parent).\n */\nexport function Persist({ children }: PersistProps) {\n const [isPersisting, setPersisting] = useState(true);\n const lastPresentChild = useRef<ReactNode>(null);\n const child = getChild(children);\n\n const unmount = useCallback(() => {\n flushSync(() => setPersisting(false));\n }, []);\n\n useLayoutEffect(() => {\n if (child) {\n setPersisting(true);\n lastPresentChild.current = child;\n }\n }, [child]);\n\n return (\n <PersistContext.Provider value={[Boolean(child), unmount]}>\n {child ?? (isPersisting ? lastPresentChild.current : null)}\n </PersistContext.Provider>\n );\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n Persist.displayName = PERSIST_NAME;\n}\n"],"names":[],"mappings":"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"}
|
package/dist/utils/Portal.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
'use client';
|
|
2
1
|
'use strict';
|
|
3
2
|
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
4
|
var reactSlot = require('@radix-ui/react-slot');
|
|
5
|
-
var
|
|
5
|
+
var react = require('react');
|
|
6
6
|
var ReactDOM = require('react-dom');
|
|
7
7
|
|
|
8
8
|
const PORTAL_NAME = "Portal";
|
|
9
|
-
const Portal =
|
|
9
|
+
const Portal = react.forwardRef(
|
|
10
10
|
({ container = document?.body, asChild, ...props }, forwardedRef) => {
|
|
11
11
|
const Component = asChild ? reactSlot.Slot : "div";
|
|
12
12
|
return container ? ReactDOM.createPortal(
|
|
13
|
-
/* @__PURE__ */
|
|
13
|
+
/* @__PURE__ */ jsxRuntime.jsx(Component, {
|
|
14
14
|
"data-liveblocks-portal": "",
|
|
15
15
|
...props,
|
|
16
16
|
ref: forwardedRef
|
package/dist/utils/Portal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Portal.js","sources":["../../src/utils/Portal.tsx"],"sourcesContent":["\"use client\";\n\nimport { Slot } from \"@radix-ui/react-slot\";\nimport
|
|
1
|
+
{"version":3,"file":"Portal.js","sources":["../../src/utils/Portal.tsx"],"sourcesContent":["\"use client\";\n\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { forwardRef } from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport type { ComponentPropsWithSlot } from \"../types\";\n\nconst PORTAL_NAME = \"Portal\";\n\ninterface PortalProps extends ComponentPropsWithSlot<\"div\"> {\n /**\n * The container to render the portal into.\n */\n container?: HTMLElement | null;\n}\n\nconst Portal = forwardRef<HTMLDivElement, PortalProps>(\n ({ container = document?.body, asChild, ...props }, forwardedRef) => {\n const Component = asChild ? Slot : \"div\";\n\n return container\n ? createPortal(\n <Component data-liveblocks-portal=\"\" {...props} ref={forwardedRef} />,\n container\n )\n : null;\n }\n);\n\nif (process.env.NODE_ENV !== \"production\") {\n Portal.displayName = PORTAL_NAME;\n}\n\nexport { Portal };\n"],"names":["forwardRef","Slot","createPortal","jsx"],"mappings":";;;;;;;AAQA,MAAM,WAAc,GAAA,QAAA,CAAA;AASpB,MAAM,MAAS,GAAAA,gBAAA;AAAA,EACb,CAAC,EAAE,SAAY,GAAA,QAAA,EAAU,MAAM,OAAY,EAAA,GAAA,KAAA,IAAS,YAAiB,KAAA;AACnE,IAAM,MAAA,SAAA,GAAY,UAAUC,cAAO,GAAA,KAAA,CAAA;AAEnC,IAAA,OAAO,SACH,GAAAC,qBAAA;AAAA,sBACGC,cAAA,CAAA,SAAA,EAAA;AAAA,QAAU,wBAAuB,EAAA,EAAA;AAAA,QAAI,GAAG,KAAA;AAAA,QAAO,GAAK,EAAA,YAAA;AAAA,OAAc,CAAA;AAAA,MACnE,SAAA;AAAA,KAEF,GAAA,IAAA,CAAA;AAAA,GACN;AACF,EAAA;AAEA,IAAI,OAAA,CAAQ,GAAI,CAAA,QAAA,KAAa,YAAc,EAAA;AACzC,EAAA,MAAA,CAAO,WAAc,GAAA,WAAA,CAAA;AACvB;;;;"}
|
package/dist/utils/Portal.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { Slot } from '@radix-ui/react-slot';
|
|
3
|
-
import
|
|
3
|
+
import { forwardRef } from 'react';
|
|
4
4
|
import { createPortal } from 'react-dom';
|
|
5
5
|
|
|
6
6
|
const PORTAL_NAME = "Portal";
|
|
@@ -8,7 +8,7 @@ const Portal = forwardRef(
|
|
|
8
8
|
({ container = document?.body, asChild, ...props }, forwardedRef) => {
|
|
9
9
|
const Component = asChild ? Slot : "div";
|
|
10
10
|
return container ? createPortal(
|
|
11
|
-
/* @__PURE__ */
|
|
11
|
+
/* @__PURE__ */ jsx(Component, {
|
|
12
12
|
"data-liveblocks-portal": "",
|
|
13
13
|
...props,
|
|
14
14
|
ref: forwardedRef
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Portal.mjs","sources":["../../src/utils/Portal.tsx"],"sourcesContent":["\"use client\";\n\nimport { Slot } from \"@radix-ui/react-slot\";\nimport
|
|
1
|
+
{"version":3,"file":"Portal.mjs","sources":["../../src/utils/Portal.tsx"],"sourcesContent":["\"use client\";\n\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { forwardRef } from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport type { ComponentPropsWithSlot } from \"../types\";\n\nconst PORTAL_NAME = \"Portal\";\n\ninterface PortalProps extends ComponentPropsWithSlot<\"div\"> {\n /**\n * The container to render the portal into.\n */\n container?: HTMLElement | null;\n}\n\nconst Portal = forwardRef<HTMLDivElement, PortalProps>(\n ({ container = document?.body, asChild, ...props }, forwardedRef) => {\n const Component = asChild ? Slot : \"div\";\n\n return container\n ? createPortal(\n <Component data-liveblocks-portal=\"\" {...props} ref={forwardedRef} />,\n container\n )\n : null;\n }\n);\n\nif (process.env.NODE_ENV !== \"production\") {\n Portal.displayName = PORTAL_NAME;\n}\n\nexport { Portal };\n"],"names":[],"mappings":";;;;;AAQA,MAAM,WAAc,GAAA,QAAA,CAAA;AASpB,MAAM,MAAS,GAAA,UAAA;AAAA,EACb,CAAC,EAAE,SAAY,GAAA,QAAA,EAAU,MAAM,OAAY,EAAA,GAAA,KAAA,IAAS,YAAiB,KAAA;AACnE,IAAM,MAAA,SAAA,GAAY,UAAU,IAAO,GAAA,KAAA,CAAA;AAEnC,IAAA,OAAO,SACH,GAAA,YAAA;AAAA,sBACG,GAAA,CAAA,SAAA,EAAA;AAAA,QAAU,wBAAuB,EAAA,EAAA;AAAA,QAAI,GAAG,KAAA;AAAA,QAAO,GAAK,EAAA,YAAA;AAAA,OAAc,CAAA;AAAA,MACnE,SAAA;AAAA,KAEF,GAAA,IAAA,CAAA;AAAA,GACN;AACF,EAAA;AAEA,IAAI,OAAA,CAAQ,GAAI,CAAA,QAAA,KAAa,YAAc,EAAA;AACzC,EAAA,MAAA,CAAO,WAAc,GAAA,WAAA,CAAA;AACvB;;;;"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var core = require('@liveblocks/core');
|
|
4
|
-
var
|
|
4
|
+
var react = require('react');
|
|
5
5
|
|
|
6
6
|
function useControllableState(value, onChange, defaultValue) {
|
|
7
|
-
const [uncontrolledValue, setUncontrolledValue] =
|
|
7
|
+
const [uncontrolledValue, setUncontrolledValue] = react.useState(defaultValue);
|
|
8
8
|
const isControlled = value !== void 0;
|
|
9
|
-
const wasControlled =
|
|
10
|
-
|
|
9
|
+
const wasControlled = react.useRef(isControlled);
|
|
10
|
+
react.useEffect(() => {
|
|
11
11
|
if (process.env.NODE_ENV !== "production" && wasControlled.current !== isControlled) {
|
|
12
12
|
core.console.warn(
|
|
13
13
|
`A component is changing from ${wasControlled ? "controlled" : "uncontrolled"} to ${isControlled ? "controlled" : "uncontrolled"}.`
|
|
@@ -16,7 +16,7 @@ function useControllableState(value, onChange, defaultValue) {
|
|
|
16
16
|
wasControlled.current = isControlled;
|
|
17
17
|
}, [isControlled]);
|
|
18
18
|
const currentValue = isControlled ? value : uncontrolledValue;
|
|
19
|
-
const setValue =
|
|
19
|
+
const setValue = react.useCallback(
|
|
20
20
|
(value2) => {
|
|
21
21
|
if (isControlled) {
|
|
22
22
|
return onChange?.(value2);
|
package/dist/utils/use-index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var react = require('react');
|
|
4
4
|
var clamp = require('./clamp.js');
|
|
5
5
|
var wrap = require('./wrap.js');
|
|
6
6
|
|
|
@@ -8,21 +8,21 @@ const defaultOptions = {
|
|
|
8
8
|
wrap: true
|
|
9
9
|
};
|
|
10
10
|
function useIndex(initial, length, options) {
|
|
11
|
-
const { wrap: shouldWrap } =
|
|
11
|
+
const { wrap: shouldWrap } = react.useMemo(() => {
|
|
12
12
|
return {
|
|
13
13
|
...defaultOptions,
|
|
14
14
|
...options
|
|
15
15
|
};
|
|
16
16
|
}, [options]);
|
|
17
|
-
const transform =
|
|
18
|
-
const [index, setIndex] =
|
|
19
|
-
|
|
17
|
+
const transform = react.useMemo(() => shouldWrap ? wrap.wrap : clamp.clamp, [shouldWrap]);
|
|
18
|
+
const [index, setIndex] = react.useState(initial);
|
|
19
|
+
react.useEffect(() => {
|
|
20
20
|
setIndex((index2) => clamp.clamp(index2, 0, Math.max(length - 1, 0)));
|
|
21
21
|
}, [length]);
|
|
22
|
-
const previousIndex =
|
|
22
|
+
const previousIndex = react.useCallback(() => {
|
|
23
23
|
setIndex((index2) => transform(index2 - 1, 0, Math.max(length, 0)));
|
|
24
24
|
}, [length, transform]);
|
|
25
|
-
const nextIndex =
|
|
25
|
+
const nextIndex = react.useCallback(() => {
|
|
26
26
|
setIndex((index2) => transform(index2 + 1, 0, Math.max(length, 0)));
|
|
27
27
|
}, [length, transform]);
|
|
28
28
|
return [index, previousIndex, nextIndex, setIndex];
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var react = require('react');
|
|
4
4
|
|
|
5
5
|
function useInterval(callback, delay) {
|
|
6
|
-
const latestCallback =
|
|
7
|
-
|
|
6
|
+
const latestCallback = react.useRef(callback);
|
|
7
|
+
react.useEffect(() => {
|
|
8
8
|
latestCallback.current = callback;
|
|
9
9
|
}, [callback]);
|
|
10
|
-
|
|
10
|
+
react.useEffect(() => {
|
|
11
11
|
if (!delay && delay !== 0) {
|
|
12
12
|
return;
|
|
13
13
|
}
|
package/dist/utils/use-latest.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var react = require('react');
|
|
4
4
|
|
|
5
5
|
function useLatest(value) {
|
|
6
|
-
const ref =
|
|
7
|
-
|
|
6
|
+
const ref = react.useRef(value);
|
|
7
|
+
react.useEffect(() => {
|
|
8
8
|
ref.current = value;
|
|
9
9
|
}, [value]);
|
|
10
10
|
return ref;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var react = require('react');
|
|
4
4
|
var useLatest = require('./use-latest.js');
|
|
5
5
|
|
|
6
6
|
function useObservable(observable, callback) {
|
|
7
7
|
const latestCallback = useLatest.useLatest(callback);
|
|
8
|
-
|
|
8
|
+
react.useEffect(() => {
|
|
9
9
|
const unsubscribe = observable.subscribe(() => latestCallback.current());
|
|
10
10
|
return unsubscribe;
|
|
11
11
|
}, [observable, latestCallback]);
|
package/dist/utils/use-refs.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var react = require('react');
|
|
4
4
|
|
|
5
5
|
function applyRef(ref, value) {
|
|
6
6
|
if (value) {
|
|
@@ -17,7 +17,7 @@ function mergeRefs(value, ...refs) {
|
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
function useRefs(...refs) {
|
|
20
|
-
return
|
|
20
|
+
return react.useCallback((value) => mergeRefs(value, ...refs), [refs]);
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
exports.useRefs = useRefs;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var react = require('react');
|
|
4
4
|
var useLatest = require('./use-latest.js');
|
|
5
5
|
|
|
6
6
|
let intersectionObserver;
|
|
@@ -24,7 +24,7 @@ function unobserve(element) {
|
|
|
24
24
|
function useVisibleCallback(ref, callback, options) {
|
|
25
25
|
const enabled = options?.enabled ?? true;
|
|
26
26
|
const latestCallback = useLatest.useLatest(callback);
|
|
27
|
-
|
|
27
|
+
react.useEffect(() => {
|
|
28
28
|
const element = ref.current;
|
|
29
29
|
if (!element) {
|
|
30
30
|
return;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var react = require('react');
|
|
4
4
|
|
|
5
5
|
function subscribe(callback) {
|
|
6
6
|
window.addEventListener("blur", callback);
|
|
@@ -17,7 +17,7 @@ function getServerSnapshot() {
|
|
|
17
17
|
return true;
|
|
18
18
|
}
|
|
19
19
|
function useWindowFocus() {
|
|
20
|
-
return
|
|
20
|
+
return react.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
exports.useWindowFocus = useWindowFocus;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-window-focus.js","sources":["../../src/utils/use-window-focus.ts"],"sourcesContent":["import { useSyncExternalStore } from \"
|
|
1
|
+
{"version":3,"file":"use-window-focus.js","sources":["../../src/utils/use-window-focus.ts"],"sourcesContent":["import { useSyncExternalStore } from \"react\";\n\nfunction subscribe(callback: () => void) {\n window.addEventListener(\"blur\", callback);\n window.addEventListener(\"focus\", callback);\n\n return () => {\n window.removeEventListener(\"blur\", callback);\n window.removeEventListener(\"focus\", callback);\n };\n}\n\nfunction getSnapshot() {\n return document.hasFocus();\n}\n\nfunction getServerSnapshot() {\n return true;\n}\n\nexport function useWindowFocus() {\n return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n}\n"],"names":["useSyncExternalStore"],"mappings":";;;;AAEA,SAAS,UAAU,QAAsB,EAAA;AACvC,EAAO,MAAA,CAAA,gBAAA,CAAiB,QAAQ,QAAQ,CAAA,CAAA;AACxC,EAAO,MAAA,CAAA,gBAAA,CAAiB,SAAS,QAAQ,CAAA,CAAA;AAEzC,EAAA,OAAO,MAAM;AACX,IAAO,MAAA,CAAA,mBAAA,CAAoB,QAAQ,QAAQ,CAAA,CAAA;AAC3C,IAAO,MAAA,CAAA,mBAAA,CAAoB,SAAS,QAAQ,CAAA,CAAA;AAAA,GAC9C,CAAA;AACF,CAAA;AAEA,SAAS,WAAc,GAAA;AACrB,EAAA,OAAO,SAAS,QAAS,EAAA,CAAA;AAC3B,CAAA;AAEA,SAAS,iBAAoB,GAAA;AAC3B,EAAO,OAAA,IAAA,CAAA;AACT,CAAA;AAEO,SAAS,cAAiB,GAAA;AAC/B,EAAO,OAAAA,0BAAA,CAAqB,SAAW,EAAA,WAAA,EAAa,iBAAiB,CAAA,CAAA;AACvE;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-window-focus.mjs","sources":["../../src/utils/use-window-focus.ts"],"sourcesContent":["import { useSyncExternalStore } from \"
|
|
1
|
+
{"version":3,"file":"use-window-focus.mjs","sources":["../../src/utils/use-window-focus.ts"],"sourcesContent":["import { useSyncExternalStore } from \"react\";\n\nfunction subscribe(callback: () => void) {\n window.addEventListener(\"blur\", callback);\n window.addEventListener(\"focus\", callback);\n\n return () => {\n window.removeEventListener(\"blur\", callback);\n window.removeEventListener(\"focus\", callback);\n };\n}\n\nfunction getSnapshot() {\n return document.hasFocus();\n}\n\nfunction getServerSnapshot() {\n return true;\n}\n\nexport function useWindowFocus() {\n return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n}\n"],"names":[],"mappings":";;AAEA,SAAS,UAAU,QAAsB,EAAA;AACvC,EAAO,MAAA,CAAA,gBAAA,CAAiB,QAAQ,QAAQ,CAAA,CAAA;AACxC,EAAO,MAAA,CAAA,gBAAA,CAAiB,SAAS,QAAQ,CAAA,CAAA;AAEzC,EAAA,OAAO,MAAM;AACX,IAAO,MAAA,CAAA,mBAAA,CAAoB,QAAQ,QAAQ,CAAA,CAAA;AAC3C,IAAO,MAAA,CAAA,mBAAA,CAAoB,SAAS,QAAQ,CAAA,CAAA;AAAA,GAC9C,CAAA;AACF,CAAA;AAEA,SAAS,WAAc,GAAA;AACrB,EAAA,OAAO,SAAS,QAAS,EAAA,CAAA;AAC3B,CAAA;AAEA,SAAS,iBAAoB,GAAA;AAC3B,EAAO,OAAA,IAAA,CAAA;AACT,CAAA;AAEO,SAAS,cAAiB,GAAA;AAC/B,EAAO,OAAA,oBAAA,CAAqB,SAAW,EAAA,WAAA,EAAa,iBAAiB,CAAA,CAAA;AACvE;;;;"}
|
package/dist/version.js
CHANGED
package/dist/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sources":["../src/version.ts"],"sourcesContent":["declare const __VERSION__: string;\ndeclare const ROLLUP_FORMAT: string;\n\nexport const PKG_NAME = \"@liveblocks/react-ui\";\nexport const PKG_VERSION = typeof __VERSION__ === \"string\" && __VERSION__;\nexport const PKG_FORMAT = typeof ROLLUP_FORMAT === \"string\" && ROLLUP_FORMAT;\n"],"names":[],"mappings":";;AAGO,MAAM,QAAW,GAAA,uBAAA;AACX,MAAA,WAAA,GAAiD,
|
|
1
|
+
{"version":3,"file":"version.js","sources":["../src/version.ts"],"sourcesContent":["declare const __VERSION__: string;\ndeclare const ROLLUP_FORMAT: string;\n\nexport const PKG_NAME = \"@liveblocks/react-ui\";\nexport const PKG_VERSION = typeof __VERSION__ === \"string\" && __VERSION__;\nexport const PKG_FORMAT = typeof ROLLUP_FORMAT === \"string\" && ROLLUP_FORMAT;\n"],"names":[],"mappings":";;AAGO,MAAM,QAAW,GAAA,uBAAA;AACX,MAAA,WAAA,GAAiD,gBAAA;AACjD,MAAA,UAAA,GAAkD;;;;;;"}
|
package/dist/version.mjs
CHANGED
package/dist/version.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.mjs","sources":["../src/version.ts"],"sourcesContent":["declare const __VERSION__: string;\ndeclare const ROLLUP_FORMAT: string;\n\nexport const PKG_NAME = \"@liveblocks/react-ui\";\nexport const PKG_VERSION = typeof __VERSION__ === \"string\" && __VERSION__;\nexport const PKG_FORMAT = typeof ROLLUP_FORMAT === \"string\" && ROLLUP_FORMAT;\n"],"names":[],"mappings":"AAGO,MAAM,QAAW,GAAA,uBAAA;AACX,MAAA,WAAA,GAAiD,
|
|
1
|
+
{"version":3,"file":"version.mjs","sources":["../src/version.ts"],"sourcesContent":["declare const __VERSION__: string;\ndeclare const ROLLUP_FORMAT: string;\n\nexport const PKG_NAME = \"@liveblocks/react-ui\";\nexport const PKG_VERSION = typeof __VERSION__ === \"string\" && __VERSION__;\nexport const PKG_FORMAT = typeof ROLLUP_FORMAT === \"string\" && ROLLUP_FORMAT;\n"],"names":[],"mappings":"AAGO,MAAM,QAAW,GAAA,uBAAA;AACX,MAAA,WAAA,GAAiD,gBAAA;AACjD,MAAA,UAAA,GAAkD;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@liveblocks/react-ui",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.15.0-debug1",
|
|
4
4
|
"description": "A set of React pre-built components for the Liveblocks products. Liveblocks is the all-in-one toolkit to build collaborative products like Figma, Notion, and more.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "commonjs",
|
|
@@ -75,9 +75,9 @@
|
|
|
75
75
|
},
|
|
76
76
|
"dependencies": {
|
|
77
77
|
"@floating-ui/react-dom": "^2.1.2",
|
|
78
|
-
"@liveblocks/client": "2.
|
|
79
|
-
"@liveblocks/core": "2.
|
|
80
|
-
"@liveblocks/react": "2.
|
|
78
|
+
"@liveblocks/client": "2.15.0-debug1",
|
|
79
|
+
"@liveblocks/core": "2.15.0-debug1",
|
|
80
|
+
"@liveblocks/react": "2.15.0-debug1",
|
|
81
81
|
"@radix-ui/react-dropdown-menu": "^2.1.2",
|
|
82
82
|
"@radix-ui/react-popover": "^1.1.2",
|
|
83
83
|
"@radix-ui/react-slot": "^1.1.0",
|
|
@@ -87,11 +87,10 @@
|
|
|
87
87
|
"slate": "^0.110.2",
|
|
88
88
|
"slate-history": "^0.110.3",
|
|
89
89
|
"slate-hyperscript": "^0.100.0",
|
|
90
|
-
"slate-react": "^0.110.3"
|
|
91
|
-
"use-sync-external-store": "^1.2.2"
|
|
90
|
+
"slate-react": "^0.110.3"
|
|
92
91
|
},
|
|
93
92
|
"peerDependencies": {
|
|
94
|
-
"react": "^
|
|
93
|
+
"react": "^18 || ^19 || ^19.0.0-rc"
|
|
95
94
|
},
|
|
96
95
|
"devDependencies": {
|
|
97
96
|
"@liveblocks/eslint-config": "*",
|
|
@@ -100,7 +99,6 @@
|
|
|
100
99
|
"@rollup/plugin-typescript": "^11.1.2",
|
|
101
100
|
"@testing-library/jest-dom": "^5.16.5",
|
|
102
101
|
"@testing-library/react": "^13.1.1",
|
|
103
|
-
"@types/use-sync-external-store": "^0.0.6",
|
|
104
102
|
"emojibase": "^15.3.0",
|
|
105
103
|
"eslint-plugin-react": "^7.33.2",
|
|
106
104
|
"eslint-plugin-react-hooks": "^4.6.0",
|
package/dist/utils/use-id.js
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var React = require('react');
|
|
4
|
-
var useLayoutEffect = require('./use-layout-effect.js');
|
|
5
|
-
|
|
6
|
-
let isHydrated = false;
|
|
7
|
-
let id = 0;
|
|
8
|
-
function getId() {
|
|
9
|
-
return ++id;
|
|
10
|
-
}
|
|
11
|
-
const useReactId = React["useId".toString()];
|
|
12
|
-
function useIncrementalId() {
|
|
13
|
-
const [id2, setId] = React.useState(isHydrated ? getId : null);
|
|
14
|
-
useLayoutEffect.useLayoutEffect(() => {
|
|
15
|
-
if (id2 === null) {
|
|
16
|
-
setId(getId());
|
|
17
|
-
}
|
|
18
|
-
}, [id2]);
|
|
19
|
-
React.useEffect(() => {
|
|
20
|
-
if (!isHydrated) {
|
|
21
|
-
isHydrated = true;
|
|
22
|
-
}
|
|
23
|
-
}, []);
|
|
24
|
-
return String(id2) ?? void 0;
|
|
25
|
-
}
|
|
26
|
-
const useId = useReactId ?? useIncrementalId;
|
|
27
|
-
|
|
28
|
-
exports.useId = useId;
|
|
29
|
-
//# sourceMappingURL=use-id.js.map
|
package/dist/utils/use-id.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-id.js","sources":["../../src/utils/use-id.ts"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\n\nimport { useLayoutEffect } from \"./use-layout-effect\";\n\nlet isHydrated = false;\nlet id = 0;\n\nfunction getId() {\n return ++id;\n}\n\n// Prevent bundlers from importing `useId` directly.\n// See https://github.com/radix-ui/primitives/pull/1028\n// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\nconst useReactId: typeof React.useId = (React as any)[\"useId\".toString()];\n\nfunction useIncrementalId() {\n const [id, setId] = useState(isHydrated ? getId : null);\n\n useLayoutEffect(() => {\n if (id === null) {\n setId(getId());\n }\n }, [id]);\n\n useEffect(() => {\n if (!isHydrated) {\n isHydrated = true;\n }\n }, []);\n\n return String(id) ?? undefined;\n}\n\n// React's `useId` is only available in React >=18.\nexport const useId: typeof React.useId = useReactId ?? useIncrementalId;\n"],"names":["id","useState","useLayoutEffect","useEffect"],"mappings":";;;;;AAIA,IAAI,UAAa,GAAA,KAAA,CAAA;AACjB,IAAI,EAAK,GAAA,CAAA,CAAA;AAET,SAAS,KAAQ,GAAA;AACf,EAAA,OAAO,EAAE,EAAA,CAAA;AACX,CAAA;AAKA,MAAM,UAAA,GAAkC,KAAc,CAAA,OAAA,CAAQ,QAAS,EAAA,CAAA,CAAA;AAEvE,SAAS,gBAAmB,GAAA;AAC1B,EAAA,MAAM,CAACA,GAAI,EAAA,KAAK,IAAIC,cAAS,CAAA,UAAA,GAAa,QAAQ,IAAI,CAAA,CAAA;AAEtD,EAAAC,+BAAA,CAAgB,MAAM;AACpB,IAAA,IAAIF,QAAO,IAAM,EAAA;AACf,MAAA,KAAA,CAAM,OAAO,CAAA,CAAA;AAAA,KACf;AAAA,GACF,EAAG,CAACA,GAAE,CAAC,CAAA,CAAA;AAEP,EAAAG,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,UAAY,EAAA;AACf,MAAa,UAAA,GAAA,IAAA,CAAA;AAAA,KACf;AAAA,GACF,EAAG,EAAE,CAAA,CAAA;AAEL,EAAO,OAAA,MAAA,CAAOH,GAAE,CAAK,IAAA,KAAA,CAAA,CAAA;AACvB,CAAA;AAGO,MAAM,QAA4B,UAAc,IAAA;;;;"}
|
package/dist/utils/use-id.mjs
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import React__default, { useState, useEffect } from 'react';
|
|
2
|
-
import { useLayoutEffect } from './use-layout-effect.mjs';
|
|
3
|
-
|
|
4
|
-
let isHydrated = false;
|
|
5
|
-
let id = 0;
|
|
6
|
-
function getId() {
|
|
7
|
-
return ++id;
|
|
8
|
-
}
|
|
9
|
-
const useReactId = React__default["useId".toString()];
|
|
10
|
-
function useIncrementalId() {
|
|
11
|
-
const [id2, setId] = useState(isHydrated ? getId : null);
|
|
12
|
-
useLayoutEffect(() => {
|
|
13
|
-
if (id2 === null) {
|
|
14
|
-
setId(getId());
|
|
15
|
-
}
|
|
16
|
-
}, [id2]);
|
|
17
|
-
useEffect(() => {
|
|
18
|
-
if (!isHydrated) {
|
|
19
|
-
isHydrated = true;
|
|
20
|
-
}
|
|
21
|
-
}, []);
|
|
22
|
-
return String(id2) ?? void 0;
|
|
23
|
-
}
|
|
24
|
-
const useId = useReactId ?? useIncrementalId;
|
|
25
|
-
|
|
26
|
-
export { useId };
|
|
27
|
-
//# sourceMappingURL=use-id.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-id.mjs","sources":["../../src/utils/use-id.ts"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\n\nimport { useLayoutEffect } from \"./use-layout-effect\";\n\nlet isHydrated = false;\nlet id = 0;\n\nfunction getId() {\n return ++id;\n}\n\n// Prevent bundlers from importing `useId` directly.\n// See https://github.com/radix-ui/primitives/pull/1028\n// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\nconst useReactId: typeof React.useId = (React as any)[\"useId\".toString()];\n\nfunction useIncrementalId() {\n const [id, setId] = useState(isHydrated ? getId : null);\n\n useLayoutEffect(() => {\n if (id === null) {\n setId(getId());\n }\n }, [id]);\n\n useEffect(() => {\n if (!isHydrated) {\n isHydrated = true;\n }\n }, []);\n\n return String(id) ?? undefined;\n}\n\n// React's `useId` is only available in React >=18.\nexport const useId: typeof React.useId = useReactId ?? useIncrementalId;\n"],"names":["React","id"],"mappings":";;;AAIA,IAAI,UAAa,GAAA,KAAA,CAAA;AACjB,IAAI,EAAK,GAAA,CAAA,CAAA;AAET,SAAS,KAAQ,GAAA;AACf,EAAA,OAAO,EAAE,EAAA,CAAA;AACX,CAAA;AAKA,MAAM,UAAA,GAAkCA,cAAc,CAAA,OAAA,CAAQ,QAAS,EAAA,CAAA,CAAA;AAEvE,SAAS,gBAAmB,GAAA;AAC1B,EAAA,MAAM,CAACC,GAAI,EAAA,KAAK,IAAI,QAAS,CAAA,UAAA,GAAa,QAAQ,IAAI,CAAA,CAAA;AAEtD,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,IAAIA,QAAO,IAAM,EAAA;AACf,MAAA,KAAA,CAAM,OAAO,CAAA,CAAA;AAAA,KACf;AAAA,GACF,EAAG,CAACA,GAAE,CAAC,CAAA,CAAA;AAEP,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,UAAY,EAAA;AACf,MAAa,UAAA,GAAA,IAAA,CAAA;AAAA,KACf;AAAA,GACF,EAAG,EAAE,CAAA,CAAA;AAEL,EAAO,OAAA,MAAA,CAAOA,GAAE,CAAK,IAAA,KAAA,CAAA,CAAA;AACvB,CAAA;AAGO,MAAM,QAA4B,UAAc,IAAA;;;;"}
|