@liveblocks/react 2.17.0-rc1 → 2.17.0-usrnotsettings1

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.
@@ -1,4 +1,4 @@
1
- export { g as getUmbrellaStoreForClient, b as useAddRoomCommentReaction, a as useClientOrNull, c as useCreateRoomComment, d as useCreateRoomThread, e as useCreateTextMention, f as useDeleteRoomComment, h as useDeleteRoomThread, i as useDeleteTextMention, j as useEditRoomComment, k as useEditRoomThreadMetadata, l as useMarkRoomThreadAsRead, m as useMarkRoomThreadAsResolved, n as useMarkRoomThreadAsUnresolved, o as useMentionSuggestionsCache, p as useRemoveRoomCommentReaction, q as useReportTextEditor, r as useResolveMentionSuggestions, s as useRoomAttachmentUrl, u as useRoomOrNull, t as useRoomPermissions, v as useYjsProvider } from './room-Ce3twcjb.mjs';
1
+ export { g as getUmbrellaStoreForClient, b as useAddRoomCommentReaction, a as useClientOrNull, c as useCreateRoomComment, d as useCreateRoomThread, e as useCreateTextMention, f as useDeleteRoomComment, h as useDeleteRoomThread, i as useDeleteTextMention, j as useEditRoomComment, k as useEditRoomThreadMetadata, l as useMarkRoomThreadAsRead, m as useMarkRoomThreadAsResolved, n as useMarkRoomThreadAsUnresolved, o as useMentionSuggestionsCache, p as useRemoveRoomCommentReaction, q as useReportTextEditor, r as useResolveMentionSuggestions, s as useRoomAttachmentUrl, u as useRoomOrNull, t as useRoomPermissions, v as useYjsProvider } from './room-DlI0Yrzf.mjs';
2
2
  import { useLayoutEffect as useLayoutEffect$1 } from 'react';
3
3
  import { ISignal, SyncSource } from '@liveblocks/core';
4
4
  import '@liveblocks/client';
@@ -1,4 +1,4 @@
1
- export { g as getUmbrellaStoreForClient, b as useAddRoomCommentReaction, a as useClientOrNull, c as useCreateRoomComment, d as useCreateRoomThread, e as useCreateTextMention, f as useDeleteRoomComment, h as useDeleteRoomThread, i as useDeleteTextMention, j as useEditRoomComment, k as useEditRoomThreadMetadata, l as useMarkRoomThreadAsRead, m as useMarkRoomThreadAsResolved, n as useMarkRoomThreadAsUnresolved, o as useMentionSuggestionsCache, p as useRemoveRoomCommentReaction, q as useReportTextEditor, r as useResolveMentionSuggestions, s as useRoomAttachmentUrl, u as useRoomOrNull, t as useRoomPermissions, v as useYjsProvider } from './room-Ce3twcjb.js';
1
+ export { g as getUmbrellaStoreForClient, b as useAddRoomCommentReaction, a as useClientOrNull, c as useCreateRoomComment, d as useCreateRoomThread, e as useCreateTextMention, f as useDeleteRoomComment, h as useDeleteRoomThread, i as useDeleteTextMention, j as useEditRoomComment, k as useEditRoomThreadMetadata, l as useMarkRoomThreadAsRead, m as useMarkRoomThreadAsResolved, n as useMarkRoomThreadAsUnresolved, o as useMentionSuggestionsCache, p as useRemoveRoomCommentReaction, q as useReportTextEditor, r as useResolveMentionSuggestions, s as useRoomAttachmentUrl, u as useRoomOrNull, t as useRoomPermissions, v as useYjsProvider } from './room-DlI0Yrzf.js';
2
2
  import { useLayoutEffect as useLayoutEffect$1 } from 'react';
3
3
  import { ISignal, SyncSource } from '@liveblocks/core';
4
4
  import '@liveblocks/client';
package/dist/_private.js CHANGED
@@ -24,7 +24,7 @@
24
24
 
25
25
 
26
26
 
27
- var _chunkJ5ZDLMBEjs = require('./chunk-J5ZDLMBE.js');
27
+ var _chunk4F7C4HN7js = require('./chunk-4F7C4HN7.js');
28
28
 
29
29
  // src/lib/use-layout-effect.ts
30
30
  var _react = require('react');
@@ -37,8 +37,8 @@ var MENTION_SUGGESTIONS_DEBOUNCE = 500;
37
37
  function useMentionSuggestions(roomId, search) {
38
38
  const [mentionSuggestions, setMentionSuggestions] = _react.useState.call(void 0, );
39
39
  const lastInvokedAt = _react.useRef.call(void 0, );
40
- const resolveMentionSuggestions = _chunkJ5ZDLMBEjs.useResolveMentionSuggestions.call(void 0, );
41
- const mentionSuggestionsCache = _chunkJ5ZDLMBEjs.useMentionSuggestionsCache.call(void 0, );
40
+ const resolveMentionSuggestions = _chunk4F7C4HN7js.useResolveMentionSuggestions.call(void 0, );
41
+ const mentionSuggestionsCache = _chunk4F7C4HN7js.useMentionSuggestionsCache.call(void 0, );
42
42
  _react.useEffect.call(void 0, () => {
43
43
  if (search === void 0 || !resolveMentionSuggestions) {
44
44
  return;
@@ -87,7 +87,7 @@ function useMentionSuggestions(roomId, search) {
87
87
 
88
88
 
89
89
  function useSyncSource() {
90
- const client = _chunkJ5ZDLMBEjs.useClient.call(void 0, );
90
+ const client = _chunk4F7C4HN7js.useClient.call(void 0, );
91
91
  const createSyncSource = client[_core.kInternal].createSyncSource;
92
92
  const [syncSource, setSyncSource] = _react.useState.call(void 0, );
93
93
  _react.useEffect.call(void 0, () => {
@@ -125,5 +125,5 @@ function useSyncSource() {
125
125
 
126
126
 
127
127
 
128
- exports.getUmbrellaStoreForClient = _chunkJ5ZDLMBEjs.getUmbrellaStoreForClient; exports.useAddRoomCommentReaction = _chunkJ5ZDLMBEjs.useAddRoomCommentReaction; exports.useClientOrNull = _chunkJ5ZDLMBEjs.useClientOrNull; exports.useCreateRoomComment = _chunkJ5ZDLMBEjs.useCreateRoomComment; exports.useCreateRoomThread = _chunkJ5ZDLMBEjs.useCreateRoomThread; exports.useCreateTextMention = _chunkJ5ZDLMBEjs.useCreateTextMention; exports.useDeleteRoomComment = _chunkJ5ZDLMBEjs.useDeleteRoomComment; exports.useDeleteRoomThread = _chunkJ5ZDLMBEjs.useDeleteRoomThread; exports.useDeleteTextMention = _chunkJ5ZDLMBEjs.useDeleteTextMention; exports.useEditRoomComment = _chunkJ5ZDLMBEjs.useEditRoomComment; exports.useEditRoomThreadMetadata = _chunkJ5ZDLMBEjs.useEditRoomThreadMetadata; exports.useLayoutEffect = useLayoutEffect; exports.useMarkRoomThreadAsRead = _chunkJ5ZDLMBEjs.useMarkRoomThreadAsRead; exports.useMarkRoomThreadAsResolved = _chunkJ5ZDLMBEjs.useMarkRoomThreadAsResolved; exports.useMarkRoomThreadAsUnresolved = _chunkJ5ZDLMBEjs.useMarkRoomThreadAsUnresolved; exports.useMentionSuggestions = useMentionSuggestions; exports.useMentionSuggestionsCache = _chunkJ5ZDLMBEjs.useMentionSuggestionsCache; exports.useRemoveRoomCommentReaction = _chunkJ5ZDLMBEjs.useRemoveRoomCommentReaction; exports.useReportTextEditor = _chunkJ5ZDLMBEjs.useReportTextEditor; exports.useResolveMentionSuggestions = _chunkJ5ZDLMBEjs.useResolveMentionSuggestions; exports.useRoomAttachmentUrl = _chunkJ5ZDLMBEjs.useRoomAttachmentUrl; exports.useRoomOrNull = _chunkJ5ZDLMBEjs.useRoomOrNull; exports.useRoomPermissions = _chunkJ5ZDLMBEjs.useRoomPermissions; exports.useSignal = _chunkJ5ZDLMBEjs.useSignal; exports.useSyncExternalStoreWithSelector = _chunkJ5ZDLMBEjs.useSyncExternalStoreWithSelector; exports.useSyncSource = useSyncSource; exports.useYjsProvider = _chunkJ5ZDLMBEjs.useYjsProvider;
128
+ exports.getUmbrellaStoreForClient = _chunk4F7C4HN7js.getUmbrellaStoreForClient; exports.useAddRoomCommentReaction = _chunk4F7C4HN7js.useAddRoomCommentReaction; exports.useClientOrNull = _chunk4F7C4HN7js.useClientOrNull; exports.useCreateRoomComment = _chunk4F7C4HN7js.useCreateRoomComment; exports.useCreateRoomThread = _chunk4F7C4HN7js.useCreateRoomThread; exports.useCreateTextMention = _chunk4F7C4HN7js.useCreateTextMention; exports.useDeleteRoomComment = _chunk4F7C4HN7js.useDeleteRoomComment; exports.useDeleteRoomThread = _chunk4F7C4HN7js.useDeleteRoomThread; exports.useDeleteTextMention = _chunk4F7C4HN7js.useDeleteTextMention; exports.useEditRoomComment = _chunk4F7C4HN7js.useEditRoomComment; exports.useEditRoomThreadMetadata = _chunk4F7C4HN7js.useEditRoomThreadMetadata; exports.useLayoutEffect = useLayoutEffect; exports.useMarkRoomThreadAsRead = _chunk4F7C4HN7js.useMarkRoomThreadAsRead; exports.useMarkRoomThreadAsResolved = _chunk4F7C4HN7js.useMarkRoomThreadAsResolved; exports.useMarkRoomThreadAsUnresolved = _chunk4F7C4HN7js.useMarkRoomThreadAsUnresolved; exports.useMentionSuggestions = useMentionSuggestions; exports.useMentionSuggestionsCache = _chunk4F7C4HN7js.useMentionSuggestionsCache; exports.useRemoveRoomCommentReaction = _chunk4F7C4HN7js.useRemoveRoomCommentReaction; exports.useReportTextEditor = _chunk4F7C4HN7js.useReportTextEditor; exports.useResolveMentionSuggestions = _chunk4F7C4HN7js.useResolveMentionSuggestions; exports.useRoomAttachmentUrl = _chunk4F7C4HN7js.useRoomAttachmentUrl; exports.useRoomOrNull = _chunk4F7C4HN7js.useRoomOrNull; exports.useRoomPermissions = _chunk4F7C4HN7js.useRoomPermissions; exports.useSignal = _chunk4F7C4HN7js.useSignal; exports.useSyncExternalStoreWithSelector = _chunk4F7C4HN7js.useSyncExternalStoreWithSelector; exports.useSyncSource = useSyncSource; exports.useYjsProvider = _chunk4F7C4HN7js.useYjsProvider;
129
129
  //# sourceMappingURL=_private.js.map
package/dist/_private.mjs CHANGED
@@ -24,7 +24,7 @@ import {
24
24
  useSignal,
25
25
  useSyncExternalStoreWithSelector,
26
26
  useYjsProvider
27
- } from "./chunk-4KNGHD4I.mjs";
27
+ } from "./chunk-LOPNJCSB.mjs";
28
28
 
29
29
  // src/lib/use-layout-effect.ts
30
30
  import { useEffect, useLayoutEffect as useOriginalLayoutEffect } from "react";
@@ -130,7 +130,9 @@ var config = {
130
130
  HISTORY_VERSIONS_POLL_INTERVAL: 1 * MINUTES,
131
131
  HISTORY_VERSIONS_MAX_STALE_TIME: 5 * SECONDS,
132
132
  NOTIFICATION_SETTINGS_POLL_INTERVAL: 1 * MINUTES,
133
- NOTIFICATION_SETTINGS_MAX_STALE_TIME: 5 * SECONDS
133
+ NOTIFICATION_SETTINGS_MAX_STALE_TIME: 5 * SECONDS,
134
+ USER_NOTIFICATION_SETTINGS_INTERVAL: 5 * MINUTES,
135
+ USER_NOTIFICATION_SETTINGS_MAX_STALE_TIME: 1 * MINUTES
134
136
  };
135
137
 
136
138
  // src/lib/AsyncResult.ts
@@ -159,15 +161,6 @@ function count(it, predicate) {
159
161
  return total;
160
162
  }
161
163
 
162
- // src/lib/ssr.ts
163
- function ensureNotServerSide() {
164
- if (typeof window === "undefined") {
165
- throw new Error(
166
- "You cannot use the Suspense version of Liveblocks hooks server side. Make sure to only call them client side by using a ClientSideSuspense wrapper.\nFor tips, see https://liveblocks.io/docs/api-reference/liveblocks-react#ClientSideSuspense"
167
- );
168
- }
169
- }
170
-
171
164
  // src/lib/use-initial.ts
172
165
 
173
166
 
@@ -242,6 +235,8 @@ var use = (
242
235
 
243
236
 
244
237
 
238
+
239
+
245
240
  // src/lib/autobind.ts
246
241
  function autobind(self) {
247
242
  const seen = /* @__PURE__ */ new Set();
@@ -251,7 +246,7 @@ function autobind(self) {
251
246
  for (const key of Reflect.ownKeys(obj)) {
252
247
  if (seen.has(key)) continue;
253
248
  const descriptor = Reflect.getOwnPropertyDescriptor(obj, key);
254
- if (typeof _optionalChain([descriptor, 'optionalAccess', _ => _.value]) === "function") {
249
+ if (typeof _optionalChain([descriptor, 'optionalAccess', _2 => _2.value]) === "function") {
255
250
  seen.add(key);
256
251
  self[key] = self[key].bind(self);
257
252
  }
@@ -351,7 +346,7 @@ var ThreadDB = class _ThreadDB {
351
346
  /** Returns an existing thread by ID. Will never return a deleted thread. */
352
347
  get(threadId) {
353
348
  const thread = this.getEvenIfDeleted(threadId);
354
- return _optionalChain([thread, 'optionalAccess', _2 => _2.deletedAt]) ? void 0 : thread;
349
+ return _optionalChain([thread, 'optionalAccess', _3 => _3.deletedAt]) ? void 0 : thread;
355
350
  }
356
351
  /** Returns the (possibly deleted) thread by ID. */
357
352
  getEvenIfDeleted(threadId) {
@@ -477,7 +472,7 @@ var PaginatedResource = class {
477
472
  }
478
473
  async #fetchMore() {
479
474
  const state = this.#signal.get();
480
- if (!_optionalChain([state, 'access', _3 => _3.data, 'optionalAccess', _4 => _4.cursor]) || state.data.isFetchingMore) {
475
+ if (!_optionalChain([state, 'access', _4 => _4.data, 'optionalAccess', _5 => _5.cursor]) || state.data.isFetchingMore) {
481
476
  return;
482
477
  }
483
478
  this.#patch({ isFetchingMore: true });
@@ -498,7 +493,7 @@ var PaginatedResource = class {
498
493
  }
499
494
  fetchMore() {
500
495
  const state = this.#signal.get();
501
- if (!_optionalChain([state, 'access', _5 => _5.data, 'optionalAccess', _6 => _6.cursor])) return noop2;
496
+ if (!_optionalChain([state, 'access', _6 => _6.data, 'optionalAccess', _7 => _7.cursor])) return noop2;
502
497
  if (!this.#pendingFetchMore) {
503
498
  this.#pendingFetchMore = this.#fetchMore().finally(() => {
504
499
  this.#pendingFetchMore = null;
@@ -723,6 +718,26 @@ function createStore_forPermissionHints() {
723
718
  update
724
719
  };
725
720
  }
721
+ function createStore_forUserNotificationSettings(updates) {
722
+ const signal = new (0, _core.Signal)({});
723
+ function update(settings) {
724
+ signal.set((prevSettings) => {
725
+ return {
726
+ ...prevSettings,
727
+ ...settings
728
+ };
729
+ });
730
+ }
731
+ return {
732
+ signal: _core.DerivedSignal.from(
733
+ signal,
734
+ updates,
735
+ (base, updates2) => applyOptimisticUpdates_forUserNotificationSettings(base, updates2)
736
+ ),
737
+ // Mutations
738
+ update
739
+ };
740
+ }
726
741
  function createStore_forOptimistic(client) {
727
742
  const signal = new (0, _core.Signal)([]);
728
743
  const syncSource = client[_core.kInternal].createSyncSource();
@@ -762,9 +777,11 @@ var UmbrellaStore = class {
762
777
  // \ | | | | & notifications by ID
763
778
  // | \ | | Apply | |
764
779
  // | `-> OptimisticUpdates --+--+--> Optimistic --+-+--> Notification Settings (Part 2)
765
- // \ | Updates |
766
- // `------- etc etc ---------+ +--> History Versions (Part 3)
767
- // ^
780
+ // \ | Updates | |
781
+ // `------- etc etc ---------+ | +--> History Versions (Part 3)
782
+ // ^ |
783
+ // | +-----> Channels Notification Settings (Part 4)
784
+ // |
768
785
  // |
769
786
  // | ^ ^
770
787
  // Signal | |
@@ -786,6 +803,7 @@ var UmbrellaStore = class {
786
803
 
787
804
 
788
805
 
806
+
789
807
  //
790
808
  // Output signals.
791
809
  // (Readonly, clean, consistent. With optimistic updates applied.)
@@ -805,6 +823,8 @@ var UmbrellaStore = class {
805
823
  #userThreadsLastRequestedAt = null;
806
824
  // Room versions
807
825
  #roomVersionsLastRequestedAtByRoom = /* @__PURE__ */ new Map();
826
+ // User Notification Settings
827
+ #userNotificationSettings;
808
828
  constructor(client) {
809
829
  this.#client = client[_core.kInternal].as();
810
830
  this.optimisticUpdates = createStore_forOptimistic(this.#client);
@@ -820,6 +840,16 @@ var UmbrellaStore = class {
820
840
  return nextCursor;
821
841
  }
822
842
  );
843
+ const channelsNotificationSettingsFetcher = async () => {
844
+ const result = await this.#client.getNotificationSettings();
845
+ this.userNotificationSettings.update(result);
846
+ };
847
+ this.userNotificationSettings = createStore_forUserNotificationSettings(
848
+ this.optimisticUpdates.signal
849
+ );
850
+ this.#userNotificationSettings = new SinglePageResource(
851
+ channelsNotificationSettingsFetcher
852
+ );
823
853
  this.threads = new ThreadDB();
824
854
  this.notifications = createStore_forNotifications();
825
855
  this.roomNotificationSettings = createStore_forRoomNotificationSettings(
@@ -997,6 +1027,19 @@ var UmbrellaStore = class {
997
1027
  return { signal, waitUntilLoaded: resource.waitUntilLoaded };
998
1028
  }
999
1029
  );
1030
+ const userNotificationSettings = {
1031
+ signal: _core.DerivedSignal.from(() => {
1032
+ const result = this.#userNotificationSettings.get();
1033
+ if (result.isLoading || result.error) {
1034
+ return result;
1035
+ }
1036
+ return ASYNC_OK(
1037
+ "settings",
1038
+ _core.nn.call(void 0, this.userNotificationSettings.signal.get())
1039
+ );
1040
+ }, _core.shallow),
1041
+ waitUntilLoaded: this.#userNotificationSettings.waitUntilLoaded
1042
+ };
1000
1043
  this.outputs = {
1001
1044
  threadifications,
1002
1045
  threads,
@@ -1005,7 +1048,8 @@ var UmbrellaStore = class {
1005
1048
  notifications,
1006
1049
  loadingNotifications,
1007
1050
  settingsByRoomId,
1008
- versionsByRoomId
1051
+ versionsByRoomId,
1052
+ userNotificationSettings
1009
1053
  };
1010
1054
  autobind(this);
1011
1055
  }
@@ -1250,6 +1294,25 @@ var UmbrellaStore = class {
1250
1294
  const result = await room.getNotificationSettings({ signal });
1251
1295
  this.roomNotificationSettings.update(roomId, result);
1252
1296
  }
1297
+ /**
1298
+ * Refresh User Notification Settings from poller
1299
+ */
1300
+ async refreshUserNotificationSettings(signal) {
1301
+ const result = await this.#client.getNotificationSettings({
1302
+ signal
1303
+ });
1304
+ this.userNotificationSettings.update(result);
1305
+ }
1306
+ /**
1307
+ * Updates user notification settings with a new value, replacing the
1308
+ * corresponding optimistic update.
1309
+ */
1310
+ updateUserNotificationSettings_confirmOptimisticUpdate(settings, optimisticUpdateId) {
1311
+ _core.batch.call(void 0, () => {
1312
+ this.optimisticUpdates.remove(optimisticUpdateId);
1313
+ this.userNotificationSettings.update(settings);
1314
+ });
1315
+ }
1253
1316
  };
1254
1317
  function applyOptimisticUpdates_forThreadifications(baseThreadsDB, notificationsLUT, optimisticUpdates) {
1255
1318
  const threadsDB = baseThreadsDB.clone();
@@ -1424,6 +1487,33 @@ function applyOptimisticUpdates_forSettings(settingsLUT, optimisticUpdates) {
1424
1487
  }
1425
1488
  return settingsByRoomId;
1426
1489
  }
1490
+ function applyOptimisticUpdates_forUserNotificationSettings(baseSettings, optimisticUpdates) {
1491
+ const outcomingSettings = { ...baseSettings };
1492
+ for (const optimisticUpdate of optimisticUpdates) {
1493
+ switch (optimisticUpdate.type) {
1494
+ case "update-user-notification-settings": {
1495
+ const incomingSettings = optimisticUpdate.settings;
1496
+ for (const channelKey of _core.keys.call(void 0, incomingSettings)) {
1497
+ const key = channelKey;
1498
+ const channelUpdates = incomingSettings[key];
1499
+ if (channelUpdates) {
1500
+ const realChannelUpdates = Object.fromEntries(
1501
+ _core.entries.call(void 0, channelUpdates).filter(
1502
+ ([_, value]) => value !== void 0
1503
+ )
1504
+ );
1505
+ outcomingSettings[key] = {
1506
+ ...outcomingSettings[key],
1507
+ ...realChannelUpdates
1508
+ };
1509
+ }
1510
+ }
1511
+ break;
1512
+ }
1513
+ }
1514
+ }
1515
+ return outcomingSettings;
1516
+ }
1427
1517
  function compareInboxNotifications(inboxNotificationA, inboxNotificationB) {
1428
1518
  if (inboxNotificationA.notifiedAt > inboxNotificationB.notifiedAt) {
1429
1519
  return 1;
@@ -1473,7 +1563,7 @@ function applyUpsertComment(thread, comment) {
1473
1563
  updatedAt: new Date(
1474
1564
  Math.max(
1475
1565
  thread.updatedAt.getTime(),
1476
- _optionalChain([comment, 'access', _7 => _7.editedAt, 'optionalAccess', _8 => _8.getTime, 'call', _9 => _9()]) || comment.createdAt.getTime()
1566
+ _optionalChain([comment, 'access', _8 => _8.editedAt, 'optionalAccess', _9 => _9.getTime, 'call', _10 => _10()]) || comment.createdAt.getTime()
1477
1567
  )
1478
1568
  ),
1479
1569
  comments: updatedComments
@@ -1632,7 +1722,7 @@ function selectorFor_useUnreadInboxNotificationsCount(result) {
1632
1722
  );
1633
1723
  }
1634
1724
  function selectorFor_useUser(state, userId) {
1635
- if (state === void 0 || _optionalChain([state, 'optionalAccess', _10 => _10.isLoading])) {
1725
+ if (state === void 0 || _optionalChain([state, 'optionalAccess', _11 => _11.isLoading])) {
1636
1726
  return _nullishCoalesce(state, () => ( { isLoading: true }));
1637
1727
  }
1638
1728
  if (state.error) {
@@ -1650,7 +1740,7 @@ function selectorFor_useUser(state, userId) {
1650
1740
  };
1651
1741
  }
1652
1742
  function selectorFor_useRoomInfo(state, roomId) {
1653
- if (state === void 0 || _optionalChain([state, 'optionalAccess', _11 => _11.isLoading])) {
1743
+ if (state === void 0 || _optionalChain([state, 'optionalAccess', _12 => _12.isLoading])) {
1654
1744
  return _nullishCoalesce(state, () => ( { isLoading: true }));
1655
1745
  }
1656
1746
  if (state.error) {
@@ -1717,10 +1807,25 @@ function makeLiveblocksExtrasForClient(client) {
1717
1807
  config.USER_THREADS_POLL_INTERVAL,
1718
1808
  { maxStaleTimeMs: config.USER_THREADS_MAX_STALE_TIME }
1719
1809
  );
1810
+ const userNotificationSettingsPoller = _core.makePoller.call(void 0,
1811
+ async (signal) => {
1812
+ try {
1813
+ return await store.refreshUserNotificationSettings(signal);
1814
+ } catch (err) {
1815
+ console.warn(
1816
+ `Polling new user notification settings failed: ${String(err)}`
1817
+ );
1818
+ throw err;
1819
+ }
1820
+ },
1821
+ config.USER_NOTIFICATION_SETTINGS_INTERVAL,
1822
+ { maxStaleTimeMs: config.USER_NOTIFICATION_SETTINGS_MAX_STALE_TIME }
1823
+ );
1720
1824
  return {
1721
1825
  store,
1722
1826
  notificationsPoller,
1723
- userThreadsPoller
1827
+ userThreadsPoller,
1828
+ userNotificationSettingsPoller
1724
1829
  };
1725
1830
  }
1726
1831
  function makeLiveblocksContextBundle(client) {
@@ -1729,6 +1834,7 @@ function makeLiveblocksContextBundle(client) {
1729
1834
  const useMarkAllInboxNotificationsAsRead2 = () => useMarkAllInboxNotificationsAsRead_withClient(client);
1730
1835
  const useDeleteInboxNotification2 = () => useDeleteInboxNotification_withClient(client);
1731
1836
  const useDeleteAllInboxNotifications2 = () => useDeleteAllInboxNotifications_withClient(client);
1837
+ const useUpdateNotificationSettings2 = () => useUpdateNotificationSettings_withClient(client);
1732
1838
  function LiveblocksProvider2(props) {
1733
1839
  useEnsureNoLiveblocksProvider();
1734
1840
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ClientContext.Provider, { value: client, children: props.children });
@@ -1742,6 +1848,8 @@ function makeLiveblocksContextBundle(client) {
1742
1848
  useMarkAllInboxNotificationsAsRead: useMarkAllInboxNotificationsAsRead2,
1743
1849
  useDeleteInboxNotification: useDeleteInboxNotification2,
1744
1850
  useDeleteAllInboxNotifications: useDeleteAllInboxNotifications2,
1851
+ useNotificationSettings: () => useNotificationSettings_withClient(client),
1852
+ useUpdateNotificationSettings: useUpdateNotificationSettings2,
1745
1853
  useInboxNotificationThread: useInboxNotificationThread2,
1746
1854
  useUserThreads_experimental,
1747
1855
  ...shared.classic,
@@ -1754,6 +1862,8 @@ function makeLiveblocksContextBundle(client) {
1754
1862
  useDeleteInboxNotification: useDeleteInboxNotification2,
1755
1863
  useDeleteAllInboxNotifications: useDeleteAllInboxNotifications2,
1756
1864
  useInboxNotificationThread: useInboxNotificationThread2,
1865
+ useNotificationSettings: () => useNotificationSettingsSuspense_withClient(client),
1866
+ useUpdateNotificationSettings: useUpdateNotificationSettings2,
1757
1867
  useUserThreads_experimental: useUserThreadsSuspense_experimental,
1758
1868
  ...shared.suspense
1759
1869
  }
@@ -1787,7 +1897,6 @@ function useInboxNotifications_withClient(client, selector, isEqual) {
1787
1897
  );
1788
1898
  }
1789
1899
  function useInboxNotificationsSuspense_withClient(client) {
1790
- ensureNotServerSide();
1791
1900
  const store = getLiveblocksExtrasForClient(client).store;
1792
1901
  use(store.outputs.loadingNotifications.waitUntilLoaded());
1793
1902
  const result = useInboxNotifications_withClient(client, identity2, _core.shallow);
@@ -1803,7 +1912,6 @@ function useUnreadInboxNotificationsCount_withClient(client) {
1803
1912
  );
1804
1913
  }
1805
1914
  function useUnreadInboxNotificationsCountSuspense_withClient(client) {
1806
- ensureNotServerSide();
1807
1915
  const store = getLiveblocksExtrasForClient(client).store;
1808
1916
  use(store.outputs.loadingNotifications.waitUntilLoaded());
1809
1917
  const result = useUnreadInboxNotificationsCount_withClient(client);
@@ -1938,6 +2046,57 @@ function useInboxNotificationThread_withClient(client, inboxNotificationId) {
1938
2046
  )
1939
2047
  );
1940
2048
  }
2049
+ function useUpdateNotificationSettings_withClient(client) {
2050
+ return _react.useCallback.call(void 0,
2051
+ (settings) => {
2052
+ const { store } = getLiveblocksExtrasForClient(client);
2053
+ const optimisticUpdateId = store.optimisticUpdates.add({
2054
+ type: "update-user-notification-settings",
2055
+ settings
2056
+ });
2057
+ client.updateNotificationSettings(settings).then(
2058
+ (settings2) => {
2059
+ store.updateUserNotificationSettings_confirmOptimisticUpdate(
2060
+ settings2,
2061
+ optimisticUpdateId
2062
+ );
2063
+ },
2064
+ () => {
2065
+ store.optimisticUpdates.remove(optimisticUpdateId);
2066
+ }
2067
+ );
2068
+ },
2069
+ [client]
2070
+ );
2071
+ }
2072
+ function useNotificationSettings_withClient(client) {
2073
+ const updateNotificationSettings = useUpdateNotificationSettings_withClient(client);
2074
+ const { store, userNotificationSettingsPoller: poller } = getLiveblocksExtrasForClient(client);
2075
+ _react.useEffect.call(void 0, () => {
2076
+ void store.outputs.userNotificationSettings.waitUntilLoaded();
2077
+ });
2078
+ _react.useEffect.call(void 0, () => {
2079
+ poller.inc();
2080
+ poller.pollNowIfStale();
2081
+ return () => {
2082
+ poller.dec();
2083
+ };
2084
+ }, [poller]);
2085
+ const settings = useSignal(store.outputs.userNotificationSettings.signal);
2086
+ return _react.useMemo.call(void 0, () => {
2087
+ return [settings, updateNotificationSettings];
2088
+ }, [settings, updateNotificationSettings]);
2089
+ }
2090
+ function useNotificationSettingsSuspense_withClient(client) {
2091
+ const store = getLiveblocksExtrasForClient(client).store;
2092
+ use(store.outputs.userNotificationSettings.waitUntilLoaded());
2093
+ const [settings, updateNotificationSettings] = useNotificationSettings_withClient(client);
2094
+ _core.assert.call(void 0, !settings.error, "Did not expect error");
2095
+ _core.assert.call(void 0, !settings.isLoading, "Did not expect loading");
2096
+ return _react.useMemo.call(void 0, () => {
2097
+ return [settings, updateNotificationSettings];
2098
+ }, [settings, updateNotificationSettings]);
2099
+ }
1941
2100
  function useUser_withClient(client, userId) {
1942
2101
  const usersStore = client[_core.kInternal].usersStore;
1943
2102
  const getUserState = _react.useCallback.call(void 0,
@@ -2087,7 +2246,7 @@ function createSharedContext(client) {
2087
2246
  }
2088
2247
  function useEnsureNoLiveblocksProvider(options) {
2089
2248
  const existing = useClientOrNull();
2090
- if (!_optionalChain([options, 'optionalAccess', _12 => _12.allowNesting]) && existing !== null) {
2249
+ if (!_optionalChain([options, 'optionalAccess', _13 => _13.allowNesting]) && existing !== null) {
2091
2250
  throw new Error(
2092
2251
  "You cannot nest multiple LiveblocksProvider instances in the same React tree."
2093
2252
  );
@@ -2111,7 +2270,6 @@ function LiveblocksProvider(props) {
2111
2270
  lostConnectionTimeout: useInitial(o.lostConnectionTimeout),
2112
2271
  backgroundKeepAliveTimeout: useInitial(o.backgroundKeepAliveTimeout),
2113
2272
  polyfills: useInitial(o.polyfills),
2114
- largeMessageStrategy: useInitial(o.largeMessageStrategy),
2115
2273
  unstable_fallbackToHTTP: useInitial(o.unstable_fallbackToHTTP),
2116
2274
  unstable_streamData: useInitial(o.unstable_streamData),
2117
2275
  preventUnsavedChanges: useInitial(o.preventUnsavedChanges),
@@ -2163,7 +2321,6 @@ function useUserThreads_experimental(options = {}) {
2163
2321
  );
2164
2322
  }
2165
2323
  function useUserThreadsSuspense_experimental(options = {}) {
2166
- ensureNotServerSide();
2167
2324
  const client = useClient();
2168
2325
  const { store } = getLiveblocksExtrasForClient(client);
2169
2326
  const queryKey = makeUserThreadsQueryKey(options.query);
@@ -2203,6 +2360,15 @@ function useUnreadInboxNotificationsCount() {
2203
2360
  function useUnreadInboxNotificationsCountSuspense() {
2204
2361
  return useUnreadInboxNotificationsCountSuspense_withClient(useClient());
2205
2362
  }
2363
+ function useNotificationSettings() {
2364
+ return useNotificationSettings_withClient(useClient());
2365
+ }
2366
+ function useNotificationSettingsSuspense() {
2367
+ return useNotificationSettingsSuspense_withClient(useClient());
2368
+ }
2369
+ function useUpdateNotificationSettings() {
2370
+ return useUpdateNotificationSettings_withClient(useClient());
2371
+ }
2206
2372
  function useUser(userId) {
2207
2373
  const client = useClient();
2208
2374
  return useUser_withClient(client, userId);
@@ -2223,7 +2389,7 @@ var _useUserSuspense = useUserSuspense;
2223
2389
  var _useUserThreads_experimental = useUserThreads_experimental;
2224
2390
  var _useUserThreadsSuspense_experimental = useUserThreadsSuspense_experimental;
2225
2391
  function useSyncStatus_withClient(client, options) {
2226
- const smooth = useInitial(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _13 => _13.smooth]), () => ( false)));
2392
+ const smooth = useInitial(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _14 => _14.smooth]), () => ( false)));
2227
2393
  if (smooth) {
2228
2394
  return useSyncStatusSmooth_withClient(client);
2229
2395
  } else {
@@ -2401,8 +2567,8 @@ function makeRoomExtrasForClient(client) {
2401
2567
  if (innerError.status === 403) {
2402
2568
  const detailedMessage = [
2403
2569
  innerError.message,
2404
- _optionalChain([innerError, 'access', _14 => _14.details, 'optionalAccess', _15 => _15.suggestion]),
2405
- _optionalChain([innerError, 'access', _16 => _16.details, 'optionalAccess', _17 => _17.docs])
2570
+ _optionalChain([innerError, 'access', _15 => _15.details, 'optionalAccess', _16 => _16.suggestion]),
2571
+ _optionalChain([innerError, 'access', _17 => _17.details, 'optionalAccess', _18 => _18.docs])
2406
2572
  ].filter(Boolean).join("\n");
2407
2573
  _core.console.error(detailedMessage);
2408
2574
  }
@@ -2756,7 +2922,7 @@ function useMentionSuggestionsCache() {
2756
2922
  return client[_core.kInternal].mentionSuggestionsCache;
2757
2923
  }
2758
2924
  function useStorageStatus(options) {
2759
- const smooth = useInitial(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _18 => _18.smooth]), () => ( false)));
2925
+ const smooth = useInitial(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _19 => _19.smooth]), () => ( false)));
2760
2926
  if (smooth) {
2761
2927
  return useStorageStatusSmooth();
2762
2928
  } else {
@@ -3070,7 +3236,7 @@ function useCreateRoomThread(roomId) {
3070
3236
  thread: newThread,
3071
3237
  roomId
3072
3238
  });
3073
- const attachmentIds = _optionalChain([attachments, 'optionalAccess', _19 => _19.map, 'call', _20 => _20((attachment) => attachment.id)]);
3239
+ const attachmentIds = _optionalChain([attachments, 'optionalAccess', _20 => _20.map, 'call', _21 => _21((attachment) => attachment.id)]);
3074
3240
  client[_core.kInternal].httpClient.createThread({
3075
3241
  roomId,
3076
3242
  threadId,
@@ -3110,7 +3276,7 @@ function useDeleteRoomThread(roomId) {
3110
3276
  const { store, onMutationFailure } = getRoomExtrasForClient(client);
3111
3277
  const userId = getCurrentUserId(client);
3112
3278
  const existing = store.outputs.threads.get().get(threadId);
3113
- if (_optionalChain([existing, 'optionalAccess', _21 => _21.comments, 'optionalAccess', _22 => _22[0], 'optionalAccess', _23 => _23.userId]) !== userId) {
3279
+ if (_optionalChain([existing, 'optionalAccess', _22 => _22.comments, 'optionalAccess', _23 => _23[0], 'optionalAccess', _24 => _24.userId]) !== userId) {
3114
3280
  throw new Error("Only the thread creator can delete the thread");
3115
3281
  }
3116
3282
  const optimisticId = store.optimisticUpdates.add({
@@ -3198,7 +3364,7 @@ function useCreateRoomComment(roomId) {
3198
3364
  type: "create-comment",
3199
3365
  comment
3200
3366
  });
3201
- const attachmentIds = _optionalChain([attachments, 'optionalAccess', _24 => _24.map, 'call', _25 => _25((attachment) => attachment.id)]);
3367
+ const attachmentIds = _optionalChain([attachments, 'optionalAccess', _25 => _25.map, 'call', _26 => _26((attachment) => attachment.id)]);
3202
3368
  client[_core.kInternal].httpClient.createComment({ roomId, threadId, commentId, body, attachmentIds }).then(
3203
3369
  (newComment) => {
3204
3370
  store.createComment(newComment, optimisticId);
@@ -3254,7 +3420,7 @@ function useEditRoomComment(roomId) {
3254
3420
  attachments: _nullishCoalesce(attachments, () => ( []))
3255
3421
  }
3256
3422
  });
3257
- const attachmentIds = _optionalChain([attachments, 'optionalAccess', _26 => _26.map, 'call', _27 => _27((attachment) => attachment.id)]);
3423
+ const attachmentIds = _optionalChain([attachments, 'optionalAccess', _27 => _27.map, 'call', _28 => _28((attachment) => attachment.id)]);
3258
3424
  client[_core.kInternal].httpClient.editComment({ roomId, threadId, commentId, body, attachmentIds }).then(
3259
3425
  (editedComment) => {
3260
3426
  store.editComment(threadId, optimisticId, editedComment);
@@ -3558,7 +3724,6 @@ function useRoomNotificationSettings() {
3558
3724
  }, [settings, updateRoomNotificationSettings]);
3559
3725
  }
3560
3726
  function useRoomNotificationSettingsSuspense() {
3561
- ensureNotServerSide();
3562
3727
  const client = useClient();
3563
3728
  const store = getRoomExtrasForClient(client).store;
3564
3729
  const room = useRoom();
@@ -3623,7 +3788,6 @@ function useHistoryVersions() {
3623
3788
  return useSignal(store.outputs.versionsByRoomId.getOrCreate(room.id).signal);
3624
3789
  }
3625
3790
  function useHistoryVersionsSuspense() {
3626
- ensureNotServerSide();
3627
3791
  const client = useClient();
3628
3792
  const room = useRoom();
3629
3793
  const store = getRoomExtrasForClient(client).store;
@@ -3658,6 +3822,13 @@ function useUpdateRoomNotificationSettings() {
3658
3822
  [client, room]
3659
3823
  );
3660
3824
  }
3825
+ function ensureNotServerSide() {
3826
+ if (typeof window === "undefined") {
3827
+ throw new Error(
3828
+ "You cannot use the Suspense version of this hook on the server side. Make sure to only call them on the client side.\nFor tips, see https://liveblocks.io/docs/api-reference/liveblocks-react#suspense-avoid-ssr"
3829
+ );
3830
+ }
3831
+ }
3661
3832
  function useSuspendUntilPresenceReady() {
3662
3833
  ensureNotServerSide();
3663
3834
  const room = useRoom();
@@ -3706,7 +3877,6 @@ function useStorageStatusSuspense(options) {
3706
3877
  return useStorageStatus(options);
3707
3878
  }
3708
3879
  function useThreadsSuspense(options = {}) {
3709
- ensureNotServerSide();
3710
3880
  const client = useClient();
3711
3881
  const room = useRoom();
3712
3882
  const { store } = getRoomExtrasForClient(client);
@@ -3718,7 +3888,7 @@ function useThreadsSuspense(options = {}) {
3718
3888
  return result;
3719
3889
  }
3720
3890
  function selectorFor_useAttachmentUrl(state) {
3721
- if (state === void 0 || _optionalChain([state, 'optionalAccess', _28 => _28.isLoading])) {
3891
+ if (state === void 0 || _optionalChain([state, 'optionalAccess', _29 => _29.isLoading])) {
3722
3892
  return _nullishCoalesce(state, () => ( { isLoading: true }));
3723
3893
  }
3724
3894
  if (state.error) {
@@ -3933,5 +4103,8 @@ var _useUpdateMyPresence = useUpdateMyPresence;
3933
4103
 
3934
4104
 
3935
4105
 
3936
- exports.RoomContext = RoomContext; exports.useRoomOrNull = useRoomOrNull; exports.useSyncExternalStoreWithSelector = useSyncExternalStoreWithSelector; exports.useSignal = useSignal; exports.ClientContext = ClientContext; exports.getUmbrellaStoreForClient = getUmbrellaStoreForClient; exports.useClientOrNull = useClientOrNull; exports.useClient = useClient; exports.LiveblocksProvider = LiveblocksProvider; exports.createLiveblocksContext = createLiveblocksContext; exports.useInboxNotifications = useInboxNotifications; exports.useInboxNotificationsSuspense = useInboxNotificationsSuspense; exports.useMarkAllInboxNotificationsAsRead = useMarkAllInboxNotificationsAsRead; exports.useMarkInboxNotificationAsRead = useMarkInboxNotificationAsRead; exports.useDeleteAllInboxNotifications = useDeleteAllInboxNotifications; exports.useDeleteInboxNotification = useDeleteInboxNotification; exports.useUnreadInboxNotificationsCount = useUnreadInboxNotificationsCount; exports.useUnreadInboxNotificationsCountSuspense = useUnreadInboxNotificationsCountSuspense; exports.useRoomInfo = useRoomInfo; exports.useRoomInfoSuspense = useRoomInfoSuspense; exports._useInboxNotificationThread = _useInboxNotificationThread; exports._useUser = _useUser; exports._useUserSuspense = _useUserSuspense; exports._useUserThreads_experimental = _useUserThreads_experimental; exports._useUserThreadsSuspense_experimental = _useUserThreadsSuspense_experimental; exports.useSyncStatus = useSyncStatus; exports.useErrorListener = useErrorListener; exports.useStatus = useStatus; exports.useReportTextEditor = useReportTextEditor; exports.useYjsProvider = useYjsProvider; exports.useCreateTextMention = useCreateTextMention; exports.useDeleteTextMention = useDeleteTextMention; exports.useResolveMentionSuggestions = useResolveMentionSuggestions; exports.useMentionSuggestionsCache = useMentionSuggestionsCache; exports.useStorageStatus = useStorageStatus; exports.useBatch = useBatch; exports.useLostConnectionListener = useLostConnectionListener; exports.useHistory = useHistory; exports.useUndo = useUndo; exports.useRedo = useRedo; exports.useCanUndo = useCanUndo; exports.useCanRedo = useCanRedo; exports.useOthersConnectionIds = useOthersConnectionIds; exports.useCreateRoomThread = useCreateRoomThread; exports.useDeleteRoomThread = useDeleteRoomThread; exports.useEditRoomThreadMetadata = useEditRoomThreadMetadata; exports.useCreateComment = useCreateComment; exports.useCreateRoomComment = useCreateRoomComment; exports.useEditComment = useEditComment; exports.useEditRoomComment = useEditRoomComment; exports.useDeleteComment = useDeleteComment; exports.useDeleteRoomComment = useDeleteRoomComment; exports.useAddRoomCommentReaction = useAddRoomCommentReaction; exports.useRemoveReaction = useRemoveReaction; exports.useRemoveRoomCommentReaction = useRemoveRoomCommentReaction; exports.useMarkThreadAsRead = useMarkThreadAsRead; exports.useMarkRoomThreadAsRead = useMarkRoomThreadAsRead; exports.useMarkThreadAsResolved = useMarkThreadAsResolved; exports.useMarkRoomThreadAsResolved = useMarkRoomThreadAsResolved; exports.useMarkThreadAsUnresolved = useMarkThreadAsUnresolved; exports.useMarkRoomThreadAsUnresolved = useMarkRoomThreadAsUnresolved; exports.useThreadSubscription = useThreadSubscription; exports.useHistoryVersionData = useHistoryVersionData; exports.useUpdateRoomNotificationSettings = useUpdateRoomNotificationSettings; exports.useOthersConnectionIdsSuspense = useOthersConnectionIdsSuspense; exports.useStorageStatusSuspense = useStorageStatusSuspense; exports.useAttachmentUrl = useAttachmentUrl; exports.useRoomAttachmentUrl = useRoomAttachmentUrl; exports.useAttachmentUrlSuspense = useAttachmentUrlSuspense; exports.useRoomPermissions = useRoomPermissions; exports.createRoomContext = createRoomContext; exports._RoomProvider = _RoomProvider; exports._useBroadcastEvent = _useBroadcastEvent; exports._useOthersListener = _useOthersListener; exports._useRoom = _useRoom; exports._useIsInsideRoom = _useIsInsideRoom; exports._useAddReaction = _useAddReaction; exports._useMutation = _useMutation; exports._useCreateThread = _useCreateThread; exports._useDeleteThread = _useDeleteThread; exports._useEditThreadMetadata = _useEditThreadMetadata; exports._useEventListener = _useEventListener; exports._useMyPresence = _useMyPresence; exports._useOthersMapped = _useOthersMapped; exports._useOthersMappedSuspense = _useOthersMappedSuspense; exports._useThreads = _useThreads; exports._useThreadsSuspense = _useThreadsSuspense; exports._useRoomNotificationSettings = _useRoomNotificationSettings; exports._useRoomNotificationSettingsSuspense = _useRoomNotificationSettingsSuspense; exports._useHistoryVersions = _useHistoryVersions; exports._useHistoryVersionsSuspense = _useHistoryVersionsSuspense; exports._useOther = _useOther; exports._useOthers = _useOthers; exports._useOtherSuspense = _useOtherSuspense; exports._useOthersSuspense = _useOthersSuspense; exports._useStorage = _useStorage; exports._useStorageSuspense = _useStorageSuspense; exports._useSelf = _useSelf; exports._useSelfSuspense = _useSelfSuspense; exports._useStorageRoot = _useStorageRoot; exports._useUpdateMyPresence = _useUpdateMyPresence;
3937
- //# sourceMappingURL=chunk-J5ZDLMBE.js.map
4106
+
4107
+
4108
+
4109
+ exports.RoomContext = RoomContext; exports.useRoomOrNull = useRoomOrNull; exports.useSyncExternalStoreWithSelector = useSyncExternalStoreWithSelector; exports.useSignal = useSignal; exports.ClientContext = ClientContext; exports.getUmbrellaStoreForClient = getUmbrellaStoreForClient; exports.useClientOrNull = useClientOrNull; exports.useClient = useClient; exports.LiveblocksProvider = LiveblocksProvider; exports.createLiveblocksContext = createLiveblocksContext; exports.useInboxNotifications = useInboxNotifications; exports.useInboxNotificationsSuspense = useInboxNotificationsSuspense; exports.useMarkAllInboxNotificationsAsRead = useMarkAllInboxNotificationsAsRead; exports.useMarkInboxNotificationAsRead = useMarkInboxNotificationAsRead; exports.useDeleteAllInboxNotifications = useDeleteAllInboxNotifications; exports.useDeleteInboxNotification = useDeleteInboxNotification; exports.useUnreadInboxNotificationsCount = useUnreadInboxNotificationsCount; exports.useUnreadInboxNotificationsCountSuspense = useUnreadInboxNotificationsCountSuspense; exports.useNotificationSettings = useNotificationSettings; exports.useNotificationSettingsSuspense = useNotificationSettingsSuspense; exports.useUpdateNotificationSettings = useUpdateNotificationSettings; exports.useRoomInfo = useRoomInfo; exports.useRoomInfoSuspense = useRoomInfoSuspense; exports._useInboxNotificationThread = _useInboxNotificationThread; exports._useUser = _useUser; exports._useUserSuspense = _useUserSuspense; exports._useUserThreads_experimental = _useUserThreads_experimental; exports._useUserThreadsSuspense_experimental = _useUserThreadsSuspense_experimental; exports.useSyncStatus = useSyncStatus; exports.useErrorListener = useErrorListener; exports.useStatus = useStatus; exports.useReportTextEditor = useReportTextEditor; exports.useYjsProvider = useYjsProvider; exports.useCreateTextMention = useCreateTextMention; exports.useDeleteTextMention = useDeleteTextMention; exports.useResolveMentionSuggestions = useResolveMentionSuggestions; exports.useMentionSuggestionsCache = useMentionSuggestionsCache; exports.useStorageStatus = useStorageStatus; exports.useBatch = useBatch; exports.useLostConnectionListener = useLostConnectionListener; exports.useHistory = useHistory; exports.useUndo = useUndo; exports.useRedo = useRedo; exports.useCanUndo = useCanUndo; exports.useCanRedo = useCanRedo; exports.useOthersConnectionIds = useOthersConnectionIds; exports.useCreateRoomThread = useCreateRoomThread; exports.useDeleteRoomThread = useDeleteRoomThread; exports.useEditRoomThreadMetadata = useEditRoomThreadMetadata; exports.useCreateComment = useCreateComment; exports.useCreateRoomComment = useCreateRoomComment; exports.useEditComment = useEditComment; exports.useEditRoomComment = useEditRoomComment; exports.useDeleteComment = useDeleteComment; exports.useDeleteRoomComment = useDeleteRoomComment; exports.useAddRoomCommentReaction = useAddRoomCommentReaction; exports.useRemoveReaction = useRemoveReaction; exports.useRemoveRoomCommentReaction = useRemoveRoomCommentReaction; exports.useMarkThreadAsRead = useMarkThreadAsRead; exports.useMarkRoomThreadAsRead = useMarkRoomThreadAsRead; exports.useMarkThreadAsResolved = useMarkThreadAsResolved; exports.useMarkRoomThreadAsResolved = useMarkRoomThreadAsResolved; exports.useMarkThreadAsUnresolved = useMarkThreadAsUnresolved; exports.useMarkRoomThreadAsUnresolved = useMarkRoomThreadAsUnresolved; exports.useThreadSubscription = useThreadSubscription; exports.useHistoryVersionData = useHistoryVersionData; exports.useUpdateRoomNotificationSettings = useUpdateRoomNotificationSettings; exports.useOthersConnectionIdsSuspense = useOthersConnectionIdsSuspense; exports.useStorageStatusSuspense = useStorageStatusSuspense; exports.useAttachmentUrl = useAttachmentUrl; exports.useRoomAttachmentUrl = useRoomAttachmentUrl; exports.useAttachmentUrlSuspense = useAttachmentUrlSuspense; exports.useRoomPermissions = useRoomPermissions; exports.createRoomContext = createRoomContext; exports._RoomProvider = _RoomProvider; exports._useBroadcastEvent = _useBroadcastEvent; exports._useOthersListener = _useOthersListener; exports._useRoom = _useRoom; exports._useIsInsideRoom = _useIsInsideRoom; exports._useAddReaction = _useAddReaction; exports._useMutation = _useMutation; exports._useCreateThread = _useCreateThread; exports._useDeleteThread = _useDeleteThread; exports._useEditThreadMetadata = _useEditThreadMetadata; exports._useEventListener = _useEventListener; exports._useMyPresence = _useMyPresence; exports._useOthersMapped = _useOthersMapped; exports._useOthersMappedSuspense = _useOthersMappedSuspense; exports._useThreads = _useThreads; exports._useThreadsSuspense = _useThreadsSuspense; exports._useRoomNotificationSettings = _useRoomNotificationSettings; exports._useRoomNotificationSettingsSuspense = _useRoomNotificationSettingsSuspense; exports._useHistoryVersions = _useHistoryVersions; exports._useHistoryVersionsSuspense = _useHistoryVersionsSuspense; exports._useOther = _useOther; exports._useOthers = _useOthers; exports._useOtherSuspense = _useOtherSuspense; exports._useOthersSuspense = _useOthersSuspense; exports._useStorage = _useStorage; exports._useStorageSuspense = _useStorageSuspense; exports._useSelf = _useSelf; exports._useSelfSuspense = _useSelfSuspense; exports._useStorageRoot = _useStorageRoot; exports._useUpdateMyPresence = _useUpdateMyPresence;
4110
+ //# sourceMappingURL=chunk-4F7C4HN7.js.map