@liveblocks/react 2.17.0 → 2.18.0-yjsfactory

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-DVbQkoj3.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-Bf3S78LF.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-DVbQkoj3.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-Bf3S78LF.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 _chunkLJCQ446Sjs = require('./chunk-LJCQ446S.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 = _chunkLJCQ446Sjs.useResolveMentionSuggestions.call(void 0, );
41
+ const mentionSuggestionsCache = _chunkLJCQ446Sjs.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 = _chunkLJCQ446Sjs.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 = _chunkLJCQ446Sjs.getUmbrellaStoreForClient; exports.useAddRoomCommentReaction = _chunkLJCQ446Sjs.useAddRoomCommentReaction; exports.useClientOrNull = _chunkLJCQ446Sjs.useClientOrNull; exports.useCreateRoomComment = _chunkLJCQ446Sjs.useCreateRoomComment; exports.useCreateRoomThread = _chunkLJCQ446Sjs.useCreateRoomThread; exports.useCreateTextMention = _chunkLJCQ446Sjs.useCreateTextMention; exports.useDeleteRoomComment = _chunkLJCQ446Sjs.useDeleteRoomComment; exports.useDeleteRoomThread = _chunkLJCQ446Sjs.useDeleteRoomThread; exports.useDeleteTextMention = _chunkLJCQ446Sjs.useDeleteTextMention; exports.useEditRoomComment = _chunkLJCQ446Sjs.useEditRoomComment; exports.useEditRoomThreadMetadata = _chunkLJCQ446Sjs.useEditRoomThreadMetadata; exports.useLayoutEffect = useLayoutEffect; exports.useMarkRoomThreadAsRead = _chunkLJCQ446Sjs.useMarkRoomThreadAsRead; exports.useMarkRoomThreadAsResolved = _chunkLJCQ446Sjs.useMarkRoomThreadAsResolved; exports.useMarkRoomThreadAsUnresolved = _chunkLJCQ446Sjs.useMarkRoomThreadAsUnresolved; exports.useMentionSuggestions = useMentionSuggestions; exports.useMentionSuggestionsCache = _chunkLJCQ446Sjs.useMentionSuggestionsCache; exports.useRemoveRoomCommentReaction = _chunkLJCQ446Sjs.useRemoveRoomCommentReaction; exports.useReportTextEditor = _chunkLJCQ446Sjs.useReportTextEditor; exports.useResolveMentionSuggestions = _chunkLJCQ446Sjs.useResolveMentionSuggestions; exports.useRoomAttachmentUrl = _chunkLJCQ446Sjs.useRoomAttachmentUrl; exports.useRoomOrNull = _chunkLJCQ446Sjs.useRoomOrNull; exports.useRoomPermissions = _chunkLJCQ446Sjs.useRoomPermissions; exports.useSignal = _chunkLJCQ446Sjs.useSignal; exports.useSyncExternalStoreWithSelector = _chunkLJCQ446Sjs.useSyncExternalStoreWithSelector; exports.useSyncSource = useSyncSource; exports.useYjsProvider = _chunkLJCQ446Sjs.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-OSTPNTQF.mjs";
28
28
 
29
29
  // src/lib/use-layout-effect.ts
30
30
  import { useEffect, useLayoutEffect as useOriginalLayoutEffect } from "react";
@@ -1,6 +1,6 @@
1
1
  // src/version.ts
2
2
  var PKG_NAME = "@liveblocks/react";
3
- var PKG_VERSION = "2.17.0";
3
+ var PKG_VERSION = "2.18.0-yjsfactory";
4
4
  var PKG_FORMAT = "esm";
5
5
 
6
6
  // src/ClientSideSuspense.tsx
@@ -20,4 +20,4 @@ export {
20
20
  PKG_FORMAT,
21
21
  ClientSideSuspense
22
22
  };
23
- //# sourceMappingURL=chunk-XHQ4VJ7B.mjs.map
23
+ //# sourceMappingURL=chunk-6GCMTETG.mjs.map
@@ -100,12 +100,15 @@ function useSignal(signal, selector, isEqual) {
100
100
  // src/liveblocks.tsx
101
101
 
102
102
 
103
+ var _core = require('@liveblocks/core');
104
+
105
+
106
+
103
107
 
104
108
 
105
109
 
106
110
 
107
111
 
108
- var _core = require('@liveblocks/core');
109
112
 
110
113
 
111
114
 
@@ -130,7 +133,9 @@ var config = {
130
133
  HISTORY_VERSIONS_POLL_INTERVAL: 1 * MINUTES,
131
134
  HISTORY_VERSIONS_MAX_STALE_TIME: 5 * SECONDS,
132
135
  NOTIFICATION_SETTINGS_POLL_INTERVAL: 1 * MINUTES,
133
- NOTIFICATION_SETTINGS_MAX_STALE_TIME: 5 * SECONDS
136
+ NOTIFICATION_SETTINGS_MAX_STALE_TIME: 5 * SECONDS,
137
+ USER_NOTIFICATION_SETTINGS_INTERVAL: 5 * MINUTES,
138
+ USER_NOTIFICATION_SETTINGS_MAX_STALE_TIME: 1 * MINUTES
134
139
  };
135
140
 
136
141
  // src/lib/AsyncResult.ts
@@ -242,6 +247,8 @@ var use = (
242
247
 
243
248
 
244
249
 
250
+
251
+
245
252
  // src/lib/autobind.ts
246
253
  function autobind(self) {
247
254
  const seen = /* @__PURE__ */ new Set();
@@ -251,7 +258,7 @@ function autobind(self) {
251
258
  for (const key of Reflect.ownKeys(obj)) {
252
259
  if (seen.has(key)) continue;
253
260
  const descriptor = Reflect.getOwnPropertyDescriptor(obj, key);
254
- if (typeof _optionalChain([descriptor, 'optionalAccess', _ => _.value]) === "function") {
261
+ if (typeof _optionalChain([descriptor, 'optionalAccess', _2 => _2.value]) === "function") {
255
262
  seen.add(key);
256
263
  self[key] = self[key].bind(self);
257
264
  }
@@ -351,7 +358,7 @@ var ThreadDB = class _ThreadDB {
351
358
  /** Returns an existing thread by ID. Will never return a deleted thread. */
352
359
  get(threadId) {
353
360
  const thread = this.getEvenIfDeleted(threadId);
354
- return _optionalChain([thread, 'optionalAccess', _2 => _2.deletedAt]) ? void 0 : thread;
361
+ return _optionalChain([thread, 'optionalAccess', _3 => _3.deletedAt]) ? void 0 : thread;
355
362
  }
356
363
  /** Returns the (possibly deleted) thread by ID. */
357
364
  getEvenIfDeleted(threadId) {
@@ -477,7 +484,7 @@ var PaginatedResource = class {
477
484
  }
478
485
  async #fetchMore() {
479
486
  const state = this.#signal.get();
480
- if (!_optionalChain([state, 'access', _3 => _3.data, 'optionalAccess', _4 => _4.cursor]) || state.data.isFetchingMore) {
487
+ if (!_optionalChain([state, 'access', _4 => _4.data, 'optionalAccess', _5 => _5.cursor]) || state.data.isFetchingMore) {
481
488
  return;
482
489
  }
483
490
  this.#patch({ isFetchingMore: true });
@@ -498,7 +505,7 @@ var PaginatedResource = class {
498
505
  }
499
506
  fetchMore() {
500
507
  const state = this.#signal.get();
501
- if (!_optionalChain([state, 'access', _5 => _5.data, 'optionalAccess', _6 => _6.cursor])) return noop2;
508
+ if (!_optionalChain([state, 'access', _6 => _6.data, 'optionalAccess', _7 => _7.cursor])) return noop2;
502
509
  if (!this.#pendingFetchMore) {
503
510
  this.#pendingFetchMore = this.#fetchMore().finally(() => {
504
511
  this.#pendingFetchMore = null;
@@ -723,6 +730,26 @@ function createStore_forPermissionHints() {
723
730
  update
724
731
  };
725
732
  }
733
+ function createStore_forUserNotificationSettings(updates) {
734
+ const signal = new (0, _core.Signal)({});
735
+ function update(settings) {
736
+ signal.set((prevSettings) => {
737
+ return {
738
+ ...prevSettings,
739
+ ...settings
740
+ };
741
+ });
742
+ }
743
+ return {
744
+ signal: _core.DerivedSignal.from(
745
+ signal,
746
+ updates,
747
+ (base, updates2) => applyOptimisticUpdates_forUserNotificationSettings(base, updates2)
748
+ ),
749
+ // Mutations
750
+ update
751
+ };
752
+ }
726
753
  function createStore_forOptimistic(client) {
727
754
  const signal = new (0, _core.Signal)([]);
728
755
  const syncSource = client[_core.kInternal].createSyncSource();
@@ -756,15 +783,17 @@ var UmbrellaStore = class {
756
783
  //
757
784
  // Mutate inputs... ...observe clean/consistent output!
758
785
  //
759
- // .-> Base ThreadDB ---------+ +----> Clean threads by ID (Part 1)
786
+ // .-> Base ThreadDB ---------+ +----> Clean threads by ID (Part 1)
760
787
  // / | |
761
- // mutate ----> Base Notifications --+ | | +--> Clean notifications (Part 1)
788
+ // mutate ----> Base Notifications --+ | | +--> Clean notifications (Part 1)
762
789
  // \ | | | | & notifications by ID
763
790
  // | \ | | Apply | |
764
- // | `-> OptimisticUpdates --+--+--> Optimistic --+-+--> Notification Settings (Part 2)
765
- // \ | Updates |
766
- // `------- etc etc ---------+ +--> History Versions (Part 3)
767
- // ^
791
+ // | `-> OptimisticUpdates --+--+--> Optimistic --+-+--> Room Notification Settings (Part 2)
792
+ // \ | Updates | |
793
+ // `------- etc etc ---------+ | +--> History Versions (Part 3)
794
+ // ^ |
795
+ // | +-----> User Notification Settings (Part 4)
796
+ // |
768
797
  // |
769
798
  // | ^ ^
770
799
  // Signal | |
@@ -786,6 +815,7 @@ var UmbrellaStore = class {
786
815
 
787
816
 
788
817
 
818
+
789
819
  //
790
820
  // Output signals.
791
821
  // (Readonly, clean, consistent. With optimistic updates applied.)
@@ -805,6 +835,8 @@ var UmbrellaStore = class {
805
835
  #userThreadsLastRequestedAt = null;
806
836
  // Room versions
807
837
  #roomVersionsLastRequestedAtByRoom = /* @__PURE__ */ new Map();
838
+ // User Notification Settings
839
+ #userNotificationSettings;
808
840
  constructor(client) {
809
841
  this.#client = client[_core.kInternal].as();
810
842
  this.optimisticUpdates = createStore_forOptimistic(this.#client);
@@ -820,6 +852,16 @@ var UmbrellaStore = class {
820
852
  return nextCursor;
821
853
  }
822
854
  );
855
+ const userNotificationSettingsFetcher = async () => {
856
+ const result = await this.#client.getNotificationSettings();
857
+ this.userNotificationSettings.update(result);
858
+ };
859
+ this.userNotificationSettings = createStore_forUserNotificationSettings(
860
+ this.optimisticUpdates.signal
861
+ );
862
+ this.#userNotificationSettings = new SinglePageResource(
863
+ userNotificationSettingsFetcher
864
+ );
823
865
  this.threads = new ThreadDB();
824
866
  this.notifications = createStore_forNotifications();
825
867
  this.roomNotificationSettings = createStore_forRoomNotificationSettings(
@@ -997,6 +1039,19 @@ var UmbrellaStore = class {
997
1039
  return { signal, waitUntilLoaded: resource.waitUntilLoaded };
998
1040
  }
999
1041
  );
1042
+ const userNotificationSettings = {
1043
+ signal: _core.DerivedSignal.from(() => {
1044
+ const result = this.#userNotificationSettings.get();
1045
+ if (result.isLoading || result.error) {
1046
+ return result;
1047
+ }
1048
+ return ASYNC_OK(
1049
+ "settings",
1050
+ _core.nn.call(void 0, this.userNotificationSettings.signal.get())
1051
+ );
1052
+ }, _core.shallow),
1053
+ waitUntilLoaded: this.#userNotificationSettings.waitUntilLoaded
1054
+ };
1000
1055
  this.outputs = {
1001
1056
  threadifications,
1002
1057
  threads,
@@ -1005,7 +1060,8 @@ var UmbrellaStore = class {
1005
1060
  notifications,
1006
1061
  loadingNotifications,
1007
1062
  settingsByRoomId,
1008
- versionsByRoomId
1063
+ versionsByRoomId,
1064
+ userNotificationSettings
1009
1065
  };
1010
1066
  autobind(this);
1011
1067
  }
@@ -1250,6 +1306,25 @@ var UmbrellaStore = class {
1250
1306
  const result = await room.getNotificationSettings({ signal });
1251
1307
  this.roomNotificationSettings.update(roomId, result);
1252
1308
  }
1309
+ /**
1310
+ * Refresh User Notification Settings from poller
1311
+ */
1312
+ async refreshUserNotificationSettings(signal) {
1313
+ const result = await this.#client.getNotificationSettings({
1314
+ signal
1315
+ });
1316
+ this.userNotificationSettings.update(result);
1317
+ }
1318
+ /**
1319
+ * Updates user notification settings with a new value, replacing the
1320
+ * corresponding optimistic update.
1321
+ */
1322
+ updateUserNotificationSettings_confirmOptimisticUpdate(settings, optimisticUpdateId) {
1323
+ _core.batch.call(void 0, () => {
1324
+ this.optimisticUpdates.remove(optimisticUpdateId);
1325
+ this.userNotificationSettings.update(settings);
1326
+ });
1327
+ }
1253
1328
  };
1254
1329
  function applyOptimisticUpdates_forThreadifications(baseThreadsDB, notificationsLUT, optimisticUpdates) {
1255
1330
  const threadsDB = baseThreadsDB.clone();
@@ -1424,6 +1499,33 @@ function applyOptimisticUpdates_forSettings(settingsLUT, optimisticUpdates) {
1424
1499
  }
1425
1500
  return settingsByRoomId;
1426
1501
  }
1502
+ function applyOptimisticUpdates_forUserNotificationSettings(baseSettings, optimisticUpdates) {
1503
+ const outcomingSettings = { ...baseSettings };
1504
+ for (const optimisticUpdate of optimisticUpdates) {
1505
+ switch (optimisticUpdate.type) {
1506
+ case "update-user-notification-settings": {
1507
+ const incomingSettings = optimisticUpdate.settings;
1508
+ for (const channelKey of _core.keys.call(void 0, incomingSettings)) {
1509
+ const key = channelKey;
1510
+ const channelUpdates = incomingSettings[key];
1511
+ if (channelUpdates) {
1512
+ const realChannelUpdates = Object.fromEntries(
1513
+ _core.entries.call(void 0, channelUpdates).filter(
1514
+ ([_, value]) => value !== void 0
1515
+ )
1516
+ );
1517
+ outcomingSettings[key] = {
1518
+ ...outcomingSettings[key],
1519
+ ...realChannelUpdates
1520
+ };
1521
+ }
1522
+ }
1523
+ break;
1524
+ }
1525
+ }
1526
+ }
1527
+ return outcomingSettings;
1528
+ }
1427
1529
  function compareInboxNotifications(inboxNotificationA, inboxNotificationB) {
1428
1530
  if (inboxNotificationA.notifiedAt > inboxNotificationB.notifiedAt) {
1429
1531
  return 1;
@@ -1473,7 +1575,7 @@ function applyUpsertComment(thread, comment) {
1473
1575
  updatedAt: new Date(
1474
1576
  Math.max(
1475
1577
  thread.updatedAt.getTime(),
1476
- _optionalChain([comment, 'access', _7 => _7.editedAt, 'optionalAccess', _8 => _8.getTime, 'call', _9 => _9()]) || comment.createdAt.getTime()
1578
+ _optionalChain([comment, 'access', _8 => _8.editedAt, 'optionalAccess', _9 => _9.getTime, 'call', _10 => _10()]) || comment.createdAt.getTime()
1477
1579
  )
1478
1580
  ),
1479
1581
  comments: updatedComments
@@ -1632,7 +1734,7 @@ function selectorFor_useUnreadInboxNotificationsCount(result) {
1632
1734
  );
1633
1735
  }
1634
1736
  function selectorFor_useUser(state, userId) {
1635
- if (state === void 0 || _optionalChain([state, 'optionalAccess', _10 => _10.isLoading])) {
1737
+ if (state === void 0 || _optionalChain([state, 'optionalAccess', _11 => _11.isLoading])) {
1636
1738
  return _nullishCoalesce(state, () => ( { isLoading: true }));
1637
1739
  }
1638
1740
  if (state.error) {
@@ -1650,7 +1752,7 @@ function selectorFor_useUser(state, userId) {
1650
1752
  };
1651
1753
  }
1652
1754
  function selectorFor_useRoomInfo(state, roomId) {
1653
- if (state === void 0 || _optionalChain([state, 'optionalAccess', _11 => _11.isLoading])) {
1755
+ if (state === void 0 || _optionalChain([state, 'optionalAccess', _12 => _12.isLoading])) {
1654
1756
  return _nullishCoalesce(state, () => ( { isLoading: true }));
1655
1757
  }
1656
1758
  if (state.error) {
@@ -1717,10 +1819,25 @@ function makeLiveblocksExtrasForClient(client) {
1717
1819
  config.USER_THREADS_POLL_INTERVAL,
1718
1820
  { maxStaleTimeMs: config.USER_THREADS_MAX_STALE_TIME }
1719
1821
  );
1822
+ const userNotificationSettingsPoller = _core.makePoller.call(void 0,
1823
+ async (signal) => {
1824
+ try {
1825
+ return await store.refreshUserNotificationSettings(signal);
1826
+ } catch (err) {
1827
+ console.warn(
1828
+ `Polling new user notification settings failed: ${String(err)}`
1829
+ );
1830
+ throw err;
1831
+ }
1832
+ },
1833
+ config.USER_NOTIFICATION_SETTINGS_INTERVAL,
1834
+ { maxStaleTimeMs: config.USER_NOTIFICATION_SETTINGS_MAX_STALE_TIME }
1835
+ );
1720
1836
  return {
1721
1837
  store,
1722
1838
  notificationsPoller,
1723
- userThreadsPoller
1839
+ userThreadsPoller,
1840
+ userNotificationSettingsPoller
1724
1841
  };
1725
1842
  }
1726
1843
  function makeLiveblocksContextBundle(client) {
@@ -1729,6 +1846,7 @@ function makeLiveblocksContextBundle(client) {
1729
1846
  const useMarkAllInboxNotificationsAsRead2 = () => useMarkAllInboxNotificationsAsRead_withClient(client);
1730
1847
  const useDeleteInboxNotification2 = () => useDeleteInboxNotification_withClient(client);
1731
1848
  const useDeleteAllInboxNotifications2 = () => useDeleteAllInboxNotifications_withClient(client);
1849
+ const useUpdateNotificationSettings2 = () => useUpdateNotificationSettings_withClient(client);
1732
1850
  function LiveblocksProvider2(props) {
1733
1851
  useEnsureNoLiveblocksProvider();
1734
1852
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ClientContext.Provider, { value: client, children: props.children });
@@ -1742,6 +1860,8 @@ function makeLiveblocksContextBundle(client) {
1742
1860
  useMarkAllInboxNotificationsAsRead: useMarkAllInboxNotificationsAsRead2,
1743
1861
  useDeleteInboxNotification: useDeleteInboxNotification2,
1744
1862
  useDeleteAllInboxNotifications: useDeleteAllInboxNotifications2,
1863
+ useNotificationSettings: () => useNotificationSettings_withClient(client),
1864
+ useUpdateNotificationSettings: useUpdateNotificationSettings2,
1745
1865
  useInboxNotificationThread: useInboxNotificationThread2,
1746
1866
  useUserThreads_experimental,
1747
1867
  ...shared.classic,
@@ -1754,6 +1874,8 @@ function makeLiveblocksContextBundle(client) {
1754
1874
  useDeleteInboxNotification: useDeleteInboxNotification2,
1755
1875
  useDeleteAllInboxNotifications: useDeleteAllInboxNotifications2,
1756
1876
  useInboxNotificationThread: useInboxNotificationThread2,
1877
+ useNotificationSettings: () => useNotificationSettingsSuspense_withClient(client),
1878
+ useUpdateNotificationSettings: useUpdateNotificationSettings2,
1757
1879
  useUserThreads_experimental: useUserThreadsSuspense_experimental,
1758
1880
  ...shared.suspense
1759
1881
  }
@@ -1938,6 +2060,72 @@ function useInboxNotificationThread_withClient(client, inboxNotificationId) {
1938
2060
  )
1939
2061
  );
1940
2062
  }
2063
+ function useUpdateNotificationSettings_withClient(client) {
2064
+ return _react.useCallback.call(void 0,
2065
+ (settings) => {
2066
+ const { store } = getLiveblocksExtrasForClient(client);
2067
+ const optimisticUpdateId = store.optimisticUpdates.add({
2068
+ type: "update-user-notification-settings",
2069
+ settings
2070
+ });
2071
+ client.updateNotificationSettings(settings).then(
2072
+ (settings2) => {
2073
+ store.updateUserNotificationSettings_confirmOptimisticUpdate(
2074
+ settings2,
2075
+ optimisticUpdateId
2076
+ );
2077
+ },
2078
+ (err) => {
2079
+ store.optimisticUpdates.remove(optimisticUpdateId);
2080
+ if (err instanceof _core.HttpError) {
2081
+ if (err.status === 422) {
2082
+ const msg = [_optionalChain([err, 'access', _13 => _13.details, 'optionalAccess', _14 => _14.error]), _optionalChain([err, 'access', _15 => _15.details, 'optionalAccess', _16 => _16.reason])].filter(Boolean).join("\n");
2083
+ console.error(msg);
2084
+ }
2085
+ client[_core.kInternal].emitError(
2086
+ {
2087
+ type: "UPDATE_USER_NOTIFICATION_SETTINGS_ERROR"
2088
+ },
2089
+ err
2090
+ );
2091
+ } else {
2092
+ throw err;
2093
+ }
2094
+ }
2095
+ );
2096
+ },
2097
+ [client]
2098
+ );
2099
+ }
2100
+ function useNotificationSettings_withClient(client) {
2101
+ const updateNotificationSettings = useUpdateNotificationSettings_withClient(client);
2102
+ const { store, userNotificationSettingsPoller: poller } = getLiveblocksExtrasForClient(client);
2103
+ _react.useEffect.call(void 0, () => {
2104
+ void store.outputs.userNotificationSettings.waitUntilLoaded();
2105
+ });
2106
+ _react.useEffect.call(void 0, () => {
2107
+ poller.inc();
2108
+ poller.pollNowIfStale();
2109
+ return () => {
2110
+ poller.dec();
2111
+ };
2112
+ }, [poller]);
2113
+ const result = useSignal(store.outputs.userNotificationSettings.signal);
2114
+ return _react.useMemo.call(void 0, () => {
2115
+ return [result, updateNotificationSettings];
2116
+ }, [result, updateNotificationSettings]);
2117
+ }
2118
+ function useNotificationSettingsSuspense_withClient(client) {
2119
+ ensureNotServerSide();
2120
+ const store = getLiveblocksExtrasForClient(client).store;
2121
+ use(store.outputs.userNotificationSettings.waitUntilLoaded());
2122
+ const [result, updateNotificationSettings] = useNotificationSettings_withClient(client);
2123
+ _core.assert.call(void 0, !result.error, "Did not expect error");
2124
+ _core.assert.call(void 0, !result.isLoading, "Did not expect loading");
2125
+ return _react.useMemo.call(void 0, () => {
2126
+ return [result, updateNotificationSettings];
2127
+ }, [result, updateNotificationSettings]);
2128
+ }
1941
2129
  function useUser_withClient(client, userId) {
1942
2130
  const usersStore = client[_core.kInternal].usersStore;
1943
2131
  const getUserState = _react.useCallback.call(void 0,
@@ -2087,7 +2275,7 @@ function createSharedContext(client) {
2087
2275
  }
2088
2276
  function useEnsureNoLiveblocksProvider(options) {
2089
2277
  const existing = useClientOrNull();
2090
- if (!_optionalChain([options, 'optionalAccess', _12 => _12.allowNesting]) && existing !== null) {
2278
+ if (!_optionalChain([options, 'optionalAccess', _17 => _17.allowNesting]) && existing !== null) {
2091
2279
  throw new Error(
2092
2280
  "You cannot nest multiple LiveblocksProvider instances in the same React tree."
2093
2281
  );
@@ -2203,6 +2391,15 @@ function useUnreadInboxNotificationsCount() {
2203
2391
  function useUnreadInboxNotificationsCountSuspense() {
2204
2392
  return useUnreadInboxNotificationsCountSuspense_withClient(useClient());
2205
2393
  }
2394
+ function useNotificationSettings() {
2395
+ return useNotificationSettings_withClient(useClient());
2396
+ }
2397
+ function useNotificationSettingsSuspense() {
2398
+ return useNotificationSettingsSuspense_withClient(useClient());
2399
+ }
2400
+ function useUpdateNotificationSettings() {
2401
+ return useUpdateNotificationSettings_withClient(useClient());
2402
+ }
2206
2403
  function useUser(userId) {
2207
2404
  const client = useClient();
2208
2405
  return useUser_withClient(client, userId);
@@ -2223,7 +2420,7 @@ var _useUserSuspense = useUserSuspense;
2223
2420
  var _useUserThreads_experimental = useUserThreads_experimental;
2224
2421
  var _useUserThreadsSuspense_experimental = useUserThreadsSuspense_experimental;
2225
2422
  function useSyncStatus_withClient(client, options) {
2226
- const smooth = useInitial(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _13 => _13.smooth]), () => ( false)));
2423
+ const smooth = useInitial(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _18 => _18.smooth]), () => ( false)));
2227
2424
  if (smooth) {
2228
2425
  return useSyncStatusSmooth_withClient(client);
2229
2426
  } else {
@@ -2401,8 +2598,8 @@ function makeRoomExtrasForClient(client) {
2401
2598
  if (innerError.status === 403) {
2402
2599
  const detailedMessage = [
2403
2600
  innerError.message,
2404
- _optionalChain([innerError, 'access', _14 => _14.details, 'optionalAccess', _15 => _15.suggestion]),
2405
- _optionalChain([innerError, 'access', _16 => _16.details, 'optionalAccess', _17 => _17.docs])
2601
+ _optionalChain([innerError, 'access', _19 => _19.details, 'optionalAccess', _20 => _20.suggestion]),
2602
+ _optionalChain([innerError, 'access', _21 => _21.details, 'optionalAccess', _22 => _22.docs])
2406
2603
  ].filter(Boolean).join("\n");
2407
2604
  _core.console.error(detailedMessage);
2408
2605
  }
@@ -2756,7 +2953,7 @@ function useMentionSuggestionsCache() {
2756
2953
  return client[_core.kInternal].mentionSuggestionsCache;
2757
2954
  }
2758
2955
  function useStorageStatus(options) {
2759
- const smooth = useInitial(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _18 => _18.smooth]), () => ( false)));
2956
+ const smooth = useInitial(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _23 => _23.smooth]), () => ( false)));
2760
2957
  if (smooth) {
2761
2958
  return useStorageStatusSmooth();
2762
2959
  } else {
@@ -3070,7 +3267,7 @@ function useCreateRoomThread(roomId) {
3070
3267
  thread: newThread,
3071
3268
  roomId
3072
3269
  });
3073
- const attachmentIds = _optionalChain([attachments, 'optionalAccess', _19 => _19.map, 'call', _20 => _20((attachment) => attachment.id)]);
3270
+ const attachmentIds = _optionalChain([attachments, 'optionalAccess', _24 => _24.map, 'call', _25 => _25((attachment) => attachment.id)]);
3074
3271
  client[_core.kInternal].httpClient.createThread({
3075
3272
  roomId,
3076
3273
  threadId,
@@ -3110,7 +3307,7 @@ function useDeleteRoomThread(roomId) {
3110
3307
  const { store, onMutationFailure } = getRoomExtrasForClient(client);
3111
3308
  const userId = getCurrentUserId(client);
3112
3309
  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) {
3310
+ if (_optionalChain([existing, 'optionalAccess', _26 => _26.comments, 'optionalAccess', _27 => _27[0], 'optionalAccess', _28 => _28.userId]) !== userId) {
3114
3311
  throw new Error("Only the thread creator can delete the thread");
3115
3312
  }
3116
3313
  const optimisticId = store.optimisticUpdates.add({
@@ -3198,7 +3395,7 @@ function useCreateRoomComment(roomId) {
3198
3395
  type: "create-comment",
3199
3396
  comment
3200
3397
  });
3201
- const attachmentIds = _optionalChain([attachments, 'optionalAccess', _24 => _24.map, 'call', _25 => _25((attachment) => attachment.id)]);
3398
+ const attachmentIds = _optionalChain([attachments, 'optionalAccess', _29 => _29.map, 'call', _30 => _30((attachment) => attachment.id)]);
3202
3399
  client[_core.kInternal].httpClient.createComment({ roomId, threadId, commentId, body, attachmentIds }).then(
3203
3400
  (newComment) => {
3204
3401
  store.createComment(newComment, optimisticId);
@@ -3254,7 +3451,7 @@ function useEditRoomComment(roomId) {
3254
3451
  attachments: _nullishCoalesce(attachments, () => ( []))
3255
3452
  }
3256
3453
  });
3257
- const attachmentIds = _optionalChain([attachments, 'optionalAccess', _26 => _26.map, 'call', _27 => _27((attachment) => attachment.id)]);
3454
+ const attachmentIds = _optionalChain([attachments, 'optionalAccess', _31 => _31.map, 'call', _32 => _32((attachment) => attachment.id)]);
3258
3455
  client[_core.kInternal].httpClient.editComment({ roomId, threadId, commentId, body, attachmentIds }).then(
3259
3456
  (editedComment) => {
3260
3457
  store.editComment(threadId, optimisticId, editedComment);
@@ -3718,7 +3915,7 @@ function useThreadsSuspense(options = {}) {
3718
3915
  return result;
3719
3916
  }
3720
3917
  function selectorFor_useAttachmentUrl(state) {
3721
- if (state === void 0 || _optionalChain([state, 'optionalAccess', _28 => _28.isLoading])) {
3918
+ if (state === void 0 || _optionalChain([state, 'optionalAccess', _33 => _33.isLoading])) {
3722
3919
  return _nullishCoalesce(state, () => ( { isLoading: true }));
3723
3920
  }
3724
3921
  if (state.error) {
@@ -3933,5 +4130,8 @@ var _useUpdateMyPresence = useUpdateMyPresence;
3933
4130
 
3934
4131
 
3935
4132
 
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
4133
+
4134
+
4135
+
4136
+ 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;
4137
+ //# sourceMappingURL=chunk-LJCQ446S.js.map