@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.
- package/dist/_private.d.mts +1 -1
- package/dist/_private.d.ts +1 -1
- package/dist/_private.js +5 -5
- package/dist/_private.mjs +1 -1
- package/dist/{chunk-J5ZDLMBE.js → chunk-CTSQGLA4.js} +211 -29
- package/dist/chunk-CTSQGLA4.js.map +1 -0
- package/dist/{chunk-XWYTEJGO.mjs → chunk-D5P6PENM.mjs} +2 -2
- package/dist/{chunk-DR4OUZTF.js → chunk-QJATV7TB.js} +2 -2
- package/dist/chunk-QJATV7TB.js.map +1 -0
- package/dist/{chunk-4KNGHD4I.mjs → chunk-X2FQ2FNK.mjs} +193 -11
- package/dist/chunk-X2FQ2FNK.mjs.map +1 -0
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +9 -4
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +8 -3
- package/dist/index.mjs.map +1 -1
- package/dist/{room-Ce3twcjb.d.mts → room-DlI0Yrzf.d.mts} +74 -3
- package/dist/{room-Ce3twcjb.d.ts → room-DlI0Yrzf.d.ts} +74 -3
- package/dist/suspense.d.mts +2 -2
- package/dist/suspense.d.ts +2 -2
- package/dist/suspense.js +9 -4
- package/dist/suspense.js.map +1 -1
- package/dist/suspense.mjs +8 -3
- package/dist/suspense.mjs.map +1 -1
- package/package.json +3 -3
- package/dist/chunk-4KNGHD4I.mjs.map +0 -1
- package/dist/chunk-DR4OUZTF.js.map +0 -1
- package/dist/chunk-J5ZDLMBE.js.map +0 -1
- /package/dist/{chunk-XWYTEJGO.mjs.map → chunk-D5P6PENM.mjs.map} +0 -0
package/dist/_private.d.mts
CHANGED
|
@@ -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-
|
|
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';
|
package/dist/_private.d.ts
CHANGED
|
@@ -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-
|
|
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
|
|
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 =
|
|
41
|
-
const mentionSuggestionsCache =
|
|
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 =
|
|
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 =
|
|
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-
|
|
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',
|
|
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',
|
|
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',
|
|
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',
|
|
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
|
|
783
|
+
// .-> Base ThreadDB ---------+ +----> Clean threads by ID (Part 1)
|
|
760
784
|
// / | |
|
|
761
|
-
// mutate ----> Base Notifications --+ | | +--> Clean notifications
|
|
785
|
+
// mutate ----> Base Notifications --+ | | +--> Clean notifications (Part 1)
|
|
762
786
|
// \ | | | | & notifications by ID
|
|
763
787
|
// | \ | | Apply | |
|
|
764
|
-
// | `-> OptimisticUpdates --+--+--> Optimistic --+-+--> Notification Settings
|
|
765
|
-
// \ | Updates
|
|
766
|
-
// `------- etc etc ---------+
|
|
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',
|
|
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',
|
|
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',
|
|
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',
|
|
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',
|
|
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',
|
|
2405
|
-
_optionalChain([innerError, 'access',
|
|
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',
|
|
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',
|
|
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',
|
|
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',
|
|
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',
|
|
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',
|
|
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
|
-
|
|
3937
|
-
|
|
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
|