@liveblocks/react 2.17.0-rc1 → 2.17.0-usrnotsettings2

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 _chunkCTSQGLA4js = require('./chunk-CTSQGLA4.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 = _chunkCTSQGLA4js.useResolveMentionSuggestions.call(void 0, );
41
+ const mentionSuggestionsCache = _chunkCTSQGLA4js.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 = _chunkCTSQGLA4js.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 = _chunkCTSQGLA4js.getUmbrellaStoreForClient; exports.useAddRoomCommentReaction = _chunkCTSQGLA4js.useAddRoomCommentReaction; exports.useClientOrNull = _chunkCTSQGLA4js.useClientOrNull; exports.useCreateRoomComment = _chunkCTSQGLA4js.useCreateRoomComment; exports.useCreateRoomThread = _chunkCTSQGLA4js.useCreateRoomThread; exports.useCreateTextMention = _chunkCTSQGLA4js.useCreateTextMention; exports.useDeleteRoomComment = _chunkCTSQGLA4js.useDeleteRoomComment; exports.useDeleteRoomThread = _chunkCTSQGLA4js.useDeleteRoomThread; exports.useDeleteTextMention = _chunkCTSQGLA4js.useDeleteTextMention; exports.useEditRoomComment = _chunkCTSQGLA4js.useEditRoomComment; exports.useEditRoomThreadMetadata = _chunkCTSQGLA4js.useEditRoomThreadMetadata; exports.useLayoutEffect = useLayoutEffect; exports.useMarkRoomThreadAsRead = _chunkCTSQGLA4js.useMarkRoomThreadAsRead; exports.useMarkRoomThreadAsResolved = _chunkCTSQGLA4js.useMarkRoomThreadAsResolved; exports.useMarkRoomThreadAsUnresolved = _chunkCTSQGLA4js.useMarkRoomThreadAsUnresolved; exports.useMentionSuggestions = useMentionSuggestions; exports.useMentionSuggestionsCache = _chunkCTSQGLA4js.useMentionSuggestionsCache; exports.useRemoveRoomCommentReaction = _chunkCTSQGLA4js.useRemoveRoomCommentReaction; exports.useReportTextEditor = _chunkCTSQGLA4js.useReportTextEditor; exports.useResolveMentionSuggestions = _chunkCTSQGLA4js.useResolveMentionSuggestions; exports.useRoomAttachmentUrl = _chunkCTSQGLA4js.useRoomAttachmentUrl; exports.useRoomOrNull = _chunkCTSQGLA4js.useRoomOrNull; exports.useRoomPermissions = _chunkCTSQGLA4js.useRoomPermissions; exports.useSignal = _chunkCTSQGLA4js.useSignal; exports.useSyncExternalStoreWithSelector = _chunkCTSQGLA4js.useSyncExternalStoreWithSelector; exports.useSyncSource = useSyncSource; exports.useYjsProvider = _chunkCTSQGLA4js.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-X2FQ2FNK.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
@@ -242,6 +244,8 @@ var use = (
242
244
 
243
245
 
244
246
 
247
+
248
+
245
249
  // src/lib/autobind.ts
246
250
  function autobind(self) {
247
251
  const seen = /* @__PURE__ */ new Set();
@@ -251,7 +255,7 @@ function autobind(self) {
251
255
  for (const key of Reflect.ownKeys(obj)) {
252
256
  if (seen.has(key)) continue;
253
257
  const descriptor = Reflect.getOwnPropertyDescriptor(obj, key);
254
- if (typeof _optionalChain([descriptor, 'optionalAccess', _ => _.value]) === "function") {
258
+ if (typeof _optionalChain([descriptor, 'optionalAccess', _2 => _2.value]) === "function") {
255
259
  seen.add(key);
256
260
  self[key] = self[key].bind(self);
257
261
  }
@@ -351,7 +355,7 @@ var ThreadDB = class _ThreadDB {
351
355
  /** Returns an existing thread by ID. Will never return a deleted thread. */
352
356
  get(threadId) {
353
357
  const thread = this.getEvenIfDeleted(threadId);
354
- return _optionalChain([thread, 'optionalAccess', _2 => _2.deletedAt]) ? void 0 : thread;
358
+ return _optionalChain([thread, 'optionalAccess', _3 => _3.deletedAt]) ? void 0 : thread;
355
359
  }
356
360
  /** Returns the (possibly deleted) thread by ID. */
357
361
  getEvenIfDeleted(threadId) {
@@ -477,7 +481,7 @@ var PaginatedResource = class {
477
481
  }
478
482
  async #fetchMore() {
479
483
  const state = this.#signal.get();
480
- if (!_optionalChain([state, 'access', _3 => _3.data, 'optionalAccess', _4 => _4.cursor]) || state.data.isFetchingMore) {
484
+ if (!_optionalChain([state, 'access', _4 => _4.data, 'optionalAccess', _5 => _5.cursor]) || state.data.isFetchingMore) {
481
485
  return;
482
486
  }
483
487
  this.#patch({ isFetchingMore: true });
@@ -498,7 +502,7 @@ var PaginatedResource = class {
498
502
  }
499
503
  fetchMore() {
500
504
  const state = this.#signal.get();
501
- if (!_optionalChain([state, 'access', _5 => _5.data, 'optionalAccess', _6 => _6.cursor])) return noop2;
505
+ if (!_optionalChain([state, 'access', _6 => _6.data, 'optionalAccess', _7 => _7.cursor])) return noop2;
502
506
  if (!this.#pendingFetchMore) {
503
507
  this.#pendingFetchMore = this.#fetchMore().finally(() => {
504
508
  this.#pendingFetchMore = null;
@@ -723,6 +727,26 @@ function createStore_forPermissionHints() {
723
727
  update
724
728
  };
725
729
  }
730
+ function createStore_forUserNotificationSettings(updates) {
731
+ const signal = new (0, _core.Signal)({});
732
+ function update(settings) {
733
+ signal.set((prevSettings) => {
734
+ return {
735
+ ...prevSettings,
736
+ ...settings
737
+ };
738
+ });
739
+ }
740
+ return {
741
+ signal: _core.DerivedSignal.from(
742
+ signal,
743
+ updates,
744
+ (base, updates2) => applyOptimisticUpdates_forUserNotificationSettings(base, updates2)
745
+ ),
746
+ // Mutations
747
+ update
748
+ };
749
+ }
726
750
  function createStore_forOptimistic(client) {
727
751
  const signal = new (0, _core.Signal)([]);
728
752
  const syncSource = client[_core.kInternal].createSyncSource();
@@ -756,15 +780,17 @@ var UmbrellaStore = class {
756
780
  //
757
781
  // Mutate inputs... ...observe clean/consistent output!
758
782
  //
759
- // .-> Base ThreadDB ---------+ +----> Clean threads by ID (Part 1)
783
+ // .-> Base ThreadDB ---------+ +----> Clean threads by ID (Part 1)
760
784
  // / | |
761
- // mutate ----> Base Notifications --+ | | +--> Clean notifications (Part 1)
785
+ // mutate ----> Base Notifications --+ | | +--> Clean notifications (Part 1)
762
786
  // \ | | | | & notifications by ID
763
787
  // | \ | | Apply | |
764
- // | `-> OptimisticUpdates --+--+--> Optimistic --+-+--> Notification Settings (Part 2)
765
- // \ | Updates |
766
- // `------- etc etc ---------+ +--> History Versions (Part 3)
767
- // ^
788
+ // | `-> OptimisticUpdates --+--+--> Optimistic --+-+--> Room Notification Settings (Part 2)
789
+ // \ | Updates | |
790
+ // `------- etc etc ---------+ | +--> History Versions (Part 3)
791
+ // ^ |
792
+ // | +-----> User Notification Settings (Part 4)
793
+ // |
768
794
  // |
769
795
  // | ^ ^
770
796
  // Signal | |
@@ -786,6 +812,7 @@ var UmbrellaStore = class {
786
812
 
787
813
 
788
814
 
815
+
789
816
  //
790
817
  // Output signals.
791
818
  // (Readonly, clean, consistent. With optimistic updates applied.)
@@ -805,6 +832,8 @@ var UmbrellaStore = class {
805
832
  #userThreadsLastRequestedAt = null;
806
833
  // Room versions
807
834
  #roomVersionsLastRequestedAtByRoom = /* @__PURE__ */ new Map();
835
+ // User Notification Settings
836
+ #userNotificationSettings;
808
837
  constructor(client) {
809
838
  this.#client = client[_core.kInternal].as();
810
839
  this.optimisticUpdates = createStore_forOptimistic(this.#client);
@@ -820,6 +849,16 @@ var UmbrellaStore = class {
820
849
  return nextCursor;
821
850
  }
822
851
  );
852
+ const userNotificationSettingsFetcher = async () => {
853
+ const result = await this.#client.getNotificationSettings();
854
+ this.userNotificationSettings.update(result);
855
+ };
856
+ this.userNotificationSettings = createStore_forUserNotificationSettings(
857
+ this.optimisticUpdates.signal
858
+ );
859
+ this.#userNotificationSettings = new SinglePageResource(
860
+ userNotificationSettingsFetcher
861
+ );
823
862
  this.threads = new ThreadDB();
824
863
  this.notifications = createStore_forNotifications();
825
864
  this.roomNotificationSettings = createStore_forRoomNotificationSettings(
@@ -997,6 +1036,19 @@ var UmbrellaStore = class {
997
1036
  return { signal, waitUntilLoaded: resource.waitUntilLoaded };
998
1037
  }
999
1038
  );
1039
+ const userNotificationSettings = {
1040
+ signal: _core.DerivedSignal.from(() => {
1041
+ const result = this.#userNotificationSettings.get();
1042
+ if (result.isLoading || result.error) {
1043
+ return result;
1044
+ }
1045
+ return ASYNC_OK(
1046
+ "settings",
1047
+ _core.nn.call(void 0, this.userNotificationSettings.signal.get())
1048
+ );
1049
+ }, _core.shallow),
1050
+ waitUntilLoaded: this.#userNotificationSettings.waitUntilLoaded
1051
+ };
1000
1052
  this.outputs = {
1001
1053
  threadifications,
1002
1054
  threads,
@@ -1005,7 +1057,8 @@ var UmbrellaStore = class {
1005
1057
  notifications,
1006
1058
  loadingNotifications,
1007
1059
  settingsByRoomId,
1008
- versionsByRoomId
1060
+ versionsByRoomId,
1061
+ userNotificationSettings
1009
1062
  };
1010
1063
  autobind(this);
1011
1064
  }
@@ -1250,6 +1303,25 @@ var UmbrellaStore = class {
1250
1303
  const result = await room.getNotificationSettings({ signal });
1251
1304
  this.roomNotificationSettings.update(roomId, result);
1252
1305
  }
1306
+ /**
1307
+ * Refresh User Notification Settings from poller
1308
+ */
1309
+ async refreshUserNotificationSettings(signal) {
1310
+ const result = await this.#client.getNotificationSettings({
1311
+ signal
1312
+ });
1313
+ this.userNotificationSettings.update(result);
1314
+ }
1315
+ /**
1316
+ * Updates user notification settings with a new value, replacing the
1317
+ * corresponding optimistic update.
1318
+ */
1319
+ updateUserNotificationSettings_confirmOptimisticUpdate(settings, optimisticUpdateId) {
1320
+ _core.batch.call(void 0, () => {
1321
+ this.optimisticUpdates.remove(optimisticUpdateId);
1322
+ this.userNotificationSettings.update(settings);
1323
+ });
1324
+ }
1253
1325
  };
1254
1326
  function applyOptimisticUpdates_forThreadifications(baseThreadsDB, notificationsLUT, optimisticUpdates) {
1255
1327
  const threadsDB = baseThreadsDB.clone();
@@ -1424,6 +1496,33 @@ function applyOptimisticUpdates_forSettings(settingsLUT, optimisticUpdates) {
1424
1496
  }
1425
1497
  return settingsByRoomId;
1426
1498
  }
1499
+ function applyOptimisticUpdates_forUserNotificationSettings(baseSettings, optimisticUpdates) {
1500
+ const outcomingSettings = { ...baseSettings };
1501
+ for (const optimisticUpdate of optimisticUpdates) {
1502
+ switch (optimisticUpdate.type) {
1503
+ case "update-user-notification-settings": {
1504
+ const incomingSettings = optimisticUpdate.settings;
1505
+ for (const channelKey of _core.keys.call(void 0, incomingSettings)) {
1506
+ const key = channelKey;
1507
+ const channelUpdates = incomingSettings[key];
1508
+ if (channelUpdates) {
1509
+ const realChannelUpdates = Object.fromEntries(
1510
+ _core.entries.call(void 0, channelUpdates).filter(
1511
+ ([_, value]) => value !== void 0
1512
+ )
1513
+ );
1514
+ outcomingSettings[key] = {
1515
+ ...outcomingSettings[key],
1516
+ ...realChannelUpdates
1517
+ };
1518
+ }
1519
+ }
1520
+ break;
1521
+ }
1522
+ }
1523
+ }
1524
+ return outcomingSettings;
1525
+ }
1427
1526
  function compareInboxNotifications(inboxNotificationA, inboxNotificationB) {
1428
1527
  if (inboxNotificationA.notifiedAt > inboxNotificationB.notifiedAt) {
1429
1528
  return 1;
@@ -1473,7 +1572,7 @@ function applyUpsertComment(thread, comment) {
1473
1572
  updatedAt: new Date(
1474
1573
  Math.max(
1475
1574
  thread.updatedAt.getTime(),
1476
- _optionalChain([comment, 'access', _7 => _7.editedAt, 'optionalAccess', _8 => _8.getTime, 'call', _9 => _9()]) || comment.createdAt.getTime()
1575
+ _optionalChain([comment, 'access', _8 => _8.editedAt, 'optionalAccess', _9 => _9.getTime, 'call', _10 => _10()]) || comment.createdAt.getTime()
1477
1576
  )
1478
1577
  ),
1479
1578
  comments: updatedComments
@@ -1632,7 +1731,7 @@ function selectorFor_useUnreadInboxNotificationsCount(result) {
1632
1731
  );
1633
1732
  }
1634
1733
  function selectorFor_useUser(state, userId) {
1635
- if (state === void 0 || _optionalChain([state, 'optionalAccess', _10 => _10.isLoading])) {
1734
+ if (state === void 0 || _optionalChain([state, 'optionalAccess', _11 => _11.isLoading])) {
1636
1735
  return _nullishCoalesce(state, () => ( { isLoading: true }));
1637
1736
  }
1638
1737
  if (state.error) {
@@ -1650,7 +1749,7 @@ function selectorFor_useUser(state, userId) {
1650
1749
  };
1651
1750
  }
1652
1751
  function selectorFor_useRoomInfo(state, roomId) {
1653
- if (state === void 0 || _optionalChain([state, 'optionalAccess', _11 => _11.isLoading])) {
1752
+ if (state === void 0 || _optionalChain([state, 'optionalAccess', _12 => _12.isLoading])) {
1654
1753
  return _nullishCoalesce(state, () => ( { isLoading: true }));
1655
1754
  }
1656
1755
  if (state.error) {
@@ -1717,10 +1816,25 @@ function makeLiveblocksExtrasForClient(client) {
1717
1816
  config.USER_THREADS_POLL_INTERVAL,
1718
1817
  { maxStaleTimeMs: config.USER_THREADS_MAX_STALE_TIME }
1719
1818
  );
1819
+ const userNotificationSettingsPoller = _core.makePoller.call(void 0,
1820
+ async (signal) => {
1821
+ try {
1822
+ return await store.refreshUserNotificationSettings(signal);
1823
+ } catch (err) {
1824
+ console.warn(
1825
+ `Polling new user notification settings failed: ${String(err)}`
1826
+ );
1827
+ throw err;
1828
+ }
1829
+ },
1830
+ config.USER_NOTIFICATION_SETTINGS_INTERVAL,
1831
+ { maxStaleTimeMs: config.USER_NOTIFICATION_SETTINGS_MAX_STALE_TIME }
1832
+ );
1720
1833
  return {
1721
1834
  store,
1722
1835
  notificationsPoller,
1723
- userThreadsPoller
1836
+ userThreadsPoller,
1837
+ userNotificationSettingsPoller
1724
1838
  };
1725
1839
  }
1726
1840
  function makeLiveblocksContextBundle(client) {
@@ -1729,6 +1843,7 @@ function makeLiveblocksContextBundle(client) {
1729
1843
  const useMarkAllInboxNotificationsAsRead2 = () => useMarkAllInboxNotificationsAsRead_withClient(client);
1730
1844
  const useDeleteInboxNotification2 = () => useDeleteInboxNotification_withClient(client);
1731
1845
  const useDeleteAllInboxNotifications2 = () => useDeleteAllInboxNotifications_withClient(client);
1846
+ const useUpdateNotificationSettings2 = () => useUpdateNotificationSettings_withClient(client);
1732
1847
  function LiveblocksProvider2(props) {
1733
1848
  useEnsureNoLiveblocksProvider();
1734
1849
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ClientContext.Provider, { value: client, children: props.children });
@@ -1742,6 +1857,8 @@ function makeLiveblocksContextBundle(client) {
1742
1857
  useMarkAllInboxNotificationsAsRead: useMarkAllInboxNotificationsAsRead2,
1743
1858
  useDeleteInboxNotification: useDeleteInboxNotification2,
1744
1859
  useDeleteAllInboxNotifications: useDeleteAllInboxNotifications2,
1860
+ useNotificationSettings: () => useNotificationSettings_withClient(client),
1861
+ useUpdateNotificationSettings: useUpdateNotificationSettings2,
1745
1862
  useInboxNotificationThread: useInboxNotificationThread2,
1746
1863
  useUserThreads_experimental,
1747
1864
  ...shared.classic,
@@ -1754,6 +1871,8 @@ function makeLiveblocksContextBundle(client) {
1754
1871
  useDeleteInboxNotification: useDeleteInboxNotification2,
1755
1872
  useDeleteAllInboxNotifications: useDeleteAllInboxNotifications2,
1756
1873
  useInboxNotificationThread: useInboxNotificationThread2,
1874
+ useNotificationSettings: () => useNotificationSettingsSuspense_withClient(client),
1875
+ useUpdateNotificationSettings: useUpdateNotificationSettings2,
1757
1876
  useUserThreads_experimental: useUserThreadsSuspense_experimental,
1758
1877
  ...shared.suspense
1759
1878
  }
@@ -1938,6 +2057,58 @@ function useInboxNotificationThread_withClient(client, inboxNotificationId) {
1938
2057
  )
1939
2058
  );
1940
2059
  }
2060
+ function useUpdateNotificationSettings_withClient(client) {
2061
+ return _react.useCallback.call(void 0,
2062
+ (settings) => {
2063
+ const { store } = getLiveblocksExtrasForClient(client);
2064
+ const optimisticUpdateId = store.optimisticUpdates.add({
2065
+ type: "update-user-notification-settings",
2066
+ settings
2067
+ });
2068
+ client.updateNotificationSettings(settings).then(
2069
+ (settings2) => {
2070
+ store.updateUserNotificationSettings_confirmOptimisticUpdate(
2071
+ settings2,
2072
+ optimisticUpdateId
2073
+ );
2074
+ },
2075
+ () => {
2076
+ store.optimisticUpdates.remove(optimisticUpdateId);
2077
+ }
2078
+ );
2079
+ },
2080
+ [client]
2081
+ );
2082
+ }
2083
+ function useNotificationSettings_withClient(client) {
2084
+ const updateNotificationSettings = useUpdateNotificationSettings_withClient(client);
2085
+ const { store, userNotificationSettingsPoller: poller } = getLiveblocksExtrasForClient(client);
2086
+ _react.useEffect.call(void 0, () => {
2087
+ void store.outputs.userNotificationSettings.waitUntilLoaded();
2088
+ });
2089
+ _react.useEffect.call(void 0, () => {
2090
+ poller.inc();
2091
+ poller.pollNowIfStale();
2092
+ return () => {
2093
+ poller.dec();
2094
+ };
2095
+ }, [poller]);
2096
+ const settings = useSignal(store.outputs.userNotificationSettings.signal);
2097
+ return _react.useMemo.call(void 0, () => {
2098
+ return [settings, updateNotificationSettings];
2099
+ }, [settings, updateNotificationSettings]);
2100
+ }
2101
+ function useNotificationSettingsSuspense_withClient(client) {
2102
+ ensureNotServerSide();
2103
+ const store = getLiveblocksExtrasForClient(client).store;
2104
+ use(store.outputs.userNotificationSettings.waitUntilLoaded());
2105
+ const [settings, updateNotificationSettings] = useNotificationSettings_withClient(client);
2106
+ _core.assert.call(void 0, !settings.error, "Did not expect error");
2107
+ _core.assert.call(void 0, !settings.isLoading, "Did not expect loading");
2108
+ return _react.useMemo.call(void 0, () => {
2109
+ return [settings, updateNotificationSettings];
2110
+ }, [settings, updateNotificationSettings]);
2111
+ }
1941
2112
  function useUser_withClient(client, userId) {
1942
2113
  const usersStore = client[_core.kInternal].usersStore;
1943
2114
  const getUserState = _react.useCallback.call(void 0,
@@ -2087,7 +2258,7 @@ function createSharedContext(client) {
2087
2258
  }
2088
2259
  function useEnsureNoLiveblocksProvider(options) {
2089
2260
  const existing = useClientOrNull();
2090
- if (!_optionalChain([options, 'optionalAccess', _12 => _12.allowNesting]) && existing !== null) {
2261
+ if (!_optionalChain([options, 'optionalAccess', _13 => _13.allowNesting]) && existing !== null) {
2091
2262
  throw new Error(
2092
2263
  "You cannot nest multiple LiveblocksProvider instances in the same React tree."
2093
2264
  );
@@ -2111,7 +2282,6 @@ function LiveblocksProvider(props) {
2111
2282
  lostConnectionTimeout: useInitial(o.lostConnectionTimeout),
2112
2283
  backgroundKeepAliveTimeout: useInitial(o.backgroundKeepAliveTimeout),
2113
2284
  polyfills: useInitial(o.polyfills),
2114
- largeMessageStrategy: useInitial(o.largeMessageStrategy),
2115
2285
  unstable_fallbackToHTTP: useInitial(o.unstable_fallbackToHTTP),
2116
2286
  unstable_streamData: useInitial(o.unstable_streamData),
2117
2287
  preventUnsavedChanges: useInitial(o.preventUnsavedChanges),
@@ -2203,6 +2373,15 @@ function useUnreadInboxNotificationsCount() {
2203
2373
  function useUnreadInboxNotificationsCountSuspense() {
2204
2374
  return useUnreadInboxNotificationsCountSuspense_withClient(useClient());
2205
2375
  }
2376
+ function useNotificationSettings() {
2377
+ return useNotificationSettings_withClient(useClient());
2378
+ }
2379
+ function useNotificationSettingsSuspense() {
2380
+ return useNotificationSettingsSuspense_withClient(useClient());
2381
+ }
2382
+ function useUpdateNotificationSettings() {
2383
+ return useUpdateNotificationSettings_withClient(useClient());
2384
+ }
2206
2385
  function useUser(userId) {
2207
2386
  const client = useClient();
2208
2387
  return useUser_withClient(client, userId);
@@ -2223,7 +2402,7 @@ var _useUserSuspense = useUserSuspense;
2223
2402
  var _useUserThreads_experimental = useUserThreads_experimental;
2224
2403
  var _useUserThreadsSuspense_experimental = useUserThreadsSuspense_experimental;
2225
2404
  function useSyncStatus_withClient(client, options) {
2226
- const smooth = useInitial(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _13 => _13.smooth]), () => ( false)));
2405
+ const smooth = useInitial(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _14 => _14.smooth]), () => ( false)));
2227
2406
  if (smooth) {
2228
2407
  return useSyncStatusSmooth_withClient(client);
2229
2408
  } else {
@@ -2401,8 +2580,8 @@ function makeRoomExtrasForClient(client) {
2401
2580
  if (innerError.status === 403) {
2402
2581
  const detailedMessage = [
2403
2582
  innerError.message,
2404
- _optionalChain([innerError, 'access', _14 => _14.details, 'optionalAccess', _15 => _15.suggestion]),
2405
- _optionalChain([innerError, 'access', _16 => _16.details, 'optionalAccess', _17 => _17.docs])
2583
+ _optionalChain([innerError, 'access', _15 => _15.details, 'optionalAccess', _16 => _16.suggestion]),
2584
+ _optionalChain([innerError, 'access', _17 => _17.details, 'optionalAccess', _18 => _18.docs])
2406
2585
  ].filter(Boolean).join("\n");
2407
2586
  _core.console.error(detailedMessage);
2408
2587
  }
@@ -2756,7 +2935,7 @@ function useMentionSuggestionsCache() {
2756
2935
  return client[_core.kInternal].mentionSuggestionsCache;
2757
2936
  }
2758
2937
  function useStorageStatus(options) {
2759
- const smooth = useInitial(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _18 => _18.smooth]), () => ( false)));
2938
+ const smooth = useInitial(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _19 => _19.smooth]), () => ( false)));
2760
2939
  if (smooth) {
2761
2940
  return useStorageStatusSmooth();
2762
2941
  } else {
@@ -3070,7 +3249,7 @@ function useCreateRoomThread(roomId) {
3070
3249
  thread: newThread,
3071
3250
  roomId
3072
3251
  });
3073
- const attachmentIds = _optionalChain([attachments, 'optionalAccess', _19 => _19.map, 'call', _20 => _20((attachment) => attachment.id)]);
3252
+ const attachmentIds = _optionalChain([attachments, 'optionalAccess', _20 => _20.map, 'call', _21 => _21((attachment) => attachment.id)]);
3074
3253
  client[_core.kInternal].httpClient.createThread({
3075
3254
  roomId,
3076
3255
  threadId,
@@ -3110,7 +3289,7 @@ function useDeleteRoomThread(roomId) {
3110
3289
  const { store, onMutationFailure } = getRoomExtrasForClient(client);
3111
3290
  const userId = getCurrentUserId(client);
3112
3291
  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) {
3292
+ if (_optionalChain([existing, 'optionalAccess', _22 => _22.comments, 'optionalAccess', _23 => _23[0], 'optionalAccess', _24 => _24.userId]) !== userId) {
3114
3293
  throw new Error("Only the thread creator can delete the thread");
3115
3294
  }
3116
3295
  const optimisticId = store.optimisticUpdates.add({
@@ -3198,7 +3377,7 @@ function useCreateRoomComment(roomId) {
3198
3377
  type: "create-comment",
3199
3378
  comment
3200
3379
  });
3201
- const attachmentIds = _optionalChain([attachments, 'optionalAccess', _24 => _24.map, 'call', _25 => _25((attachment) => attachment.id)]);
3380
+ const attachmentIds = _optionalChain([attachments, 'optionalAccess', _25 => _25.map, 'call', _26 => _26((attachment) => attachment.id)]);
3202
3381
  client[_core.kInternal].httpClient.createComment({ roomId, threadId, commentId, body, attachmentIds }).then(
3203
3382
  (newComment) => {
3204
3383
  store.createComment(newComment, optimisticId);
@@ -3254,7 +3433,7 @@ function useEditRoomComment(roomId) {
3254
3433
  attachments: _nullishCoalesce(attachments, () => ( []))
3255
3434
  }
3256
3435
  });
3257
- const attachmentIds = _optionalChain([attachments, 'optionalAccess', _26 => _26.map, 'call', _27 => _27((attachment) => attachment.id)]);
3436
+ const attachmentIds = _optionalChain([attachments, 'optionalAccess', _27 => _27.map, 'call', _28 => _28((attachment) => attachment.id)]);
3258
3437
  client[_core.kInternal].httpClient.editComment({ roomId, threadId, commentId, body, attachmentIds }).then(
3259
3438
  (editedComment) => {
3260
3439
  store.editComment(threadId, optimisticId, editedComment);
@@ -3718,7 +3897,7 @@ function useThreadsSuspense(options = {}) {
3718
3897
  return result;
3719
3898
  }
3720
3899
  function selectorFor_useAttachmentUrl(state) {
3721
- if (state === void 0 || _optionalChain([state, 'optionalAccess', _28 => _28.isLoading])) {
3900
+ if (state === void 0 || _optionalChain([state, 'optionalAccess', _29 => _29.isLoading])) {
3722
3901
  return _nullishCoalesce(state, () => ( { isLoading: true }));
3723
3902
  }
3724
3903
  if (state.error) {
@@ -3933,5 +4112,8 @@ var _useUpdateMyPresence = useUpdateMyPresence;
3933
4112
 
3934
4113
 
3935
4114
 
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
4115
+
4116
+
4117
+
4118
+ 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;
4119
+ //# sourceMappingURL=chunk-CTSQGLA4.js.map