@liveblocks/react-ui 1.12.0-initial1

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 (391) hide show
  1. package/README.md +65 -0
  2. package/dist/components/Comment.js +473 -0
  3. package/dist/components/Comment.js.map +1 -0
  4. package/dist/components/Comment.mjs +447 -0
  5. package/dist/components/Comment.mjs.map +1 -0
  6. package/dist/components/Composer.js +299 -0
  7. package/dist/components/Composer.js.map +1 -0
  8. package/dist/components/Composer.mjs +297 -0
  9. package/dist/components/Composer.mjs.map +1 -0
  10. package/dist/components/InboxNotification.js +374 -0
  11. package/dist/components/InboxNotification.js.map +1 -0
  12. package/dist/components/InboxNotification.mjs +372 -0
  13. package/dist/components/InboxNotification.mjs.map +1 -0
  14. package/dist/components/InboxNotificationList.js +19 -0
  15. package/dist/components/InboxNotificationList.js.map +1 -0
  16. package/dist/components/InboxNotificationList.mjs +17 -0
  17. package/dist/components/InboxNotificationList.mjs.map +1 -0
  18. package/dist/components/Thread.js +188 -0
  19. package/dist/components/Thread.js.map +1 -0
  20. package/dist/components/Thread.mjs +167 -0
  21. package/dist/components/Thread.mjs.map +1 -0
  22. package/dist/components/internal/Attribution.js +26 -0
  23. package/dist/components/internal/Attribution.js.map +1 -0
  24. package/dist/components/internal/Attribution.mjs +24 -0
  25. package/dist/components/internal/Attribution.mjs.map +1 -0
  26. package/dist/components/internal/Avatar.js +40 -0
  27. package/dist/components/internal/Avatar.js.map +1 -0
  28. package/dist/components/internal/Avatar.mjs +38 -0
  29. package/dist/components/internal/Avatar.mjs.map +1 -0
  30. package/dist/components/internal/Button.js +24 -0
  31. package/dist/components/internal/Button.js.map +1 -0
  32. package/dist/components/internal/Button.mjs +22 -0
  33. package/dist/components/internal/Button.mjs.map +1 -0
  34. package/dist/components/internal/Dropdown.js +72 -0
  35. package/dist/components/internal/Dropdown.js.map +1 -0
  36. package/dist/components/internal/Dropdown.mjs +47 -0
  37. package/dist/components/internal/Dropdown.mjs.map +1 -0
  38. package/dist/components/internal/Emoji.js +18 -0
  39. package/dist/components/internal/Emoji.js.map +1 -0
  40. package/dist/components/internal/Emoji.mjs +16 -0
  41. package/dist/components/internal/Emoji.mjs.map +1 -0
  42. package/dist/components/internal/EmojiPicker.js +186 -0
  43. package/dist/components/internal/EmojiPicker.js.map +1 -0
  44. package/dist/components/internal/EmojiPicker.mjs +162 -0
  45. package/dist/components/internal/EmojiPicker.mjs.map +1 -0
  46. package/dist/components/internal/Icon.js +28 -0
  47. package/dist/components/internal/Icon.js.map +1 -0
  48. package/dist/components/internal/Icon.mjs +24 -0
  49. package/dist/components/internal/Icon.mjs.map +1 -0
  50. package/dist/components/internal/InboxNotificationThread.js +116 -0
  51. package/dist/components/internal/InboxNotificationThread.js.map +1 -0
  52. package/dist/components/internal/InboxNotificationThread.mjs +112 -0
  53. package/dist/components/internal/InboxNotificationThread.mjs.map +1 -0
  54. package/dist/components/internal/List.js +34 -0
  55. package/dist/components/internal/List.js.map +1 -0
  56. package/dist/components/internal/List.mjs +32 -0
  57. package/dist/components/internal/List.mjs.map +1 -0
  58. package/dist/components/internal/Room.js +22 -0
  59. package/dist/components/internal/Room.js.map +1 -0
  60. package/dist/components/internal/Room.mjs +20 -0
  61. package/dist/components/internal/Room.mjs.map +1 -0
  62. package/dist/components/internal/Tooltip.js +91 -0
  63. package/dist/components/internal/Tooltip.js.map +1 -0
  64. package/dist/components/internal/Tooltip.mjs +65 -0
  65. package/dist/components/internal/Tooltip.mjs.map +1 -0
  66. package/dist/components/internal/User.js +41 -0
  67. package/dist/components/internal/User.js.map +1 -0
  68. package/dist/components/internal/User.mjs +39 -0
  69. package/dist/components/internal/User.mjs.map +1 -0
  70. package/dist/components.js +64 -0
  71. package/dist/components.js.map +1 -0
  72. package/dist/components.mjs +41 -0
  73. package/dist/components.mjs.map +1 -0
  74. package/dist/config.js +33 -0
  75. package/dist/config.js.map +1 -0
  76. package/dist/config.mjs +30 -0
  77. package/dist/config.mjs.map +1 -0
  78. package/dist/constants.js +10 -0
  79. package/dist/constants.js.map +1 -0
  80. package/dist/constants.mjs +6 -0
  81. package/dist/constants.mjs.map +1 -0
  82. package/dist/icons/ArrowDown.js +15 -0
  83. package/dist/icons/ArrowDown.js.map +1 -0
  84. package/dist/icons/ArrowDown.mjs +13 -0
  85. package/dist/icons/ArrowDown.mjs.map +1 -0
  86. package/dist/icons/Check.js +15 -0
  87. package/dist/icons/Check.js.map +1 -0
  88. package/dist/icons/Check.mjs +13 -0
  89. package/dist/icons/Check.mjs.map +1 -0
  90. package/dist/icons/Cross.js +17 -0
  91. package/dist/icons/Cross.js.map +1 -0
  92. package/dist/icons/Cross.mjs +15 -0
  93. package/dist/icons/Cross.mjs.map +1 -0
  94. package/dist/icons/Delete.js +15 -0
  95. package/dist/icons/Delete.js.map +1 -0
  96. package/dist/icons/Delete.mjs +13 -0
  97. package/dist/icons/Delete.mjs.map +1 -0
  98. package/dist/icons/Edit.js +15 -0
  99. package/dist/icons/Edit.js.map +1 -0
  100. package/dist/icons/Edit.mjs +13 -0
  101. package/dist/icons/Edit.mjs.map +1 -0
  102. package/dist/icons/Ellipsis.js +26 -0
  103. package/dist/icons/Ellipsis.js.map +1 -0
  104. package/dist/icons/Ellipsis.mjs +24 -0
  105. package/dist/icons/Ellipsis.mjs.map +1 -0
  106. package/dist/icons/Emoji.js +27 -0
  107. package/dist/icons/Emoji.js.map +1 -0
  108. package/dist/icons/Emoji.mjs +25 -0
  109. package/dist/icons/Emoji.mjs.map +1 -0
  110. package/dist/icons/EmojiAdd.js +29 -0
  111. package/dist/icons/EmojiAdd.js.map +1 -0
  112. package/dist/icons/EmojiAdd.mjs +27 -0
  113. package/dist/icons/EmojiAdd.mjs.map +1 -0
  114. package/dist/icons/Mention.js +17 -0
  115. package/dist/icons/Mention.js.map +1 -0
  116. package/dist/icons/Mention.mjs +15 -0
  117. package/dist/icons/Mention.mjs.map +1 -0
  118. package/dist/icons/Missing.js +19 -0
  119. package/dist/icons/Missing.js.map +1 -0
  120. package/dist/icons/Missing.mjs +17 -0
  121. package/dist/icons/Missing.mjs.map +1 -0
  122. package/dist/icons/Resolve.js +19 -0
  123. package/dist/icons/Resolve.js.map +1 -0
  124. package/dist/icons/Resolve.mjs +17 -0
  125. package/dist/icons/Resolve.mjs.map +1 -0
  126. package/dist/icons/Resolved.js +21 -0
  127. package/dist/icons/Resolved.js.map +1 -0
  128. package/dist/icons/Resolved.mjs +19 -0
  129. package/dist/icons/Resolved.mjs.map +1 -0
  130. package/dist/icons/Search.js +15 -0
  131. package/dist/icons/Search.js.map +1 -0
  132. package/dist/icons/Search.mjs +13 -0
  133. package/dist/icons/Search.mjs.map +1 -0
  134. package/dist/icons/Send.js +15 -0
  135. package/dist/icons/Send.js.map +1 -0
  136. package/dist/icons/Send.mjs +13 -0
  137. package/dist/icons/Send.mjs.map +1 -0
  138. package/dist/icons/Spinner.js +22 -0
  139. package/dist/icons/Spinner.js.map +1 -0
  140. package/dist/icons/Spinner.mjs +20 -0
  141. package/dist/icons/Spinner.mjs.map +1 -0
  142. package/dist/index.d.mts +476 -0
  143. package/dist/index.d.ts +476 -0
  144. package/dist/index.js +20 -0
  145. package/dist/index.js.map +1 -0
  146. package/dist/index.mjs +11 -0
  147. package/dist/index.mjs.map +1 -0
  148. package/dist/overrides.js +100 -0
  149. package/dist/overrides.js.map +1 -0
  150. package/dist/overrides.mjs +77 -0
  151. package/dist/overrides.mjs.map +1 -0
  152. package/dist/primitives/Comment/index.js +113 -0
  153. package/dist/primitives/Comment/index.js.map +1 -0
  154. package/dist/primitives/Comment/index.mjs +109 -0
  155. package/dist/primitives/Comment/index.mjs.map +1 -0
  156. package/dist/primitives/Comment/utils.js +25 -0
  157. package/dist/primitives/Comment/utils.js.map +1 -0
  158. package/dist/primitives/Comment/utils.mjs +20 -0
  159. package/dist/primitives/Comment/utils.mjs.map +1 -0
  160. package/dist/primitives/Composer/contexts.js +34 -0
  161. package/dist/primitives/Composer/contexts.js.map +1 -0
  162. package/dist/primitives/Composer/contexts.mjs +27 -0
  163. package/dist/primitives/Composer/contexts.mjs.map +1 -0
  164. package/dist/primitives/Composer/index.js +771 -0
  165. package/dist/primitives/Composer/index.js.map +1 -0
  166. package/dist/primitives/Composer/index.mjs +762 -0
  167. package/dist/primitives/Composer/index.mjs.map +1 -0
  168. package/dist/primitives/Composer/utils.js +102 -0
  169. package/dist/primitives/Composer/utils.js.map +1 -0
  170. package/dist/primitives/Composer/utils.mjs +93 -0
  171. package/dist/primitives/Composer/utils.mjs.map +1 -0
  172. package/dist/primitives/EmojiPicker/contexts.js +19 -0
  173. package/dist/primitives/EmojiPicker/contexts.js.map +1 -0
  174. package/dist/primitives/EmojiPicker/contexts.mjs +16 -0
  175. package/dist/primitives/EmojiPicker/contexts.mjs.map +1 -0
  176. package/dist/primitives/EmojiPicker/index.js +434 -0
  177. package/dist/primitives/EmojiPicker/index.js.map +1 -0
  178. package/dist/primitives/EmojiPicker/index.mjs +430 -0
  179. package/dist/primitives/EmojiPicker/index.mjs.map +1 -0
  180. package/dist/primitives/EmojiPicker/utils.js +329 -0
  181. package/dist/primitives/EmojiPicker/utils.js.map +1 -0
  182. package/dist/primitives/EmojiPicker/utils.mjs +325 -0
  183. package/dist/primitives/EmojiPicker/utils.mjs.map +1 -0
  184. package/dist/primitives/Timestamp.js +121 -0
  185. package/dist/primitives/Timestamp.js.map +1 -0
  186. package/dist/primitives/Timestamp.mjs +119 -0
  187. package/dist/primitives/Timestamp.mjs.map +1 -0
  188. package/dist/primitives/index.d.mts +502 -0
  189. package/dist/primitives/index.d.ts +502 -0
  190. package/dist/primitives/index.js +16 -0
  191. package/dist/primitives/index.js.map +1 -0
  192. package/dist/primitives/index.mjs +9 -0
  193. package/dist/primitives/index.mjs.map +1 -0
  194. package/dist/primitives/internal/Emoji.js +30 -0
  195. package/dist/primitives/internal/Emoji.js.map +1 -0
  196. package/dist/primitives/internal/Emoji.mjs +28 -0
  197. package/dist/primitives/internal/Emoji.mjs.map +1 -0
  198. package/dist/shared.js +21 -0
  199. package/dist/shared.js.map +1 -0
  200. package/dist/shared.mjs +19 -0
  201. package/dist/shared.mjs.map +1 -0
  202. package/dist/slate/plugins/auto-formatting.js +83 -0
  203. package/dist/slate/plugins/auto-formatting.js.map +1 -0
  204. package/dist/slate/plugins/auto-formatting.mjs +81 -0
  205. package/dist/slate/plugins/auto-formatting.mjs.map +1 -0
  206. package/dist/slate/plugins/auto-links.js +175 -0
  207. package/dist/slate/plugins/auto-links.js.map +1 -0
  208. package/dist/slate/plugins/auto-links.mjs +172 -0
  209. package/dist/slate/plugins/auto-links.mjs.map +1 -0
  210. package/dist/slate/plugins/empty-clear-formatting.js +18 -0
  211. package/dist/slate/plugins/empty-clear-formatting.js.map +1 -0
  212. package/dist/slate/plugins/empty-clear-formatting.mjs +16 -0
  213. package/dist/slate/plugins/empty-clear-formatting.mjs.map +1 -0
  214. package/dist/slate/plugins/mentions.js +112 -0
  215. package/dist/slate/plugins/mentions.js.map +1 -0
  216. package/dist/slate/plugins/mentions.mjs +105 -0
  217. package/dist/slate/plugins/mentions.mjs.map +1 -0
  218. package/dist/slate/utils/get-character.js +50 -0
  219. package/dist/slate/utils/get-character.js.map +1 -0
  220. package/dist/slate/utils/get-character.mjs +47 -0
  221. package/dist/slate/utils/get-character.mjs.map +1 -0
  222. package/dist/slate/utils/get-dom-range.js +17 -0
  223. package/dist/slate/utils/get-dom-range.js.map +1 -0
  224. package/dist/slate/utils/get-dom-range.mjs +15 -0
  225. package/dist/slate/utils/get-dom-range.mjs.map +1 -0
  226. package/dist/slate/utils/get-match-range.js +53 -0
  227. package/dist/slate/utils/get-match-range.js.map +1 -0
  228. package/dist/slate/utils/get-match-range.mjs +51 -0
  229. package/dist/slate/utils/get-match-range.mjs.map +1 -0
  230. package/dist/slate/utils/is-empty-string.js +8 -0
  231. package/dist/slate/utils/is-empty-string.js.map +1 -0
  232. package/dist/slate/utils/is-empty-string.mjs +6 -0
  233. package/dist/slate/utils/is-empty-string.mjs.map +1 -0
  234. package/dist/slate/utils/is-empty.js +10 -0
  235. package/dist/slate/utils/is-empty.js.map +1 -0
  236. package/dist/slate/utils/is-empty.mjs +8 -0
  237. package/dist/slate/utils/is-empty.mjs.map +1 -0
  238. package/dist/slate/utils/is-selection-collapsed.js +10 -0
  239. package/dist/slate/utils/is-selection-collapsed.js.map +1 -0
  240. package/dist/slate/utils/is-selection-collapsed.mjs +8 -0
  241. package/dist/slate/utils/is-selection-collapsed.mjs.map +1 -0
  242. package/dist/slate/utils/marks.js +43 -0
  243. package/dist/slate/utils/marks.js.map +1 -0
  244. package/dist/slate/utils/marks.mjs +38 -0
  245. package/dist/slate/utils/marks.mjs.map +1 -0
  246. package/dist/utils/Persist.js +85 -0
  247. package/dist/utils/Persist.js.map +1 -0
  248. package/dist/utils/Persist.mjs +81 -0
  249. package/dist/utils/Persist.mjs.map +1 -0
  250. package/dist/utils/Portal.js +27 -0
  251. package/dist/utils/Portal.js.map +1 -0
  252. package/dist/utils/Portal.mjs +25 -0
  253. package/dist/utils/Portal.mjs.map +1 -0
  254. package/dist/utils/capitalize.js +8 -0
  255. package/dist/utils/capitalize.js.map +1 -0
  256. package/dist/utils/capitalize.mjs +6 -0
  257. package/dist/utils/capitalize.mjs.map +1 -0
  258. package/dist/utils/chunk.js +12 -0
  259. package/dist/utils/chunk.js.map +1 -0
  260. package/dist/utils/chunk.mjs +10 -0
  261. package/dist/utils/chunk.mjs.map +1 -0
  262. package/dist/utils/clamp.js +8 -0
  263. package/dist/utils/clamp.js.map +1 -0
  264. package/dist/utils/clamp.mjs +6 -0
  265. package/dist/utils/clamp.mjs.map +1 -0
  266. package/dist/utils/class-names.js +8 -0
  267. package/dist/utils/class-names.js.map +1 -0
  268. package/dist/utils/class-names.mjs +6 -0
  269. package/dist/utils/class-names.mjs.map +1 -0
  270. package/dist/utils/exists.js +8 -0
  271. package/dist/utils/exists.js.map +1 -0
  272. package/dist/utils/exists.mjs +6 -0
  273. package/dist/utils/exists.mjs.map +1 -0
  274. package/dist/utils/find-last-index.js +15 -0
  275. package/dist/utils/find-last-index.js.map +1 -0
  276. package/dist/utils/find-last-index.mjs +13 -0
  277. package/dist/utils/find-last-index.mjs.map +1 -0
  278. package/dist/utils/flush-sync.js +12 -0
  279. package/dist/utils/flush-sync.js.map +1 -0
  280. package/dist/utils/flush-sync.mjs +10 -0
  281. package/dist/utils/flush-sync.mjs.map +1 -0
  282. package/dist/utils/get-initials.js +13 -0
  283. package/dist/utils/get-initials.js.map +1 -0
  284. package/dist/utils/get-initials.mjs +11 -0
  285. package/dist/utils/get-initials.mjs.map +1 -0
  286. package/dist/utils/intl.js +24 -0
  287. package/dist/utils/intl.js.map +1 -0
  288. package/dist/utils/intl.mjs +20 -0
  289. package/dist/utils/intl.mjs.map +1 -0
  290. package/dist/utils/is-apple.js +9 -0
  291. package/dist/utils/is-apple.js.map +1 -0
  292. package/dist/utils/is-apple.mjs +7 -0
  293. package/dist/utils/is-apple.mjs.map +1 -0
  294. package/dist/utils/is-key.js +26 -0
  295. package/dist/utils/is-key.js.map +1 -0
  296. package/dist/utils/is-key.mjs +24 -0
  297. package/dist/utils/is-key.mjs.map +1 -0
  298. package/dist/utils/memoize.js +19 -0
  299. package/dist/utils/memoize.js.map +1 -0
  300. package/dist/utils/memoize.mjs +17 -0
  301. package/dist/utils/memoize.mjs.map +1 -0
  302. package/dist/utils/pluralize.js +8 -0
  303. package/dist/utils/pluralize.js.map +1 -0
  304. package/dist/utils/pluralize.mjs +6 -0
  305. package/dist/utils/pluralize.mjs.map +1 -0
  306. package/dist/utils/request-idle-callback.js +15 -0
  307. package/dist/utils/request-idle-callback.js.map +1 -0
  308. package/dist/utils/request-idle-callback.mjs +12 -0
  309. package/dist/utils/request-idle-callback.mjs.map +1 -0
  310. package/dist/utils/request-submit.js +20 -0
  311. package/dist/utils/request-submit.js.map +1 -0
  312. package/dist/utils/request-submit.mjs +18 -0
  313. package/dist/utils/request-submit.mjs.map +1 -0
  314. package/dist/utils/url.js +22 -0
  315. package/dist/utils/url.js.map +1 -0
  316. package/dist/utils/url.mjs +20 -0
  317. package/dist/utils/url.mjs.map +1 -0
  318. package/dist/utils/use-controllable-state.js +34 -0
  319. package/dist/utils/use-controllable-state.js.map +1 -0
  320. package/dist/utils/use-controllable-state.mjs +32 -0
  321. package/dist/utils/use-controllable-state.mjs.map +1 -0
  322. package/dist/utils/use-id.js +29 -0
  323. package/dist/utils/use-id.js.map +1 -0
  324. package/dist/utils/use-id.mjs +27 -0
  325. package/dist/utils/use-id.mjs.map +1 -0
  326. package/dist/utils/use-index.js +32 -0
  327. package/dist/utils/use-index.js.map +1 -0
  328. package/dist/utils/use-index.mjs +30 -0
  329. package/dist/utils/use-index.mjs.map +1 -0
  330. package/dist/utils/use-initial.js +10 -0
  331. package/dist/utils/use-initial.js.map +1 -0
  332. package/dist/utils/use-initial.mjs +8 -0
  333. package/dist/utils/use-initial.mjs.map +1 -0
  334. package/dist/utils/use-interval.js +24 -0
  335. package/dist/utils/use-interval.js.map +1 -0
  336. package/dist/utils/use-interval.mjs +22 -0
  337. package/dist/utils/use-interval.mjs.map +1 -0
  338. package/dist/utils/use-latest.js +14 -0
  339. package/dist/utils/use-latest.js.map +1 -0
  340. package/dist/utils/use-latest.mjs +12 -0
  341. package/dist/utils/use-latest.mjs.map +1 -0
  342. package/dist/utils/use-layout-effect.js +8 -0
  343. package/dist/utils/use-layout-effect.js.map +1 -0
  344. package/dist/utils/use-layout-effect.mjs +6 -0
  345. package/dist/utils/use-layout-effect.mjs.map +1 -0
  346. package/dist/utils/use-refs.js +24 -0
  347. package/dist/utils/use-refs.js.map +1 -0
  348. package/dist/utils/use-refs.mjs +22 -0
  349. package/dist/utils/use-refs.mjs.map +1 -0
  350. package/dist/utils/use-rerender.js +14 -0
  351. package/dist/utils/use-rerender.js.map +1 -0
  352. package/dist/utils/use-rerender.mjs +12 -0
  353. package/dist/utils/use-rerender.mjs.map +1 -0
  354. package/dist/utils/use-transition.js +12 -0
  355. package/dist/utils/use-transition.js.map +1 -0
  356. package/dist/utils/use-transition.mjs +10 -0
  357. package/dist/utils/use-transition.mjs.map +1 -0
  358. package/dist/utils/use-visible.js +48 -0
  359. package/dist/utils/use-visible.js.map +1 -0
  360. package/dist/utils/use-visible.mjs +46 -0
  361. package/dist/utils/use-visible.mjs.map +1 -0
  362. package/dist/utils/visually-hidden.js +17 -0
  363. package/dist/utils/visually-hidden.js.map +1 -0
  364. package/dist/utils/visually-hidden.mjs +15 -0
  365. package/dist/utils/visually-hidden.mjs.map +1 -0
  366. package/dist/utils/wrap.js +9 -0
  367. package/dist/utils/wrap.js.map +1 -0
  368. package/dist/utils/wrap.mjs +7 -0
  369. package/dist/utils/wrap.mjs.map +1 -0
  370. package/dist/version.js +10 -0
  371. package/dist/version.js.map +1 -0
  372. package/dist/version.mjs +6 -0
  373. package/dist/version.mjs.map +1 -0
  374. package/package.json +142 -0
  375. package/primitives/README.md +5 -0
  376. package/primitives/package.json +4 -0
  377. package/src/styles/constants.css +17 -0
  378. package/src/styles/dark/attributes.css +8 -0
  379. package/src/styles/dark/index.css +29 -0
  380. package/src/styles/dark/media-query.css +7 -0
  381. package/src/styles/index.css +1437 -0
  382. package/src/styles/utils.css +36 -0
  383. package/styles/dark/attributes.css +1 -0
  384. package/styles/dark/attributes.css.d.ts +1 -0
  385. package/styles/dark/attributes.css.map +1 -0
  386. package/styles/dark/media-query.css +1 -0
  387. package/styles/dark/media-query.css.d.ts +1 -0
  388. package/styles/dark/media-query.css.map +1 -0
  389. package/styles.css +1 -0
  390. package/styles.css.d.ts +1 -0
  391. package/styles.css.map +1 -0
@@ -0,0 +1,24 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+
5
+ function useInterval(callback, delay) {
6
+ const latestCallback = React.useRef(callback);
7
+ React.useEffect(() => {
8
+ latestCallback.current = callback;
9
+ }, [callback]);
10
+ React.useEffect(() => {
11
+ if (!delay && delay !== 0) {
12
+ return;
13
+ }
14
+ const id = setInterval(() => {
15
+ if (latestCallback.current() === false) {
16
+ clearInterval(id);
17
+ }
18
+ }, delay);
19
+ return () => clearInterval(id);
20
+ }, [delay]);
21
+ }
22
+
23
+ exports.useInterval = useInterval;
24
+ //# sourceMappingURL=use-interval.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-interval.js","sources":["../../src/utils/use-interval.ts"],"sourcesContent":["import { useEffect, useRef } from \"react\";\n\n/**\n * Run a function at a given time interval.\n */\nexport function useInterval(\n callback: () => void | false,\n delay?: number | false\n) {\n const latestCallback = useRef(callback);\n\n useEffect(() => {\n latestCallback.current = callback;\n }, [callback]);\n\n useEffect(() => {\n if (!delay && delay !== 0) {\n return;\n }\n\n const id = setInterval(() => {\n if (latestCallback.current() === false) {\n clearInterval(id);\n }\n }, delay);\n\n return () => clearInterval(id);\n }, [delay]);\n}\n"],"names":["useRef","useEffect"],"mappings":";;;;AAKgB,SAAA,WAAA,CACd,UACA,KACA,EAAA;AACA,EAAM,MAAA,cAAA,GAAiBA,aAAO,QAAQ,CAAA,CAAA;AAEtC,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,cAAA,CAAe,OAAU,GAAA,QAAA,CAAA;AAAA,GAC3B,EAAG,CAAC,QAAQ,CAAC,CAAA,CAAA;AAEb,EAAAA,eAAA,CAAU,MAAM;AACd,IAAI,IAAA,CAAC,KAAS,IAAA,KAAA,KAAU,CAAG,EAAA;AACzB,MAAA,OAAA;AAAA,KACF;AAEA,IAAM,MAAA,EAAA,GAAK,YAAY,MAAM;AAC3B,MAAI,IAAA,cAAA,CAAe,OAAQ,EAAA,KAAM,KAAO,EAAA;AACtC,QAAA,aAAA,CAAc,EAAE,CAAA,CAAA;AAAA,OAClB;AAAA,OACC,KAAK,CAAA,CAAA;AAER,IAAO,OAAA,MAAM,cAAc,EAAE,CAAA,CAAA;AAAA,GAC/B,EAAG,CAAC,KAAK,CAAC,CAAA,CAAA;AACZ;;;;"}
@@ -0,0 +1,22 @@
1
+ import { useRef, useEffect } from 'react';
2
+
3
+ function useInterval(callback, delay) {
4
+ const latestCallback = useRef(callback);
5
+ useEffect(() => {
6
+ latestCallback.current = callback;
7
+ }, [callback]);
8
+ useEffect(() => {
9
+ if (!delay && delay !== 0) {
10
+ return;
11
+ }
12
+ const id = setInterval(() => {
13
+ if (latestCallback.current() === false) {
14
+ clearInterval(id);
15
+ }
16
+ }, delay);
17
+ return () => clearInterval(id);
18
+ }, [delay]);
19
+ }
20
+
21
+ export { useInterval };
22
+ //# sourceMappingURL=use-interval.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-interval.mjs","sources":["../../src/utils/use-interval.ts"],"sourcesContent":["import { useEffect, useRef } from \"react\";\n\n/**\n * Run a function at a given time interval.\n */\nexport function useInterval(\n callback: () => void | false,\n delay?: number | false\n) {\n const latestCallback = useRef(callback);\n\n useEffect(() => {\n latestCallback.current = callback;\n }, [callback]);\n\n useEffect(() => {\n if (!delay && delay !== 0) {\n return;\n }\n\n const id = setInterval(() => {\n if (latestCallback.current() === false) {\n clearInterval(id);\n }\n }, delay);\n\n return () => clearInterval(id);\n }, [delay]);\n}\n"],"names":[],"mappings":";;AAKgB,SAAA,WAAA,CACd,UACA,KACA,EAAA;AACA,EAAM,MAAA,cAAA,GAAiB,OAAO,QAAQ,CAAA,CAAA;AAEtC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,cAAA,CAAe,OAAU,GAAA,QAAA,CAAA;AAAA,GAC3B,EAAG,CAAC,QAAQ,CAAC,CAAA,CAAA;AAEb,EAAA,SAAA,CAAU,MAAM;AACd,IAAI,IAAA,CAAC,KAAS,IAAA,KAAA,KAAU,CAAG,EAAA;AACzB,MAAA,OAAA;AAAA,KACF;AAEA,IAAM,MAAA,EAAA,GAAK,YAAY,MAAM;AAC3B,MAAI,IAAA,cAAA,CAAe,OAAQ,EAAA,KAAM,KAAO,EAAA;AACtC,QAAA,aAAA,CAAc,EAAE,CAAA,CAAA;AAAA,OAClB;AAAA,OACC,KAAK,CAAA,CAAA;AAER,IAAO,OAAA,MAAM,cAAc,EAAE,CAAA,CAAA;AAAA,GAC/B,EAAG,CAAC,KAAK,CAAC,CAAA,CAAA;AACZ;;;;"}
@@ -0,0 +1,14 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+
5
+ function useLatest(value) {
6
+ const ref = React.useRef(value);
7
+ React.useEffect(() => {
8
+ ref.current = value;
9
+ }, [value]);
10
+ return ref;
11
+ }
12
+
13
+ exports.useLatest = useLatest;
14
+ //# sourceMappingURL=use-latest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-latest.js","sources":["../../src/utils/use-latest.ts"],"sourcesContent":["import type { MutableRefObject } from \"react\";\nimport { useEffect, useRef } from \"react\";\n\nexport function useLatest<T>(value: T) {\n const ref: MutableRefObject<T> = useRef(value);\n\n useEffect(() => {\n ref.current = value;\n }, [value]);\n\n return ref;\n}\n"],"names":["useRef","useEffect"],"mappings":";;;;AAGO,SAAS,UAAa,KAAU,EAAA;AACrC,EAAM,MAAA,GAAA,GAA2BA,aAAO,KAAK,CAAA,CAAA;AAE7C,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,GAAA,CAAI,OAAU,GAAA,KAAA,CAAA;AAAA,GAChB,EAAG,CAAC,KAAK,CAAC,CAAA,CAAA;AAEV,EAAO,OAAA,GAAA,CAAA;AACT;;;;"}
@@ -0,0 +1,12 @@
1
+ import { useRef, useEffect } from 'react';
2
+
3
+ function useLatest(value) {
4
+ const ref = useRef(value);
5
+ useEffect(() => {
6
+ ref.current = value;
7
+ }, [value]);
8
+ return ref;
9
+ }
10
+
11
+ export { useLatest };
12
+ //# sourceMappingURL=use-latest.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-latest.mjs","sources":["../../src/utils/use-latest.ts"],"sourcesContent":["import type { MutableRefObject } from \"react\";\nimport { useEffect, useRef } from \"react\";\n\nexport function useLatest<T>(value: T) {\n const ref: MutableRefObject<T> = useRef(value);\n\n useEffect(() => {\n ref.current = value;\n }, [value]);\n\n return ref;\n}\n"],"names":[],"mappings":";;AAGO,SAAS,UAAa,KAAU,EAAA;AACrC,EAAM,MAAA,GAAA,GAA2B,OAAO,KAAK,CAAA,CAAA;AAE7C,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,GAAA,CAAI,OAAU,GAAA,KAAA,CAAA;AAAA,GAChB,EAAG,CAAC,KAAK,CAAC,CAAA,CAAA;AAEV,EAAO,OAAA,GAAA,CAAA;AACT;;;;"}
@@ -0,0 +1,8 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+
5
+ const useLayoutEffect = typeof window !== "undefined" ? React.useLayoutEffect : React.useEffect;
6
+
7
+ exports.useLayoutEffect = useLayoutEffect;
8
+ //# sourceMappingURL=use-layout-effect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-layout-effect.js","sources":["../../src/utils/use-layout-effect.ts"],"sourcesContent":["import { useEffect, useLayoutEffect as useDefaultLayoutEffect } from \"react\";\n\nexport const useLayoutEffect =\n typeof window !== \"undefined\" ? useDefaultLayoutEffect : useEffect;\n"],"names":["useDefaultLayoutEffect","useEffect"],"mappings":";;;;AAEO,MAAM,eACX,GAAA,OAAO,MAAW,KAAA,WAAA,GAAcA,qBAAyB,GAAAC;;;;"}
@@ -0,0 +1,6 @@
1
+ import { useLayoutEffect as useLayoutEffect$1, useEffect } from 'react';
2
+
3
+ const useLayoutEffect = typeof window !== "undefined" ? useLayoutEffect$1 : useEffect;
4
+
5
+ export { useLayoutEffect };
6
+ //# sourceMappingURL=use-layout-effect.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-layout-effect.mjs","sources":["../../src/utils/use-layout-effect.ts"],"sourcesContent":["import { useEffect, useLayoutEffect as useDefaultLayoutEffect } from \"react\";\n\nexport const useLayoutEffect =\n typeof window !== \"undefined\" ? useDefaultLayoutEffect : useEffect;\n"],"names":["useDefaultLayoutEffect"],"mappings":";;AAEO,MAAM,eACX,GAAA,OAAO,MAAW,KAAA,WAAA,GAAcA,iBAAyB,GAAA;;;;"}
@@ -0,0 +1,24 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+
5
+ function applyRef(ref, value) {
6
+ if (value) {
7
+ if (typeof ref === "function") {
8
+ ref(value);
9
+ } else if (ref && "current" in ref) {
10
+ ref.current = value;
11
+ }
12
+ }
13
+ }
14
+ function mergeRefs(value, ...refs) {
15
+ for (const ref of refs) {
16
+ applyRef(ref, value);
17
+ }
18
+ }
19
+ function useRefs(...refs) {
20
+ return React.useCallback((value) => mergeRefs(value, ...refs), [refs]);
21
+ }
22
+
23
+ exports.useRefs = useRefs;
24
+ //# sourceMappingURL=use-refs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-refs.js","sources":["../../src/utils/use-refs.ts"],"sourcesContent":["import type { MutableRefObject, Ref, RefCallback } from \"react\";\nimport { useCallback } from \"react\";\n\nfunction applyRef<T>(ref: Ref<T>, value: T) {\n if (value) {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref && \"current\" in ref) {\n (ref as MutableRefObject<T>).current = value;\n }\n }\n}\n\nfunction mergeRefs<T>(value: T, ...refs: Ref<T>[]) {\n for (const ref of refs) {\n applyRef(ref, value);\n }\n}\n\nexport function useRefs<T>(...refs: Ref<T>[]): RefCallback<T> {\n return useCallback((value: T) => mergeRefs(value, ...refs), [refs]);\n}\n"],"names":["useCallback"],"mappings":";;;;AAGA,SAAS,QAAA,CAAY,KAAa,KAAU,EAAA;AAC1C,EAAA,IAAI,KAAO,EAAA;AACT,IAAI,IAAA,OAAO,QAAQ,UAAY,EAAA;AAC7B,MAAA,GAAA,CAAI,KAAK,CAAA,CAAA;AAAA,KACX,MAAA,IAAW,GAAO,IAAA,SAAA,IAAa,GAAK,EAAA;AAClC,MAAC,IAA4B,OAAU,GAAA,KAAA,CAAA;AAAA,KACzC;AAAA,GACF;AACF,CAAA;AAEA,SAAS,SAAA,CAAa,UAAa,IAAgB,EAAA;AACjD,EAAA,KAAA,MAAW,OAAO,IAAM,EAAA;AACtB,IAAA,QAAA,CAAS,KAAK,KAAK,CAAA,CAAA;AAAA,GACrB;AACF,CAAA;AAEO,SAAS,WAAc,IAAgC,EAAA;AAC5D,EAAO,OAAAA,iBAAA,CAAY,CAAC,KAAA,KAAa,SAAU,CAAA,KAAA,EAAO,GAAG,IAAI,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA,CAAA;AACpE;;;;"}
@@ -0,0 +1,22 @@
1
+ import { useCallback } from 'react';
2
+
3
+ function applyRef(ref, value) {
4
+ if (value) {
5
+ if (typeof ref === "function") {
6
+ ref(value);
7
+ } else if (ref && "current" in ref) {
8
+ ref.current = value;
9
+ }
10
+ }
11
+ }
12
+ function mergeRefs(value, ...refs) {
13
+ for (const ref of refs) {
14
+ applyRef(ref, value);
15
+ }
16
+ }
17
+ function useRefs(...refs) {
18
+ return useCallback((value) => mergeRefs(value, ...refs), [refs]);
19
+ }
20
+
21
+ export { useRefs };
22
+ //# sourceMappingURL=use-refs.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-refs.mjs","sources":["../../src/utils/use-refs.ts"],"sourcesContent":["import type { MutableRefObject, Ref, RefCallback } from \"react\";\nimport { useCallback } from \"react\";\n\nfunction applyRef<T>(ref: Ref<T>, value: T) {\n if (value) {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref && \"current\" in ref) {\n (ref as MutableRefObject<T>).current = value;\n }\n }\n}\n\nfunction mergeRefs<T>(value: T, ...refs: Ref<T>[]) {\n for (const ref of refs) {\n applyRef(ref, value);\n }\n}\n\nexport function useRefs<T>(...refs: Ref<T>[]): RefCallback<T> {\n return useCallback((value: T) => mergeRefs(value, ...refs), [refs]);\n}\n"],"names":[],"mappings":";;AAGA,SAAS,QAAA,CAAY,KAAa,KAAU,EAAA;AAC1C,EAAA,IAAI,KAAO,EAAA;AACT,IAAI,IAAA,OAAO,QAAQ,UAAY,EAAA;AAC7B,MAAA,GAAA,CAAI,KAAK,CAAA,CAAA;AAAA,KACX,MAAA,IAAW,GAAO,IAAA,SAAA,IAAa,GAAK,EAAA;AAClC,MAAC,IAA4B,OAAU,GAAA,KAAA,CAAA;AAAA,KACzC;AAAA,GACF;AACF,CAAA;AAEA,SAAS,SAAA,CAAa,UAAa,IAAgB,EAAA;AACjD,EAAA,KAAA,MAAW,OAAO,IAAM,EAAA;AACtB,IAAA,QAAA,CAAS,KAAK,KAAK,CAAA,CAAA;AAAA,GACrB;AACF,CAAA;AAEO,SAAS,WAAc,IAAgC,EAAA;AAC5D,EAAO,OAAA,WAAA,CAAY,CAAC,KAAA,KAAa,SAAU,CAAA,KAAA,EAAO,GAAG,IAAI,CAAA,EAAG,CAAC,IAAI,CAAC,CAAA,CAAA;AACpE;;;;"}
@@ -0,0 +1,14 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+
5
+ function useRerender() {
6
+ const [key, update] = React.useReducer(
7
+ (key2) => key2 + 1,
8
+ 0
9
+ );
10
+ return [update, key];
11
+ }
12
+
13
+ exports.useRerender = useRerender;
14
+ //# sourceMappingURL=use-rerender.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-rerender.js","sources":["../../src/utils/use-rerender.ts"],"sourcesContent":["import { useReducer } from \"react\";\n\n/**\n * Trigger a re-render programmatically, without changing the component's\n * state.\n *\n * @example\n * const rerender = useRerender();\n *\n * return (\n * <button onClick={rerender}>\n * {Math.random()}\n * </button>\n * )\n */\nexport function useRerender(): [() => void, number] {\n const [key, update] = useReducer(\n // This implementation works by incrementing a hidden counter value that is\n // never consumed. Simply incrementing the counter changes the component's\n // state and, thus, trigger a re-render.\n (key: number): number => key + 1,\n 0\n );\n return [update, key];\n}\n"],"names":["useReducer","key"],"mappings":";;;;AAeO,SAAS,WAAoC,GAAA;AAClD,EAAM,MAAA,CAAC,GAAK,EAAA,MAAM,CAAI,GAAAA,gBAAA;AAAA,IAIpB,CAACC,SAAwBA,IAAM,GAAA,CAAA;AAAA,IAC/B,CAAA;AAAA,GACF,CAAA;AACA,EAAO,OAAA,CAAC,QAAQ,GAAG,CAAA,CAAA;AACrB;;;;"}
@@ -0,0 +1,12 @@
1
+ import { useReducer } from 'react';
2
+
3
+ function useRerender() {
4
+ const [key, update] = useReducer(
5
+ (key2) => key2 + 1,
6
+ 0
7
+ );
8
+ return [update, key];
9
+ }
10
+
11
+ export { useRerender };
12
+ //# sourceMappingURL=use-rerender.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-rerender.mjs","sources":["../../src/utils/use-rerender.ts"],"sourcesContent":["import { useReducer } from \"react\";\n\n/**\n * Trigger a re-render programmatically, without changing the component's\n * state.\n *\n * @example\n * const rerender = useRerender();\n *\n * return (\n * <button onClick={rerender}>\n * {Math.random()}\n * </button>\n * )\n */\nexport function useRerender(): [() => void, number] {\n const [key, update] = useReducer(\n // This implementation works by incrementing a hidden counter value that is\n // never consumed. Simply incrementing the counter changes the component's\n // state and, thus, trigger a re-render.\n (key: number): number => key + 1,\n 0\n );\n return [update, key];\n}\n"],"names":["key"],"mappings":";;AAeO,SAAS,WAAoC,GAAA;AAClD,EAAM,MAAA,CAAC,GAAK,EAAA,MAAM,CAAI,GAAA,UAAA;AAAA,IAIpB,CAACA,SAAwBA,IAAM,GAAA,CAAA;AAAA,IAC/B,CAAA;AAAA,GACF,CAAA;AACA,EAAO,OAAA,CAAC,QAAQ,GAAG,CAAA,CAAA;AACrB;;;;"}
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+
5
+ const useReactTransition = React["useTransition".toString()];
6
+ function useTransitionFallback(transition) {
7
+ return [false, transition];
8
+ }
9
+ const useTransition = useReactTransition ?? useTransitionFallback;
10
+
11
+ exports.useTransition = useTransition;
12
+ //# sourceMappingURL=use-transition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-transition.js","sources":["../../src/utils/use-transition.ts"],"sourcesContent":["import React from \"react\";\n\n// Prevent bundlers from importing `useTransition` directly\n// See https://github.com/radix-ui/primitives/pull/1028\n// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\nconst useReactTransition: typeof React.useTransition = (React as any)[\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n \"useTransition\".toString()\n];\n\nfunction useTransitionFallback(transition: () => void) {\n return [false, transition] as ReturnType<typeof useReactTransition>;\n}\n\n// React's `useTransition` is only available in React >=18.\nexport const useTransition: typeof React.useTransition =\n useReactTransition ?? useTransitionFallback;\n"],"names":[],"mappings":";;;;AAKA,MAAM,kBAAA,GAAkD,KAEtD,CAAA,eAAA,CAAgB,QAAS,EAAA,CAAA,CAAA;AAG3B,SAAS,sBAAsB,UAAwB,EAAA;AACrD,EAAO,OAAA,CAAC,OAAO,UAAU,CAAA,CAAA;AAC3B,CAAA;AAGO,MAAM,gBACX,kBAAsB,IAAA;;;;"}
@@ -0,0 +1,10 @@
1
+ import React__default from 'react';
2
+
3
+ const useReactTransition = React__default["useTransition".toString()];
4
+ function useTransitionFallback(transition) {
5
+ return [false, transition];
6
+ }
7
+ const useTransition = useReactTransition ?? useTransitionFallback;
8
+
9
+ export { useTransition };
10
+ //# sourceMappingURL=use-transition.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-transition.mjs","sources":["../../src/utils/use-transition.ts"],"sourcesContent":["import React from \"react\";\n\n// Prevent bundlers from importing `useTransition` directly\n// See https://github.com/radix-ui/primitives/pull/1028\n// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\nconst useReactTransition: typeof React.useTransition = (React as any)[\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n \"useTransition\".toString()\n];\n\nfunction useTransitionFallback(transition: () => void) {\n return [false, transition] as ReturnType<typeof useReactTransition>;\n}\n\n// React's `useTransition` is only available in React >=18.\nexport const useTransition: typeof React.useTransition =\n useReactTransition ?? useTransitionFallback;\n"],"names":["React"],"mappings":";;AAKA,MAAM,kBAAA,GAAkDA,cAEtD,CAAA,eAAA,CAAgB,QAAS,EAAA,CAAA,CAAA;AAG3B,SAAS,sBAAsB,UAAwB,EAAA;AACrD,EAAO,OAAA,CAAC,OAAO,UAAU,CAAA,CAAA;AAC3B,CAAA;AAGO,MAAM,gBACX,kBAAsB,IAAA;;;;"}
@@ -0,0 +1,48 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var useLatest = require('./use-latest.js');
5
+
6
+ let intersectionObserver;
7
+ const intersectionCallbacks = /* @__PURE__ */ new WeakMap();
8
+ function observe(element, callback) {
9
+ if (!intersectionObserver) {
10
+ intersectionObserver = new IntersectionObserver((entries) => {
11
+ for (const entry of entries) {
12
+ const callback2 = intersectionCallbacks.get(entry.target);
13
+ callback2?.(entry);
14
+ }
15
+ });
16
+ }
17
+ intersectionCallbacks.set(element, callback);
18
+ intersectionObserver.observe(element);
19
+ }
20
+ function unobserve(element) {
21
+ intersectionCallbacks.delete(element);
22
+ intersectionObserver?.unobserve(element);
23
+ }
24
+ function useVisibleCallback(ref, callback, options) {
25
+ const enabled = options?.enabled ?? true;
26
+ const latestCallback = useLatest.useLatest(callback);
27
+ React.useEffect(() => {
28
+ const element = ref.current;
29
+ if (!element) {
30
+ return;
31
+ }
32
+ if (enabled) {
33
+ observe(element, (entry) => {
34
+ if (entry.isIntersecting) {
35
+ latestCallback.current();
36
+ }
37
+ });
38
+ } else {
39
+ unobserve(element);
40
+ }
41
+ return () => {
42
+ unobserve(element);
43
+ };
44
+ }, [enabled]);
45
+ }
46
+
47
+ exports.useVisibleCallback = useVisibleCallback;
48
+ //# sourceMappingURL=use-visible.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-visible.js","sources":["../../src/utils/use-visible.ts"],"sourcesContent":["import { type RefObject, useEffect, useState } from \"react\";\n\nimport { useLatest } from \"./use-latest\";\n\ntype Options = { enabled?: boolean };\n\ntype IntersectionObserverSingleCallback = (\n entry: IntersectionObserverEntry\n) => void;\n\nlet intersectionObserver: IntersectionObserver | undefined;\nconst intersectionCallbacks = new WeakMap<\n Element,\n IntersectionObserverSingleCallback\n>();\n\nfunction observe(\n element: Element,\n callback: IntersectionObserverSingleCallback\n) {\n if (!intersectionObserver) {\n intersectionObserver = new IntersectionObserver((entries) => {\n for (const entry of entries) {\n const callback = intersectionCallbacks.get(entry.target);\n\n callback?.(entry);\n }\n });\n }\n\n intersectionCallbacks.set(element, callback);\n intersectionObserver.observe(element);\n}\n\nfunction unobserve(element: Element) {\n intersectionCallbacks.delete(element);\n intersectionObserver?.unobserve(element);\n}\n\n/**\n * Observe whether an element is currently visible or not.\n */\nexport function useVisible(ref: RefObject<Element>, options?: Options) {\n const [isVisible, setVisible] = useState(false);\n const enabled = options?.enabled ?? true;\n\n useEffect(() => {\n const element = ref.current;\n\n if (!element) {\n return;\n }\n\n if (enabled) {\n observe(element, (entry) => {\n setVisible(entry.isIntersecting);\n });\n } else {\n unobserve(element);\n }\n\n return () => {\n unobserve(element);\n };\n }, [enabled]); // eslint-disable-line react-hooks/exhaustive-deps\n\n return isVisible;\n}\n\nexport function useVisibleCallback<T extends (...args: any[]) => void>(\n ref: RefObject<Element>,\n callback: T,\n options?: Options\n) {\n const enabled = options?.enabled ?? true;\n const latestCallback = useLatest(callback);\n\n useEffect(() => {\n const element = ref.current;\n\n if (!element) {\n return;\n }\n\n if (enabled) {\n observe(element, (entry) => {\n if (entry.isIntersecting) {\n latestCallback.current();\n }\n });\n } else {\n unobserve(element);\n }\n\n return () => {\n unobserve(element);\n };\n }, [enabled]); // eslint-disable-line react-hooks/exhaustive-deps\n}\n"],"names":["callback","useLatest","useEffect"],"mappings":";;;;;AAUA,IAAI,oBAAA,CAAA;AACJ,MAAM,qBAAA,uBAA4B,OAGhC,EAAA,CAAA;AAEF,SAAS,OAAA,CACP,SACA,QACA,EAAA;AACA,EAAA,IAAI,CAAC,oBAAsB,EAAA;AACzB,IAAuB,oBAAA,GAAA,IAAI,oBAAqB,CAAA,CAAC,OAAY,KAAA;AAC3D,MAAA,KAAA,MAAW,SAAS,OAAS,EAAA;AAC3B,QAAA,MAAMA,SAAW,GAAA,qBAAA,CAAsB,GAAI,CAAA,KAAA,CAAM,MAAM,CAAA,CAAA;AAEvD,QAAAA,YAAW,KAAK,CAAA,CAAA;AAAA,OAClB;AAAA,KACD,CAAA,CAAA;AAAA,GACH;AAEA,EAAsB,qBAAA,CAAA,GAAA,CAAI,SAAS,QAAQ,CAAA,CAAA;AAC3C,EAAA,oBAAA,CAAqB,QAAQ,OAAO,CAAA,CAAA;AACtC,CAAA;AAEA,SAAS,UAAU,OAAkB,EAAA;AACnC,EAAA,qBAAA,CAAsB,OAAO,OAAO,CAAA,CAAA;AACpC,EAAA,oBAAA,EAAsB,UAAU,OAAO,CAAA,CAAA;AACzC,CAAA;AAgCgB,SAAA,kBAAA,CACd,GACA,EAAA,QAAA,EACA,OACA,EAAA;AACA,EAAM,MAAA,OAAA,GAAU,SAAS,OAAW,IAAA,IAAA,CAAA;AACpC,EAAM,MAAA,cAAA,GAAiBC,oBAAU,QAAQ,CAAA,CAAA;AAEzC,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,MAAM,UAAU,GAAI,CAAA,OAAA,CAAA;AAEpB,IAAA,IAAI,CAAC,OAAS,EAAA;AACZ,MAAA,OAAA;AAAA,KACF;AAEA,IAAA,IAAI,OAAS,EAAA;AACX,MAAQ,OAAA,CAAA,OAAA,EAAS,CAAC,KAAU,KAAA;AAC1B,QAAA,IAAI,MAAM,cAAgB,EAAA;AACxB,UAAA,cAAA,CAAe,OAAQ,EAAA,CAAA;AAAA,SACzB;AAAA,OACD,CAAA,CAAA;AAAA,KACI,MAAA;AACL,MAAA,SAAA,CAAU,OAAO,CAAA,CAAA;AAAA,KACnB;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,SAAA,CAAU,OAAO,CAAA,CAAA;AAAA,KACnB,CAAA;AAAA,GACF,EAAG,CAAC,OAAO,CAAC,CAAA,CAAA;AACd;;;;"}
@@ -0,0 +1,46 @@
1
+ import { useEffect } from 'react';
2
+ import { useLatest } from './use-latest.mjs';
3
+
4
+ let intersectionObserver;
5
+ const intersectionCallbacks = /* @__PURE__ */ new WeakMap();
6
+ function observe(element, callback) {
7
+ if (!intersectionObserver) {
8
+ intersectionObserver = new IntersectionObserver((entries) => {
9
+ for (const entry of entries) {
10
+ const callback2 = intersectionCallbacks.get(entry.target);
11
+ callback2?.(entry);
12
+ }
13
+ });
14
+ }
15
+ intersectionCallbacks.set(element, callback);
16
+ intersectionObserver.observe(element);
17
+ }
18
+ function unobserve(element) {
19
+ intersectionCallbacks.delete(element);
20
+ intersectionObserver?.unobserve(element);
21
+ }
22
+ function useVisibleCallback(ref, callback, options) {
23
+ const enabled = options?.enabled ?? true;
24
+ const latestCallback = useLatest(callback);
25
+ useEffect(() => {
26
+ const element = ref.current;
27
+ if (!element) {
28
+ return;
29
+ }
30
+ if (enabled) {
31
+ observe(element, (entry) => {
32
+ if (entry.isIntersecting) {
33
+ latestCallback.current();
34
+ }
35
+ });
36
+ } else {
37
+ unobserve(element);
38
+ }
39
+ return () => {
40
+ unobserve(element);
41
+ };
42
+ }, [enabled]);
43
+ }
44
+
45
+ export { useVisibleCallback };
46
+ //# sourceMappingURL=use-visible.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-visible.mjs","sources":["../../src/utils/use-visible.ts"],"sourcesContent":["import { type RefObject, useEffect, useState } from \"react\";\n\nimport { useLatest } from \"./use-latest\";\n\ntype Options = { enabled?: boolean };\n\ntype IntersectionObserverSingleCallback = (\n entry: IntersectionObserverEntry\n) => void;\n\nlet intersectionObserver: IntersectionObserver | undefined;\nconst intersectionCallbacks = new WeakMap<\n Element,\n IntersectionObserverSingleCallback\n>();\n\nfunction observe(\n element: Element,\n callback: IntersectionObserverSingleCallback\n) {\n if (!intersectionObserver) {\n intersectionObserver = new IntersectionObserver((entries) => {\n for (const entry of entries) {\n const callback = intersectionCallbacks.get(entry.target);\n\n callback?.(entry);\n }\n });\n }\n\n intersectionCallbacks.set(element, callback);\n intersectionObserver.observe(element);\n}\n\nfunction unobserve(element: Element) {\n intersectionCallbacks.delete(element);\n intersectionObserver?.unobserve(element);\n}\n\n/**\n * Observe whether an element is currently visible or not.\n */\nexport function useVisible(ref: RefObject<Element>, options?: Options) {\n const [isVisible, setVisible] = useState(false);\n const enabled = options?.enabled ?? true;\n\n useEffect(() => {\n const element = ref.current;\n\n if (!element) {\n return;\n }\n\n if (enabled) {\n observe(element, (entry) => {\n setVisible(entry.isIntersecting);\n });\n } else {\n unobserve(element);\n }\n\n return () => {\n unobserve(element);\n };\n }, [enabled]); // eslint-disable-line react-hooks/exhaustive-deps\n\n return isVisible;\n}\n\nexport function useVisibleCallback<T extends (...args: any[]) => void>(\n ref: RefObject<Element>,\n callback: T,\n options?: Options\n) {\n const enabled = options?.enabled ?? true;\n const latestCallback = useLatest(callback);\n\n useEffect(() => {\n const element = ref.current;\n\n if (!element) {\n return;\n }\n\n if (enabled) {\n observe(element, (entry) => {\n if (entry.isIntersecting) {\n latestCallback.current();\n }\n });\n } else {\n unobserve(element);\n }\n\n return () => {\n unobserve(element);\n };\n }, [enabled]); // eslint-disable-line react-hooks/exhaustive-deps\n}\n"],"names":["callback"],"mappings":";;;AAUA,IAAI,oBAAA,CAAA;AACJ,MAAM,qBAAA,uBAA4B,OAGhC,EAAA,CAAA;AAEF,SAAS,OAAA,CACP,SACA,QACA,EAAA;AACA,EAAA,IAAI,CAAC,oBAAsB,EAAA;AACzB,IAAuB,oBAAA,GAAA,IAAI,oBAAqB,CAAA,CAAC,OAAY,KAAA;AAC3D,MAAA,KAAA,MAAW,SAAS,OAAS,EAAA;AAC3B,QAAA,MAAMA,SAAW,GAAA,qBAAA,CAAsB,GAAI,CAAA,KAAA,CAAM,MAAM,CAAA,CAAA;AAEvD,QAAAA,YAAW,KAAK,CAAA,CAAA;AAAA,OAClB;AAAA,KACD,CAAA,CAAA;AAAA,GACH;AAEA,EAAsB,qBAAA,CAAA,GAAA,CAAI,SAAS,QAAQ,CAAA,CAAA;AAC3C,EAAA,oBAAA,CAAqB,QAAQ,OAAO,CAAA,CAAA;AACtC,CAAA;AAEA,SAAS,UAAU,OAAkB,EAAA;AACnC,EAAA,qBAAA,CAAsB,OAAO,OAAO,CAAA,CAAA;AACpC,EAAA,oBAAA,EAAsB,UAAU,OAAO,CAAA,CAAA;AACzC,CAAA;AAgCgB,SAAA,kBAAA,CACd,GACA,EAAA,QAAA,EACA,OACA,EAAA;AACA,EAAM,MAAA,OAAA,GAAU,SAAS,OAAW,IAAA,IAAA,CAAA;AACpC,EAAM,MAAA,cAAA,GAAiB,UAAU,QAAQ,CAAA,CAAA;AAEzC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,UAAU,GAAI,CAAA,OAAA,CAAA;AAEpB,IAAA,IAAI,CAAC,OAAS,EAAA;AACZ,MAAA,OAAA;AAAA,KACF;AAEA,IAAA,IAAI,OAAS,EAAA;AACX,MAAQ,OAAA,CAAA,OAAA,EAAS,CAAC,KAAU,KAAA;AAC1B,QAAA,IAAI,MAAM,cAAgB,EAAA;AACxB,UAAA,cAAA,CAAe,OAAQ,EAAA,CAAA;AAAA,SACzB;AAAA,OACD,CAAA,CAAA;AAAA,KACI,MAAA;AACL,MAAA,SAAA,CAAU,OAAO,CAAA,CAAA;AAAA,KACnB;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,SAAA,CAAU,OAAO,CAAA,CAAA;AAAA,KACnB,CAAA;AAAA,GACF,EAAG,CAAC,OAAO,CAAC,CAAA,CAAA;AACd;;;;"}
@@ -0,0 +1,17 @@
1
+ 'use strict';
2
+
3
+ const visuallyHidden = {
4
+ position: "absolute",
5
+ border: 0,
6
+ width: 1,
7
+ height: 1,
8
+ padding: 0,
9
+ margin: -1,
10
+ overflow: "hidden",
11
+ clip: "rect(0, 0, 0, 0)",
12
+ whiteSpace: "nowrap",
13
+ wordWrap: "normal"
14
+ };
15
+
16
+ exports.visuallyHidden = visuallyHidden;
17
+ //# sourceMappingURL=visually-hidden.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visually-hidden.js","sources":["../../src/utils/visually-hidden.ts"],"sourcesContent":["import type { CSSProperties } from \"react\";\n\nexport const visuallyHidden: CSSProperties = {\n position: \"absolute\",\n border: 0,\n width: 1,\n height: 1,\n padding: 0,\n margin: -1,\n overflow: \"hidden\",\n clip: \"rect(0, 0, 0, 0)\",\n whiteSpace: \"nowrap\",\n wordWrap: \"normal\",\n};\n"],"names":[],"mappings":";;AAEO,MAAM,cAAgC,GAAA;AAAA,EAC3C,QAAU,EAAA,UAAA;AAAA,EACV,MAAQ,EAAA,CAAA;AAAA,EACR,KAAO,EAAA,CAAA;AAAA,EACP,MAAQ,EAAA,CAAA;AAAA,EACR,OAAS,EAAA,CAAA;AAAA,EACT,MAAQ,EAAA,CAAA,CAAA;AAAA,EACR,QAAU,EAAA,QAAA;AAAA,EACV,IAAM,EAAA,kBAAA;AAAA,EACN,UAAY,EAAA,QAAA;AAAA,EACZ,QAAU,EAAA,QAAA;AACZ;;;;"}
@@ -0,0 +1,15 @@
1
+ const visuallyHidden = {
2
+ position: "absolute",
3
+ border: 0,
4
+ width: 1,
5
+ height: 1,
6
+ padding: 0,
7
+ margin: -1,
8
+ overflow: "hidden",
9
+ clip: "rect(0, 0, 0, 0)",
10
+ whiteSpace: "nowrap",
11
+ wordWrap: "normal"
12
+ };
13
+
14
+ export { visuallyHidden };
15
+ //# sourceMappingURL=visually-hidden.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visually-hidden.mjs","sources":["../../src/utils/visually-hidden.ts"],"sourcesContent":["import type { CSSProperties } from \"react\";\n\nexport const visuallyHidden: CSSProperties = {\n position: \"absolute\",\n border: 0,\n width: 1,\n height: 1,\n padding: 0,\n margin: -1,\n overflow: \"hidden\",\n clip: \"rect(0, 0, 0, 0)\",\n whiteSpace: \"nowrap\",\n wordWrap: \"normal\",\n};\n"],"names":[],"mappings":"AAEO,MAAM,cAAgC,GAAA;AAAA,EAC3C,QAAU,EAAA,UAAA;AAAA,EACV,MAAQ,EAAA,CAAA;AAAA,EACR,KAAO,EAAA,CAAA;AAAA,EACP,MAAQ,EAAA,CAAA;AAAA,EACR,OAAS,EAAA,CAAA;AAAA,EACT,MAAQ,EAAA,CAAA,CAAA;AAAA,EACR,QAAU,EAAA,QAAA;AAAA,EACV,IAAM,EAAA,kBAAA;AAAA,EACN,UAAY,EAAA,QAAA;AAAA,EACZ,QAAU,EAAA,QAAA;AACZ;;;;"}
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ function wrap(value, min, max) {
4
+ const range = max - min;
5
+ return range > 0 ? ((value - min) % range + range) % range + min : 0;
6
+ }
7
+
8
+ exports.wrap = wrap;
9
+ //# sourceMappingURL=wrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrap.js","sources":["../../src/utils/wrap.ts"],"sourcesContent":["export function wrap(value: number, min: number, max: number) {\n const range = max - min;\n\n return range > 0 ? ((((value - min) % range) + range) % range) + min : 0;\n}\n"],"names":[],"mappings":";;AAAgB,SAAA,IAAA,CAAK,KAAe,EAAA,GAAA,EAAa,GAAa,EAAA;AAC5D,EAAA,MAAM,QAAQ,GAAM,GAAA,GAAA,CAAA;AAEpB,EAAA,OAAO,QAAQ,CAAQ,GAAA,CAAA,CAAA,KAAA,GAAQ,OAAO,KAAS,GAAA,KAAA,IAAS,QAAS,GAAM,GAAA,CAAA,CAAA;AACzE;;;;"}
@@ -0,0 +1,7 @@
1
+ function wrap(value, min, max) {
2
+ const range = max - min;
3
+ return range > 0 ? ((value - min) % range + range) % range + min : 0;
4
+ }
5
+
6
+ export { wrap };
7
+ //# sourceMappingURL=wrap.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrap.mjs","sources":["../../src/utils/wrap.ts"],"sourcesContent":["export function wrap(value: number, min: number, max: number) {\n const range = max - min;\n\n return range > 0 ? ((((value - min) % range) + range) % range) + min : 0;\n}\n"],"names":[],"mappings":"AAAgB,SAAA,IAAA,CAAK,KAAe,EAAA,GAAA,EAAa,GAAa,EAAA;AAC5D,EAAA,MAAM,QAAQ,GAAM,GAAA,GAAA,CAAA;AAEpB,EAAA,OAAO,QAAQ,CAAQ,GAAA,CAAA,CAAA,KAAA,GAAQ,OAAO,KAAS,GAAA,KAAA,IAAS,QAAS,GAAM,GAAA,CAAA,CAAA;AACzE;;;;"}
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ const PKG_NAME = "@liveblocks/react-ui";
4
+ const PKG_VERSION = "1.12.0";
5
+ const PKG_FORMAT = "cjs";
6
+
7
+ exports.PKG_FORMAT = PKG_FORMAT;
8
+ exports.PKG_NAME = PKG_NAME;
9
+ exports.PKG_VERSION = PKG_VERSION;
10
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sources":["../src/version.ts"],"sourcesContent":["declare const __VERSION__: string;\ndeclare const TSUP_FORMAT: string;\n\nexport const PKG_NAME = \"@liveblocks/react-ui\";\nexport const PKG_VERSION = typeof __VERSION__ === \"string\" && __VERSION__;\nexport const PKG_FORMAT = typeof TSUP_FORMAT === \"string\" && TSUP_FORMAT;\n"],"names":[],"mappings":";;AAGO,MAAM,QAAW,GAAA,uBAAA;AACX,MAAA,WAAA,GAAiD,SAAA;AACjD,MAAA,UAAA,GAAgD;;;;;;"}
@@ -0,0 +1,6 @@
1
+ const PKG_NAME = "@liveblocks/react-ui";
2
+ const PKG_VERSION = "1.12.0";
3
+ const PKG_FORMAT = "esm";
4
+
5
+ export { PKG_FORMAT, PKG_NAME, PKG_VERSION };
6
+ //# sourceMappingURL=version.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.mjs","sources":["../src/version.ts"],"sourcesContent":["declare const __VERSION__: string;\ndeclare const TSUP_FORMAT: string;\n\nexport const PKG_NAME = \"@liveblocks/react-ui\";\nexport const PKG_VERSION = typeof __VERSION__ === \"string\" && __VERSION__;\nexport const PKG_FORMAT = typeof TSUP_FORMAT === \"string\" && TSUP_FORMAT;\n"],"names":[],"mappings":"AAGO,MAAM,QAAW,GAAA,uBAAA;AACX,MAAA,WAAA,GAAiD,SAAA;AACjD,MAAA,UAAA,GAAgD;;;;"}
package/package.json ADDED
@@ -0,0 +1,142 @@
1
+ {
2
+ "name": "@liveblocks/react-ui",
3
+ "version": "1.12.0-initial1",
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
+ "license": "Apache-2.0",
6
+ "type": "commonjs",
7
+ "main": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "import": {
12
+ "types": "./dist/index.d.mts",
13
+ "default": "./dist/index.mjs"
14
+ },
15
+ "require": {
16
+ "types": "./dist/index.d.ts",
17
+ "module": "./dist/index.mjs",
18
+ "default": "./dist/index.js"
19
+ }
20
+ },
21
+ "./primitives": {
22
+ "import": {
23
+ "types": "./dist/primitives/index.d.mts",
24
+ "default": "./dist/primitives/index.mjs"
25
+ },
26
+ "require": {
27
+ "types": "./dist/primitives/index.d.ts",
28
+ "module": "./dist/primitives/index.mjs",
29
+ "default": "./dist/primitives/index.js"
30
+ }
31
+ },
32
+ "./styles.css": {
33
+ "types": "./styles.css.d.ts",
34
+ "default": "./styles.css"
35
+ },
36
+ "./styles/dark/media-query.css": {
37
+ "types": "./styles/dark/media-query.css.d.ts",
38
+ "default": "./styles/dark/media-query.css"
39
+ },
40
+ "./styles/dark/attributes.css": {
41
+ "types": "./styles/dark/attributes.css.d.ts",
42
+ "default": "./styles/dark/attributes.css"
43
+ }
44
+ },
45
+ "files": [
46
+ "dist/**",
47
+ "primitives/**",
48
+ "**/*.css",
49
+ "**/*.css.d.ts",
50
+ "**/*.css.map",
51
+ "README.md"
52
+ ],
53
+ "scripts": {
54
+ "dev": "rollup --config rollup.config.ts --configPlugin @rollup/plugin-typescript --watch",
55
+ "build": "rollup --config rollup.config.ts --configPlugin @rollup/plugin-typescript",
56
+ "start": "npm run dev",
57
+ "format": "eslint --fix src/; stylelint --fix src/styles/; prettier --write src/",
58
+ "lint": "eslint src/; stylelint src/styles/",
59
+ "lint:package": "publint --strict && attw --pack",
60
+ "test": "jest --silent --verbose --color=always",
61
+ "test:watch": "jest --silent --verbose --color=always --watch"
62
+ },
63
+ "dependencies": {
64
+ "@floating-ui/react-dom": "^2.0.8",
65
+ "@liveblocks/client": "1.12.0",
66
+ "@liveblocks/core": "1.12.0",
67
+ "@liveblocks/react": "1.12.0",
68
+ "@radix-ui/react-dropdown-menu": "^2.0.6",
69
+ "@radix-ui/react-popover": "^1.0.7",
70
+ "@radix-ui/react-slot": "^1.0.2",
71
+ "@radix-ui/react-toggle": "^1.0.3",
72
+ "@radix-ui/react-tooltip": "^1.0.7",
73
+ "react-virtuoso": "^4.7.4",
74
+ "slate": "^0.102.0",
75
+ "slate-history": "^0.100.0",
76
+ "slate-react": "^0.102.0",
77
+ "use-sync-external-store": "^1.2.0"
78
+ },
79
+ "peerDependencies": {
80
+ "react": "^16.14.0 || ^17 || ^18"
81
+ },
82
+ "devDependencies": {
83
+ "@liveblocks/eslint-config": "*",
84
+ "@liveblocks/jest-config": "*",
85
+ "@rollup/plugin-replace": "^5.0.5",
86
+ "@rollup/plugin-typescript": "^11.1.2",
87
+ "@testing-library/jest-dom": "^5.16.5",
88
+ "@testing-library/react": "^13.1.1",
89
+ "@types/use-sync-external-store": "^0.0.3",
90
+ "emojibase": "^15.3.0",
91
+ "eslint-plugin-react": "^7.33.2",
92
+ "eslint-plugin-react-hooks": "^4.6.0",
93
+ "msw": "^0.27.1",
94
+ "postcss": "^8.4.31",
95
+ "postcss-advanced-variables": "^3.0.1",
96
+ "postcss-combine-duplicated-selectors": "^10.0.3",
97
+ "postcss-functions": "^4.0.2",
98
+ "postcss-import": "^15.1.0",
99
+ "postcss-lightningcss": "^1.0.0",
100
+ "postcss-nesting": "^12.0.1",
101
+ "postcss-reporter": "^7.0.5",
102
+ "postcss-sort-media-queries": "^5.2.0",
103
+ "rollup": "^3.28.0",
104
+ "rollup-plugin-dts": "^5.3.1",
105
+ "rollup-plugin-esbuild": "^5.0.0",
106
+ "rollup-plugin-preserve-directives": "^0.2.0",
107
+ "stylelint": "^15.10.2",
108
+ "stylelint-config-standard": "^34.0.0",
109
+ "stylelint-order": "^6.0.3",
110
+ "stylelint-plugin-logical-css": "^0.13.2"
111
+ },
112
+ "sideEffects": false,
113
+ "bugs": {
114
+ "url": "https://github.com/liveblocks/liveblocks/issues"
115
+ },
116
+ "repository": {
117
+ "type": "git",
118
+ "url": "https://github.com/liveblocks/liveblocks.git",
119
+ "directory": "packages/liveblocks-react-ui"
120
+ },
121
+ "homepage": "https://liveblocks.io",
122
+ "keywords": [
123
+ "react",
124
+ "components",
125
+ "comments",
126
+ "threads",
127
+ "notifications",
128
+ "liveblocks",
129
+ "real-time",
130
+ "toolkit",
131
+ "multiplayer",
132
+ "websockets",
133
+ "collaboration",
134
+ "collaborative",
135
+ "presence",
136
+ "crdts",
137
+ "synchronize",
138
+ "rooms",
139
+ "documents",
140
+ "conflict resolution"
141
+ ]
142
+ }
@@ -0,0 +1,5 @@
1
+ What is this directory? It exists solely to support subpath imports for node10.
2
+
3
+ While we're not interested in supporting this long-past EOL version 10 of Node,
4
+ we add this to acknowledge the reality that many TypeScript projects out there
5
+ are still using `--moduleResolution node`.
@@ -0,0 +1,4 @@
1
+ {
2
+ "main": "../dist/primitives/index.js",
3
+ "types": "../dist/primitives/index.d.ts"
4
+ }