@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.
Files changed (258) hide show
  1. package/dist/_private/index.d.mts +24 -22
  2. package/dist/_private/index.d.ts +24 -22
  3. package/dist/components/Comment.js +355 -254
  4. package/dist/components/Comment.js.map +1 -1
  5. package/dist/components/Comment.mjs +330 -229
  6. package/dist/components/Comment.mjs.map +1 -1
  7. package/dist/components/Composer.js +305 -224
  8. package/dist/components/Composer.js.map +1 -1
  9. package/dist/components/Composer.mjs +281 -200
  10. package/dist/components/Composer.mjs.map +1 -1
  11. package/dist/components/HistoryVersionSummary.js +25 -22
  12. package/dist/components/HistoryVersionSummary.js.map +1 -1
  13. package/dist/components/HistoryVersionSummary.mjs +24 -21
  14. package/dist/components/HistoryVersionSummary.mjs.map +1 -1
  15. package/dist/components/HistoryVersionSummaryList.js +10 -9
  16. package/dist/components/HistoryVersionSummaryList.js.map +1 -1
  17. package/dist/components/HistoryVersionSummaryList.mjs +9 -8
  18. package/dist/components/HistoryVersionSummaryList.mjs.map +1 -1
  19. package/dist/components/InboxNotification.js +201 -143
  20. package/dist/components/InboxNotification.js.map +1 -1
  21. package/dist/components/InboxNotification.mjs +179 -121
  22. package/dist/components/InboxNotification.mjs.map +1 -1
  23. package/dist/components/InboxNotificationList.js +18 -14
  24. package/dist/components/InboxNotificationList.js.map +1 -1
  25. package/dist/components/InboxNotificationList.mjs +16 -12
  26. package/dist/components/InboxNotificationList.mjs.map +1 -1
  27. package/dist/components/Thread.js +103 -86
  28. package/dist/components/Thread.js.map +1 -1
  29. package/dist/components/Thread.mjs +92 -75
  30. package/dist/components/Thread.mjs.map +1 -1
  31. package/dist/components/internal/Attachment.js +158 -107
  32. package/dist/components/internal/Attachment.js.map +1 -1
  33. package/dist/components/internal/Attachment.mjs +147 -96
  34. package/dist/components/internal/Attachment.mjs.map +1 -1
  35. package/dist/components/internal/Attribution.js +15 -13
  36. package/dist/components/internal/Attribution.js.map +1 -1
  37. package/dist/components/internal/Attribution.mjs +15 -13
  38. package/dist/components/internal/Attribution.mjs.map +1 -1
  39. package/dist/components/internal/Avatar.js +26 -20
  40. package/dist/components/internal/Avatar.js.map +1 -1
  41. package/dist/components/internal/Avatar.mjs +22 -16
  42. package/dist/components/internal/Avatar.mjs.map +1 -1
  43. package/dist/components/internal/Button.js +4 -4
  44. package/dist/components/internal/Button.js.map +1 -1
  45. package/dist/components/internal/Button.mjs +3 -3
  46. package/dist/components/internal/Button.mjs.map +1 -1
  47. package/dist/components/internal/Dropdown.js +26 -19
  48. package/dist/components/internal/Dropdown.js.map +1 -1
  49. package/dist/components/internal/Dropdown.mjs +25 -18
  50. package/dist/components/internal/Dropdown.mjs.map +1 -1
  51. package/dist/components/internal/Emoji.js +4 -3
  52. package/dist/components/internal/Emoji.js.map +1 -1
  53. package/dist/components/internal/Emoji.mjs +3 -2
  54. package/dist/components/internal/Emoji.mjs.map +1 -1
  55. package/dist/components/internal/EmojiPicker.js +96 -72
  56. package/dist/components/internal/EmojiPicker.js.map +1 -1
  57. package/dist/components/internal/EmojiPicker.mjs +90 -66
  58. package/dist/components/internal/EmojiPicker.mjs.map +1 -1
  59. package/dist/components/internal/Icon.js +5 -4
  60. package/dist/components/internal/Icon.js.map +1 -1
  61. package/dist/components/internal/Icon.mjs +5 -4
  62. package/dist/components/internal/Icon.mjs.map +1 -1
  63. package/dist/components/internal/InboxNotificationThread.js +53 -38
  64. package/dist/components/internal/InboxNotificationThread.js.map +1 -1
  65. package/dist/components/internal/InboxNotificationThread.mjs +53 -38
  66. package/dist/components/internal/InboxNotificationThread.mjs.map +1 -1
  67. package/dist/components/internal/List.js +8 -6
  68. package/dist/components/internal/List.js.map +1 -1
  69. package/dist/components/internal/List.mjs +6 -4
  70. package/dist/components/internal/List.mjs.map +1 -1
  71. package/dist/components/internal/Room.js +7 -6
  72. package/dist/components/internal/Room.js.map +1 -1
  73. package/dist/components/internal/Room.mjs +6 -5
  74. package/dist/components/internal/Room.mjs.map +1 -1
  75. package/dist/components/internal/Tooltip.js +48 -33
  76. package/dist/components/internal/Tooltip.js.map +1 -1
  77. package/dist/components/internal/Tooltip.mjs +45 -30
  78. package/dist/components/internal/Tooltip.mjs.map +1 -1
  79. package/dist/components/internal/User.js +7 -6
  80. package/dist/components/internal/User.js.map +1 -1
  81. package/dist/components/internal/User.mjs +6 -5
  82. package/dist/components/internal/User.mjs.map +1 -1
  83. package/dist/components.js +11 -29
  84. package/dist/components.js.map +1 -1
  85. package/dist/components.mjs +5 -5
  86. package/dist/components.mjs.map +1 -1
  87. package/dist/config.js +15 -12
  88. package/dist/config.js.map +1 -1
  89. package/dist/config.mjs +12 -9
  90. package/dist/config.mjs.map +1 -1
  91. package/dist/icons/ArrowDown.js +7 -6
  92. package/dist/icons/ArrowDown.js.map +1 -1
  93. package/dist/icons/ArrowDown.mjs +7 -6
  94. package/dist/icons/ArrowDown.mjs.map +1 -1
  95. package/dist/icons/ArrowUp.js +7 -6
  96. package/dist/icons/ArrowUp.js.map +1 -1
  97. package/dist/icons/ArrowUp.mjs +7 -6
  98. package/dist/icons/ArrowUp.mjs.map +1 -1
  99. package/dist/icons/Attachment.js +7 -6
  100. package/dist/icons/Attachment.js.map +1 -1
  101. package/dist/icons/Attachment.mjs +7 -6
  102. package/dist/icons/Attachment.mjs.map +1 -1
  103. package/dist/icons/Bold.js +7 -6
  104. package/dist/icons/Bold.js.map +1 -1
  105. package/dist/icons/Bold.mjs +7 -6
  106. package/dist/icons/Bold.mjs.map +1 -1
  107. package/dist/icons/Check.js +7 -6
  108. package/dist/icons/Check.js.map +1 -1
  109. package/dist/icons/Check.mjs +7 -6
  110. package/dist/icons/Check.mjs.map +1 -1
  111. package/dist/icons/Code.js +7 -6
  112. package/dist/icons/Code.js.map +1 -1
  113. package/dist/icons/Code.mjs +7 -6
  114. package/dist/icons/Code.mjs.map +1 -1
  115. package/dist/icons/Cross.js +12 -8
  116. package/dist/icons/Cross.js.map +1 -1
  117. package/dist/icons/Cross.mjs +12 -8
  118. package/dist/icons/Cross.mjs.map +1 -1
  119. package/dist/icons/Delete.js +7 -6
  120. package/dist/icons/Delete.js.map +1 -1
  121. package/dist/icons/Delete.mjs +7 -6
  122. package/dist/icons/Delete.mjs.map +1 -1
  123. package/dist/icons/Edit.js +7 -6
  124. package/dist/icons/Edit.js.map +1 -1
  125. package/dist/icons/Edit.mjs +7 -6
  126. package/dist/icons/Edit.mjs.map +1 -1
  127. package/dist/icons/Ellipsis.js +21 -16
  128. package/dist/icons/Ellipsis.js.map +1 -1
  129. package/dist/icons/Ellipsis.mjs +21 -16
  130. package/dist/icons/Ellipsis.mjs.map +1 -1
  131. package/dist/icons/Emoji.js +25 -18
  132. package/dist/icons/Emoji.js.map +1 -1
  133. package/dist/icons/Emoji.mjs +25 -18
  134. package/dist/icons/Emoji.mjs.map +1 -1
  135. package/dist/icons/EmojiAdd.js +28 -20
  136. package/dist/icons/EmojiAdd.js.map +1 -1
  137. package/dist/icons/EmojiAdd.mjs +28 -20
  138. package/dist/icons/EmojiAdd.mjs.map +1 -1
  139. package/dist/icons/Italic.js +7 -6
  140. package/dist/icons/Italic.js.map +1 -1
  141. package/dist/icons/Italic.mjs +7 -6
  142. package/dist/icons/Italic.mjs.map +1 -1
  143. package/dist/icons/Mention.js +12 -8
  144. package/dist/icons/Mention.js.map +1 -1
  145. package/dist/icons/Mention.mjs +12 -8
  146. package/dist/icons/Mention.mjs.map +1 -1
  147. package/dist/icons/Resolve.js +14 -10
  148. package/dist/icons/Resolve.js.map +1 -1
  149. package/dist/icons/Resolve.mjs +14 -10
  150. package/dist/icons/Resolve.mjs.map +1 -1
  151. package/dist/icons/Resolved.js +16 -12
  152. package/dist/icons/Resolved.js.map +1 -1
  153. package/dist/icons/Resolved.mjs +16 -12
  154. package/dist/icons/Resolved.mjs.map +1 -1
  155. package/dist/icons/Restore.js +12 -8
  156. package/dist/icons/Restore.js.map +1 -1
  157. package/dist/icons/Restore.mjs +12 -8
  158. package/dist/icons/Restore.mjs.map +1 -1
  159. package/dist/icons/Search.js +7 -6
  160. package/dist/icons/Search.js.map +1 -1
  161. package/dist/icons/Search.mjs +7 -6
  162. package/dist/icons/Search.mjs.map +1 -1
  163. package/dist/icons/Send.js +7 -6
  164. package/dist/icons/Send.js.map +1 -1
  165. package/dist/icons/Send.mjs +7 -6
  166. package/dist/icons/Send.mjs.map +1 -1
  167. package/dist/icons/Spinner.js +8 -7
  168. package/dist/icons/Spinner.js.map +1 -1
  169. package/dist/icons/Spinner.mjs +8 -7
  170. package/dist/icons/Spinner.mjs.map +1 -1
  171. package/dist/icons/Strikethrough.js +7 -6
  172. package/dist/icons/Strikethrough.js.map +1 -1
  173. package/dist/icons/Strikethrough.mjs +7 -6
  174. package/dist/icons/Strikethrough.mjs.map +1 -1
  175. package/dist/icons/Warning.js +14 -10
  176. package/dist/icons/Warning.js.map +1 -1
  177. package/dist/icons/Warning.mjs +14 -10
  178. package/dist/icons/Warning.mjs.map +1 -1
  179. package/dist/index.d.mts +14 -12
  180. package/dist/index.d.ts +14 -12
  181. package/dist/overrides.js +64 -36
  182. package/dist/overrides.js.map +1 -1
  183. package/dist/overrides.mjs +58 -12
  184. package/dist/overrides.mjs.map +1 -1
  185. package/dist/primitives/Comment/index.js +75 -66
  186. package/dist/primitives/Comment/index.js.map +1 -1
  187. package/dist/primitives/Comment/index.mjs +71 -62
  188. package/dist/primitives/Comment/index.mjs.map +1 -1
  189. package/dist/primitives/Composer/contexts.js +11 -11
  190. package/dist/primitives/Composer/index.js +329 -271
  191. package/dist/primitives/Composer/index.js.map +1 -1
  192. package/dist/primitives/Composer/index.mjs +254 -196
  193. package/dist/primitives/Composer/index.mjs.map +1 -1
  194. package/dist/primitives/Composer/utils.js +18 -20
  195. package/dist/primitives/Composer/utils.js.map +1 -1
  196. package/dist/primitives/Composer/utils.mjs +1 -3
  197. package/dist/primitives/Composer/utils.mjs.map +1 -1
  198. package/dist/primitives/EmojiPicker/contexts.js +3 -3
  199. package/dist/primitives/EmojiPicker/index.js +159 -142
  200. package/dist/primitives/EmojiPicker/index.js.map +1 -1
  201. package/dist/primitives/EmojiPicker/index.mjs +120 -103
  202. package/dist/primitives/EmojiPicker/index.mjs.map +1 -1
  203. package/dist/primitives/FileSize.js +8 -7
  204. package/dist/primitives/FileSize.js.map +1 -1
  205. package/dist/primitives/FileSize.mjs +6 -5
  206. package/dist/primitives/FileSize.mjs.map +1 -1
  207. package/dist/primitives/Timestamp.js +11 -10
  208. package/dist/primitives/Timestamp.js.map +1 -1
  209. package/dist/primitives/Timestamp.mjs +6 -5
  210. package/dist/primitives/Timestamp.mjs.map +1 -1
  211. package/dist/primitives/index.d.mts +24 -23
  212. package/dist/primitives/index.d.ts +24 -23
  213. package/dist/primitives/internal/Emoji.js +7 -5
  214. package/dist/primitives/internal/Emoji.js.map +1 -1
  215. package/dist/primitives/internal/Emoji.mjs +6 -4
  216. package/dist/primitives/internal/Emoji.mjs.map +1 -1
  217. package/dist/shared.js +2 -7
  218. package/dist/shared.js.map +1 -1
  219. package/dist/shared.mjs +2 -7
  220. package/dist/shared.mjs.map +1 -1
  221. package/dist/utils/Persist.js +18 -18
  222. package/dist/utils/Persist.js.map +1 -1
  223. package/dist/utils/Persist.mjs +6 -6
  224. package/dist/utils/Persist.mjs.map +1 -1
  225. package/dist/utils/Portal.js +4 -4
  226. package/dist/utils/Portal.js.map +1 -1
  227. package/dist/utils/Portal.mjs +3 -3
  228. package/dist/utils/Portal.mjs.map +1 -1
  229. package/dist/utils/use-controllable-state.js +5 -5
  230. package/dist/utils/use-index.js +7 -7
  231. package/dist/utils/use-initial.js +2 -2
  232. package/dist/utils/use-interval.js +4 -4
  233. package/dist/utils/use-latest.js +3 -3
  234. package/dist/utils/use-observable.js +2 -2
  235. package/dist/utils/use-refs.js +2 -2
  236. package/dist/utils/use-rerender.js +2 -2
  237. package/dist/utils/use-visible.js +2 -2
  238. package/dist/utils/use-window-focus.js +2 -2
  239. package/dist/utils/use-window-focus.js.map +1 -1
  240. package/dist/utils/use-window-focus.mjs +1 -1
  241. package/dist/utils/use-window-focus.mjs.map +1 -1
  242. package/dist/version.js +1 -1
  243. package/dist/version.js.map +1 -1
  244. package/dist/version.mjs +1 -1
  245. package/dist/version.mjs.map +1 -1
  246. package/package.json +6 -8
  247. package/dist/utils/use-id.js +0 -29
  248. package/dist/utils/use-id.js.map +0 -1
  249. package/dist/utils/use-id.mjs +0 -27
  250. package/dist/utils/use-id.mjs.map +0 -1
  251. package/dist/utils/use-layout-effect.js +0 -8
  252. package/dist/utils/use-layout-effect.js.map +0 -1
  253. package/dist/utils/use-layout-effect.mjs +0 -6
  254. package/dist/utils/use-layout-effect.mjs.map +0 -1
  255. package/dist/utils/use-transition.js +0 -16
  256. package/dist/utils/use-transition.js.map +0 -1
  257. package/dist/utils/use-transition.mjs +0 -14
  258. 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 { useSyncExternalStore } from 'use-sync-external-store/shim/index.js';
3
+ import { useSignal } from '@liveblocks/react/_private';
4
4
 
5
5
  function useCurrentUserId() {
6
6
  const client = useClient();
7
- const currentUserIdStore = client[kInternal].currentUserIdStore;
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 };
@@ -1 +1 @@
1
- {"version":3,"file":"shared.mjs","sources":["../src/shared.ts"],"sourcesContent":["import { kInternal } from \"@liveblocks/core\";\nimport { useClient } from \"@liveblocks/react\";\nimport { useSyncExternalStore } from \"use-sync-external-store/shim/index.js\";\n\nexport function useCurrentUserId(): string | null {\n const client = useClient();\n const currentUserIdStore = client[kInternal].currentUserIdStore;\n return (\n useSyncExternalStore(\n currentUserIdStore.subscribe,\n currentUserIdStore.get,\n currentUserIdStore.get\n ) ?? null\n );\n}\n"],"names":[],"mappings":";;;;AAIO,SAAS,gBAAkC,GAAA;AAChD,EAAA,MAAM,SAAS,SAAU,EAAA,CAAA;AACzB,EAAM,MAAA,kBAAA,GAAqB,OAAO,SAAW,CAAA,CAAA,kBAAA,CAAA;AAC7C,EACE,OAAA,oBAAA;AAAA,IACE,kBAAmB,CAAA,SAAA;AAAA,IACnB,kBAAmB,CAAA,GAAA;AAAA,IACnB,kBAAmB,CAAA,GAAA;AAAA,GAChB,IAAA,IAAA,CAAA;AAET;;;;"}
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;;;;"}
@@ -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 React = require('react');
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 = React.createContext(null);
9
+ const PersistContext = react.createContext(null);
11
10
  function usePersist() {
12
- const persistContext = React.useContext(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) ? React.Children.only(children) : children;
17
- return React.isValidElement(child) ? child : void 0;
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 = React.useRef(null);
22
- const unmountAnimationName = React.useRef(null);
23
- useLayoutEffect.useLayoutEffect(() => {
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
- useLayoutEffect.useLayoutEffect(() => {
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] = React.useState(true);
63
- const lastPresentChild = React.useRef(null);
61
+ const [isPersisting, setPersisting] = react.useState(true);
62
+ const lastPresentChild = react.useRef(null);
64
63
  const child = getChild(children);
65
- const unmount = React.useCallback(() => {
64
+ const unmount = react.useCallback(() => {
66
65
  flushSync.flushSync(() => setPersisting(false));
67
66
  }, []);
68
- useLayoutEffect.useLayoutEffect(() => {
67
+ react.useLayoutEffect(() => {
69
68
  if (child) {
70
69
  setPersisting(true);
71
70
  lastPresentChild.current = child;
72
71
  }
73
72
  }, [child]);
74
- return /* @__PURE__ */ React.createElement(PersistContext.Provider, {
75
- value: [Boolean(child), unmount]
76
- }, child ?? (isPersisting ? lastPresentChild.current : null));
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 React, {\n Children,\n createContext,\n isValidElement,\n useCallback,\n useContext,\n useRef,\n useState,\n} from \"react\";\n\nimport { flushSync } from \"./flush-sync\";\nimport { useLayoutEffect } from \"./use-layout-effect\";\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":";;;;;;;;AAoBA;AAQA;AAEO;AACL;AAEA;AACF;AAEA;AACE;AAIA;AACF;AAEO;AACL;AACA;AACA;AAEA;AACE;AAEA;AACE;AAAA;AAWF;AACE;AACE;AAAQ;AAGV;AAAsC;AAGxC;AACA;AAEA;AACE;AACA;AAA8D;AAChE;AAGF;AACE;AACA;AAEA;AACE;AAAA;AAGF;AAGE;AACE;AACA;AAEA;AAKE;AAAQ;AACV;AACD;AAGH;AACE;AAAqC;AACvC;AAEJ;AAMgB;AACd;AACA;AACA;AAEA;AACE;AAAoC;AAGtC;AACE;AACE;AACA;AAA2B;AAC7B;AAGF;AACG;AAAuD;AAI5D;AAEA;AACE;AACF;;;;"}
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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"}
@@ -1,8 +1,7 @@
1
- 'use client';
1
+ import { jsx } from 'react/jsx-runtime';
2
2
  import { nn } from '@liveblocks/core';
3
- import React__default, { createContext, useContext, useRef, useState, useCallback, Children, isValidElement } from 'react';
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__ */ React__default.createElement(PersistContext.Provider, {
73
- value: [Boolean(child), unmount]
74
- }, child ?? (isPersisting ? lastPresentChild.current : null));
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 React, {\n Children,\n createContext,\n isValidElement,\n useCallback,\n useContext,\n useRef,\n useState,\n} from \"react\";\n\nimport { flushSync } from \"./flush-sync\";\nimport { useLayoutEffect } from \"./use-layout-effect\";\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":";;;;;;AAoBA;AAQA;AAEO;AACL;AAEA;AACF;AAEA;AACE;AAIA;AACF;AAEO;AACL;AACA;AACA;AAEA;AACE;AAEA;AACE;AAAA;AAWF;AACE;AACE;AAAQ;AAGV;AAAsC;AAGxC;AACA;AAEA;AACE;AACA;AAA8D;AAChE;AAGF;AACE;AACA;AAEA;AACE;AAAA;AAGF;AAGE;AACE;AACA;AAEA;AAKE;AAAQ;AACV;AACD;AAGH;AACE;AAAqC;AACvC;AAEJ;AAMgB;AACd;AACA;AACA;AAEA;AACE;AAAoC;AAGtC;AACE;AACE;AACA;AAA2B;AAC7B;AAGF;AACG;AAAuD;AAI5D;AAEA;AACE;AACF;;"}
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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"}
@@ -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 React = require('react');
5
+ var react = require('react');
6
6
  var ReactDOM = require('react-dom');
7
7
 
8
8
  const PORTAL_NAME = "Portal";
9
- const Portal = React.forwardRef(
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__ */ React.createElement(Component, {
13
+ /* @__PURE__ */ jsxRuntime.jsx(Component, {
14
14
  "data-liveblocks-portal": "",
15
15
  ...props,
16
16
  ref: forwardedRef
@@ -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 React, { 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;AASA;AAAe;AAEX;AAEA;AACI;AACG;AAAiC;AAAO;AAAY;AAAc;AACnE;AAEF;AAER;AAEA;AACE;AACF;;"}
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;;;;"}
@@ -1,6 +1,6 @@
1
- 'use client';
1
+ import { jsx } from 'react/jsx-runtime';
2
2
  import { Slot } from '@radix-ui/react-slot';
3
- import React__default, { forwardRef } from 'react';
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__ */ React__default.createElement(Component, {
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 React, { 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;AASA;AAAe;AAEX;AAEA;AACI;AACG;AAAiC;AAAO;AAAY;AAAc;AACnE;AAEF;AAER;AAEA;AACE;AACF;;"}
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 React = require('react');
4
+ var react = require('react');
5
5
 
6
6
  function useControllableState(value, onChange, defaultValue) {
7
- const [uncontrolledValue, setUncontrolledValue] = React.useState(defaultValue);
7
+ const [uncontrolledValue, setUncontrolledValue] = react.useState(defaultValue);
8
8
  const isControlled = value !== void 0;
9
- const wasControlled = React.useRef(isControlled);
10
- React.useEffect(() => {
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 = React.useCallback(
19
+ const setValue = react.useCallback(
20
20
  (value2) => {
21
21
  if (isControlled) {
22
22
  return onChange?.(value2);
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var React = require('react');
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 } = React.useMemo(() => {
11
+ const { wrap: shouldWrap } = react.useMemo(() => {
12
12
  return {
13
13
  ...defaultOptions,
14
14
  ...options
15
15
  };
16
16
  }, [options]);
17
- const transform = React.useMemo(() => shouldWrap ? wrap.wrap : clamp.clamp, [shouldWrap]);
18
- const [index, setIndex] = React.useState(initial);
19
- React.useEffect(() => {
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 = React.useCallback(() => {
22
+ const previousIndex = react.useCallback(() => {
23
23
  setIndex((index2) => transform(index2 - 1, 0, Math.max(length, 0)));
24
24
  }, [length, transform]);
25
- const nextIndex = React.useCallback(() => {
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,9 +1,9 @@
1
1
  'use strict';
2
2
 
3
- var React = require('react');
3
+ var react = require('react');
4
4
 
5
5
  function useInitial(value) {
6
- const [initialValue] = React.useState(value);
6
+ const [initialValue] = react.useState(value);
7
7
  return initialValue;
8
8
  }
9
9
 
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
- var React = require('react');
3
+ var react = require('react');
4
4
 
5
5
  function useInterval(callback, delay) {
6
- const latestCallback = React.useRef(callback);
7
- React.useEffect(() => {
6
+ const latestCallback = react.useRef(callback);
7
+ react.useEffect(() => {
8
8
  latestCallback.current = callback;
9
9
  }, [callback]);
10
- React.useEffect(() => {
10
+ react.useEffect(() => {
11
11
  if (!delay && delay !== 0) {
12
12
  return;
13
13
  }
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var React = require('react');
3
+ var react = require('react');
4
4
 
5
5
  function useLatest(value) {
6
- const ref = React.useRef(value);
7
- React.useEffect(() => {
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 React = require('react');
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
- React.useEffect(() => {
8
+ react.useEffect(() => {
9
9
  const unsubscribe = observable.subscribe(() => latestCallback.current());
10
10
  return unsubscribe;
11
11
  }, [observable, latestCallback]);
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var React = require('react');
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 React.useCallback((value) => mergeRefs(value, ...refs), [refs]);
20
+ return react.useCallback((value) => mergeRefs(value, ...refs), [refs]);
21
21
  }
22
22
 
23
23
  exports.useRefs = useRefs;
@@ -1,9 +1,9 @@
1
1
  'use strict';
2
2
 
3
- var React = require('react');
3
+ var react = require('react');
4
4
 
5
5
  function useRerender() {
6
- const [key, update] = React.useReducer(
6
+ const [key, update] = react.useReducer(
7
7
  (key2) => key2 + 1,
8
8
  0
9
9
  );
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var React = require('react');
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
- React.useEffect(() => {
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 index_js = require('use-sync-external-store/shim/index.js');
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 index_js.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
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 \"use-sync-external-store/shim/index.js\";\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,6BAAA,CAAqB,SAAW,EAAA,WAAA,EAAa,iBAAiB,CAAA,CAAA;AACvE;;;;"}
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,4 +1,4 @@
1
- import { useSyncExternalStore } from 'use-sync-external-store/shim/index.js';
1
+ import { useSyncExternalStore } from 'react';
2
2
 
3
3
  function subscribe(callback) {
4
4
  window.addEventListener("blur", callback);
@@ -1 +1 @@
1
- {"version":3,"file":"use-window-focus.mjs","sources":["../../src/utils/use-window-focus.ts"],"sourcesContent":["import { useSyncExternalStore } from \"use-sync-external-store/shim/index.js\";\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;;;;"}
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
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  const PKG_NAME = "@liveblocks/react-ui";
4
- const PKG_VERSION = "2.14.0";
4
+ const PKG_VERSION = "2.15.0-debug1";
5
5
  const PKG_FORMAT = "cjs";
6
6
 
7
7
  exports.PKG_FORMAT = PKG_FORMAT;
@@ -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,SAAA;AACjD,MAAA,UAAA,GAAkD;;;;;;"}
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
@@ -1,5 +1,5 @@
1
1
  const PKG_NAME = "@liveblocks/react-ui";
2
- const PKG_VERSION = "2.14.0";
2
+ const PKG_VERSION = "2.15.0-debug1";
3
3
  const PKG_FORMAT = "esm";
4
4
 
5
5
  export { PKG_FORMAT, PKG_NAME, PKG_VERSION };
@@ -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,SAAA;AACjD,MAAA,UAAA,GAAkD;;;;"}
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.14.0",
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.14.0",
79
- "@liveblocks/core": "2.14.0",
80
- "@liveblocks/react": "2.14.0",
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": "^16.14.0 || ^17 || ^18 || ^19 || ^19.0.0-rc"
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",
@@ -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
@@ -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;;;;"}
@@ -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;;;;"}