@liveblocks/react 3.6.2 → 3.7.0
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.cjs +46 -8
- package/dist/_private.cjs.map +1 -1
- package/dist/_private.d.cts +8 -7
- package/dist/_private.d.ts +8 -7
- package/dist/_private.js +45 -7
- package/dist/_private.js.map +1 -1
- package/dist/{chunk-GQPV5XSP.js → chunk-KYXF6473.js} +2 -2
- package/dist/{chunk-TCOWBBRU.cjs → chunk-OXA6JGB4.cjs} +2 -2
- package/dist/{chunk-TCOWBBRU.cjs.map → chunk-OXA6JGB4.cjs.map} +1 -1
- package/dist/{chunk-EEINMYNI.cjs → chunk-W2H56LB3.cjs} +199 -108
- package/dist/chunk-W2H56LB3.cjs.map +1 -0
- package/dist/{chunk-I2UW4JM4.js → chunk-WGUV4Z4E.js} +171 -80
- package/dist/chunk-WGUV4Z4E.js.map +1 -0
- package/dist/index.cjs +6 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/{room-BE4TZf40.d.cts → room-mUz5TTmo.d.cts} +59 -13
- package/dist/{room-BE4TZf40.d.ts → room-mUz5TTmo.d.ts} +59 -13
- package/dist/suspense.cjs +6 -4
- package/dist/suspense.cjs.map +1 -1
- package/dist/suspense.d.cts +1 -1
- package/dist/suspense.d.ts +1 -1
- package/dist/suspense.js +4 -2
- package/dist/suspense.js.map +1 -1
- package/package.json +3 -3
- package/dist/chunk-EEINMYNI.cjs.map +0 -1
- package/dist/chunk-I2UW4JM4.js.map +0 -1
- /package/dist/{chunk-GQPV5XSP.js.map → chunk-KYXF6473.js.map} +0 -0
|
@@ -305,7 +305,6 @@ var use = _nullishCoalesce(reactUse, () => ( ((promise) => {
|
|
|
305
305
|
|
|
306
306
|
|
|
307
307
|
|
|
308
|
-
|
|
309
308
|
|
|
310
309
|
|
|
311
310
|
// src/lib/autobind.ts
|
|
@@ -492,6 +491,9 @@ function makeUserThreadsQueryKey(query) {
|
|
|
492
491
|
function makeAiChatsQueryKey(query) {
|
|
493
492
|
return _core.stableStringify.call(void 0, _nullishCoalesce(query, () => ( {})));
|
|
494
493
|
}
|
|
494
|
+
function makeInboxNotificationsQueryKey(query) {
|
|
495
|
+
return _core.stableStringify.call(void 0, _nullishCoalesce(query, () => ( {})));
|
|
496
|
+
}
|
|
495
497
|
function usify(promise) {
|
|
496
498
|
if ("status" in promise) {
|
|
497
499
|
return promise;
|
|
@@ -920,7 +922,6 @@ var UmbrellaStore = class {
|
|
|
920
922
|
// Notifications
|
|
921
923
|
#notificationsLastRequestedAt = null;
|
|
922
924
|
// Keeps track of when we successfully requested an inbox notifications update for the last time. Will be `null` as long as the first successful fetch hasn't happened yet.
|
|
923
|
-
#notificationsPaginationState;
|
|
924
925
|
// Room Threads
|
|
925
926
|
#roomThreadsLastRequestedAtByRoom = /* @__PURE__ */ new Map();
|
|
926
927
|
// User Threads
|
|
@@ -933,21 +934,6 @@ var UmbrellaStore = class {
|
|
|
933
934
|
this.#client = client[_core.kInternal].as();
|
|
934
935
|
this.optimisticUpdates = createStore_forOptimistic(this.#client);
|
|
935
936
|
this.permissionHints = createStore_forPermissionHints();
|
|
936
|
-
this.#notificationsPaginationState = new PaginatedResource(
|
|
937
|
-
async (cursor) => {
|
|
938
|
-
const result = await this.#client.getInboxNotifications({ cursor });
|
|
939
|
-
this.updateThreadifications(
|
|
940
|
-
result.threads,
|
|
941
|
-
result.inboxNotifications,
|
|
942
|
-
result.subscriptions
|
|
943
|
-
);
|
|
944
|
-
if (this.#notificationsLastRequestedAt === null) {
|
|
945
|
-
this.#notificationsLastRequestedAt = result.requestedAt;
|
|
946
|
-
}
|
|
947
|
-
const nextCursor = result.nextCursor;
|
|
948
|
-
return nextCursor;
|
|
949
|
-
}
|
|
950
|
-
);
|
|
951
937
|
const notificationSettingsFetcher = async () => {
|
|
952
938
|
const result = await this.#client.getNotificationSettings();
|
|
953
939
|
this.notificationSettings.update(result);
|
|
@@ -1077,25 +1063,46 @@ var UmbrellaStore = class {
|
|
|
1077
1063
|
return { signal, waitUntilLoaded: resource.waitUntilLoaded };
|
|
1078
1064
|
}
|
|
1079
1065
|
);
|
|
1080
|
-
const loadingNotifications =
|
|
1081
|
-
|
|
1082
|
-
const
|
|
1083
|
-
const
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1066
|
+
const loadingNotifications = new (0, _core.DefaultMap)(
|
|
1067
|
+
(queryKey) => {
|
|
1068
|
+
const query = JSON.parse(queryKey);
|
|
1069
|
+
const resource = new PaginatedResource(async (cursor) => {
|
|
1070
|
+
const result = await this.#client.getInboxNotifications({
|
|
1071
|
+
cursor,
|
|
1072
|
+
query
|
|
1073
|
+
});
|
|
1074
|
+
this.updateThreadifications(
|
|
1075
|
+
result.threads,
|
|
1076
|
+
result.inboxNotifications,
|
|
1077
|
+
result.subscriptions
|
|
1078
|
+
);
|
|
1079
|
+
if (this.#notificationsLastRequestedAt === null) {
|
|
1080
|
+
this.#notificationsLastRequestedAt = result.requestedAt;
|
|
1081
|
+
}
|
|
1082
|
+
const nextCursor = result.nextCursor;
|
|
1083
|
+
return nextCursor;
|
|
1084
|
+
});
|
|
1085
|
+
const signal = _core.DerivedSignal.from(() => {
|
|
1086
|
+
const result = resource.get();
|
|
1087
|
+
if (result.isLoading || result.error) {
|
|
1088
|
+
return result;
|
|
1089
|
+
}
|
|
1090
|
+
const page = result.data;
|
|
1091
|
+
return {
|
|
1092
|
+
isLoading: false,
|
|
1093
|
+
inboxNotifications: this.outputs.notifications.get().sortedNotifications,
|
|
1094
|
+
hasFetchedAll: page.hasFetchedAll,
|
|
1095
|
+
isFetchingMore: page.isFetchingMore,
|
|
1096
|
+
fetchMoreError: page.fetchMoreError,
|
|
1097
|
+
fetchMore: page.fetchMore
|
|
1098
|
+
};
|
|
1099
|
+
}, _core.shallow2);
|
|
1088
1100
|
return {
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
hasFetchedAll: page.hasFetchedAll,
|
|
1092
|
-
isFetchingMore: page.isFetchingMore,
|
|
1093
|
-
fetchMoreError: page.fetchMoreError,
|
|
1094
|
-
fetchMore: page.fetchMore
|
|
1101
|
+
signal,
|
|
1102
|
+
waitUntilLoaded: resource.waitUntilLoaded
|
|
1095
1103
|
};
|
|
1096
|
-
}
|
|
1097
|
-
|
|
1098
|
-
};
|
|
1104
|
+
}
|
|
1105
|
+
);
|
|
1099
1106
|
const roomSubscriptionSettingsByRoomId = new (0, _core.DefaultMap)(
|
|
1100
1107
|
(roomId) => {
|
|
1101
1108
|
const resource = new SinglePageResource(async () => {
|
|
@@ -1741,15 +1748,7 @@ function applyOptimisticUpdates_forSubscriptions(subscriptionsLUT, threads, opti
|
|
|
1741
1748
|
delete subscriptions[subscriptionKey];
|
|
1742
1749
|
break;
|
|
1743
1750
|
}
|
|
1744
|
-
// Create subscriptions for every threads in the room which the user participates in but doesn't have a subscription for yet
|
|
1745
1751
|
case "replies_and_mentions": {
|
|
1746
|
-
if (isThreadParticipant(thread, update.userId) && !subscriptions[subscriptionKey]) {
|
|
1747
|
-
subscriptions[subscriptionKey] = {
|
|
1748
|
-
kind: "thread",
|
|
1749
|
-
subjectId: thread.id,
|
|
1750
|
-
createdAt: /* @__PURE__ */ new Date()
|
|
1751
|
-
};
|
|
1752
|
-
}
|
|
1753
1752
|
break;
|
|
1754
1753
|
}
|
|
1755
1754
|
default:
|
|
@@ -1950,27 +1949,6 @@ function upsertReaction(reactions, reaction) {
|
|
|
1950
1949
|
}
|
|
1951
1950
|
return reactions;
|
|
1952
1951
|
}
|
|
1953
|
-
function isThreadParticipant(thread, userId) {
|
|
1954
|
-
let isParticipant = false;
|
|
1955
|
-
for (const comment of thread.comments) {
|
|
1956
|
-
if (comment.deletedAt) {
|
|
1957
|
-
continue;
|
|
1958
|
-
}
|
|
1959
|
-
if (comment.userId === userId) {
|
|
1960
|
-
isParticipant = true;
|
|
1961
|
-
break;
|
|
1962
|
-
}
|
|
1963
|
-
const mentions = _core.getMentionsFromCommentBody.call(void 0,
|
|
1964
|
-
comment.body,
|
|
1965
|
-
(mention) => mention.kind === "user" && mention.id === userId
|
|
1966
|
-
);
|
|
1967
|
-
if (mentions.length > 0) {
|
|
1968
|
-
isParticipant = true;
|
|
1969
|
-
break;
|
|
1970
|
-
}
|
|
1971
|
-
}
|
|
1972
|
-
return isParticipant;
|
|
1973
|
-
}
|
|
1974
1952
|
|
|
1975
1953
|
// src/liveblocks.tsx
|
|
1976
1954
|
var _jsxruntime = require('react/jsx-runtime');
|
|
@@ -1982,6 +1960,11 @@ function missingRoomInfoError(roomId) {
|
|
|
1982
1960
|
`resolveRoomsInfo didn't return anything for room '${roomId}'`
|
|
1983
1961
|
);
|
|
1984
1962
|
}
|
|
1963
|
+
function missingGroupInfoError(groupId) {
|
|
1964
|
+
return new Error(
|
|
1965
|
+
`resolveGroupsInfo didn't return anything for group '${groupId}'`
|
|
1966
|
+
);
|
|
1967
|
+
}
|
|
1985
1968
|
function identity2(x) {
|
|
1986
1969
|
return x;
|
|
1987
1970
|
}
|
|
@@ -2036,6 +2019,24 @@ function selectorFor_useRoomInfo(state, roomId) {
|
|
|
2036
2019
|
info: state.data
|
|
2037
2020
|
};
|
|
2038
2021
|
}
|
|
2022
|
+
function selectorFor_useGroupInfo(state, groupId) {
|
|
2023
|
+
if (state === void 0 || _optionalChain([state, 'optionalAccess', _12 => _12.isLoading])) {
|
|
2024
|
+
return _nullishCoalesce(state, () => ( { isLoading: true }));
|
|
2025
|
+
}
|
|
2026
|
+
if (state.error) {
|
|
2027
|
+
return state;
|
|
2028
|
+
}
|
|
2029
|
+
if (!state.data) {
|
|
2030
|
+
return {
|
|
2031
|
+
isLoading: false,
|
|
2032
|
+
error: missingGroupInfoError(groupId)
|
|
2033
|
+
};
|
|
2034
|
+
}
|
|
2035
|
+
return {
|
|
2036
|
+
isLoading: false,
|
|
2037
|
+
info: state.data
|
|
2038
|
+
};
|
|
2039
|
+
}
|
|
2039
2040
|
function getOrCreateContextBundle(client) {
|
|
2040
2041
|
let bundle = _bundles.get(client);
|
|
2041
2042
|
if (!bundle) {
|
|
@@ -2126,7 +2127,7 @@ function makeLiveblocksContextBundle(client) {
|
|
|
2126
2127
|
const shared = createSharedContext(client);
|
|
2127
2128
|
const bundle = {
|
|
2128
2129
|
LiveblocksProvider: LiveblocksProvider2,
|
|
2129
|
-
useInboxNotifications: () => useInboxNotifications_withClient(client, identity2, _core.shallow),
|
|
2130
|
+
useInboxNotifications: (options) => useInboxNotifications_withClient(client, identity2, _core.shallow, options),
|
|
2130
2131
|
useUnreadInboxNotificationsCount: () => useUnreadInboxNotificationsCount_withClient(client),
|
|
2131
2132
|
useMarkInboxNotificationAsRead: useMarkInboxNotificationAsRead2,
|
|
2132
2133
|
useMarkAllInboxNotificationsAsRead: useMarkAllInboxNotificationsAsRead2,
|
|
@@ -2145,7 +2146,7 @@ function makeLiveblocksContextBundle(client) {
|
|
|
2145
2146
|
...shared.classic,
|
|
2146
2147
|
suspense: {
|
|
2147
2148
|
LiveblocksProvider: LiveblocksProvider2,
|
|
2148
|
-
useInboxNotifications: () => useInboxNotificationsSuspense_withClient(client),
|
|
2149
|
+
useInboxNotifications: (options) => useInboxNotificationsSuspense_withClient(client, options),
|
|
2149
2150
|
useUnreadInboxNotificationsCount: () => useUnreadInboxNotificationsCountSuspense_withClient(client),
|
|
2150
2151
|
useMarkInboxNotificationAsRead: useMarkInboxNotificationAsRead2,
|
|
2151
2152
|
useMarkAllInboxNotificationsAsRead: useMarkAllInboxNotificationsAsRead2,
|
|
@@ -2166,10 +2167,11 @@ function makeLiveblocksContextBundle(client) {
|
|
|
2166
2167
|
};
|
|
2167
2168
|
return bundle;
|
|
2168
2169
|
}
|
|
2169
|
-
function useInboxNotifications_withClient(client, selector, isEqual) {
|
|
2170
|
+
function useInboxNotifications_withClient(client, selector, isEqual, options) {
|
|
2170
2171
|
const { store, notificationsPoller: poller } = getLiveblocksExtrasForClient(client);
|
|
2172
|
+
const queryKey = makeInboxNotificationsQueryKey(_optionalChain([options, 'optionalAccess', _13 => _13.query]));
|
|
2171
2173
|
_react.useEffect.call(void 0,
|
|
2172
|
-
() => void store.outputs.loadingNotifications.waitUntilLoaded()
|
|
2174
|
+
() => void store.outputs.loadingNotifications.getOrCreate(queryKey).waitUntilLoaded()
|
|
2173
2175
|
// NOTE: Deliberately *not* using a dependency array here!
|
|
2174
2176
|
//
|
|
2175
2177
|
// It is important to call waitUntil on *every* render.
|
|
@@ -2187,16 +2189,24 @@ function useInboxNotifications_withClient(client, selector, isEqual) {
|
|
|
2187
2189
|
};
|
|
2188
2190
|
}, [poller]);
|
|
2189
2191
|
return useSignal(
|
|
2190
|
-
store.outputs.loadingNotifications.signal,
|
|
2192
|
+
store.outputs.loadingNotifications.getOrCreate(queryKey).signal,
|
|
2191
2193
|
selector,
|
|
2192
2194
|
isEqual
|
|
2193
2195
|
);
|
|
2194
2196
|
}
|
|
2195
|
-
function useInboxNotificationsSuspense_withClient(client) {
|
|
2197
|
+
function useInboxNotificationsSuspense_withClient(client, options) {
|
|
2196
2198
|
ensureNotServerSide();
|
|
2197
2199
|
const store = getLiveblocksExtrasForClient(client).store;
|
|
2198
|
-
|
|
2199
|
-
|
|
2200
|
+
const queryKey = makeInboxNotificationsQueryKey(_optionalChain([options, 'optionalAccess', _14 => _14.query]));
|
|
2201
|
+
use(
|
|
2202
|
+
store.outputs.loadingNotifications.getOrCreate(queryKey).waitUntilLoaded()
|
|
2203
|
+
);
|
|
2204
|
+
const result = useInboxNotifications_withClient(
|
|
2205
|
+
client,
|
|
2206
|
+
identity2,
|
|
2207
|
+
_core.shallow,
|
|
2208
|
+
options
|
|
2209
|
+
);
|
|
2200
2210
|
_core.assert.call(void 0, !result.error, "Did not expect error");
|
|
2201
2211
|
_core.assert.call(void 0, !result.isLoading, "Did not expect loading");
|
|
2202
2212
|
return result;
|
|
@@ -2211,7 +2221,10 @@ function useUnreadInboxNotificationsCount_withClient(client) {
|
|
|
2211
2221
|
function useUnreadInboxNotificationsCountSuspense_withClient(client) {
|
|
2212
2222
|
ensureNotServerSide();
|
|
2213
2223
|
const store = getLiveblocksExtrasForClient(client).store;
|
|
2214
|
-
|
|
2224
|
+
const queryKey = makeInboxNotificationsQueryKey(void 0);
|
|
2225
|
+
use(
|
|
2226
|
+
store.outputs.loadingNotifications.getOrCreate(queryKey).waitUntilLoaded()
|
|
2227
|
+
);
|
|
2215
2228
|
const result = useUnreadInboxNotificationsCount_withClient(client);
|
|
2216
2229
|
_core.assert.call(void 0, !result.isLoading, "Did not expect loading");
|
|
2217
2230
|
_core.assert.call(void 0, !result.error, "Did not expect error");
|
|
@@ -2363,7 +2376,7 @@ function useUpdateNotificationSettings_withClient(client) {
|
|
|
2363
2376
|
store.optimisticUpdates.remove(optimisticUpdateId);
|
|
2364
2377
|
if (err instanceof _core.HttpError) {
|
|
2365
2378
|
if (err.status === 422) {
|
|
2366
|
-
const msg = [_optionalChain([err, 'access',
|
|
2379
|
+
const msg = [_optionalChain([err, 'access', _15 => _15.details, 'optionalAccess', _16 => _16.error]), _optionalChain([err, 'access', _17 => _17.details, 'optionalAccess', _18 => _18.reason])].filter(Boolean).join("\n");
|
|
2367
2380
|
_core.console.error(msg);
|
|
2368
2381
|
}
|
|
2369
2382
|
client[_core.kInternal].emitError(
|
|
@@ -2533,10 +2546,72 @@ function useRoomInfoSuspense_withClient(client, roomId) {
|
|
|
2533
2546
|
error: void 0
|
|
2534
2547
|
};
|
|
2535
2548
|
}
|
|
2549
|
+
function useGroupInfo_withClient(client, groupId) {
|
|
2550
|
+
const groupsInfoStore = client[_core.kInternal].groupsInfoStore;
|
|
2551
|
+
const getGroupInfoState = _react.useCallback.call(void 0,
|
|
2552
|
+
() => groupsInfoStore.getItemState(groupId),
|
|
2553
|
+
[groupsInfoStore, groupId]
|
|
2554
|
+
);
|
|
2555
|
+
const selector = _react.useCallback.call(void 0,
|
|
2556
|
+
(state) => selectorFor_useGroupInfo(state, groupId),
|
|
2557
|
+
[groupId]
|
|
2558
|
+
);
|
|
2559
|
+
const result = useSyncExternalStoreWithSelector(
|
|
2560
|
+
groupsInfoStore.subscribe,
|
|
2561
|
+
getGroupInfoState,
|
|
2562
|
+
getGroupInfoState,
|
|
2563
|
+
selector,
|
|
2564
|
+
_core.shallow
|
|
2565
|
+
);
|
|
2566
|
+
_react.useEffect.call(void 0,
|
|
2567
|
+
() => void groupsInfoStore.enqueue(groupId)
|
|
2568
|
+
// NOTE: Deliberately *not* using a dependency array here!
|
|
2569
|
+
//
|
|
2570
|
+
// It is important to call groupsInfoStore.enqueue on *every* render.
|
|
2571
|
+
// This is harmless though, on most renders, except:
|
|
2572
|
+
// 1. The very first render, in which case we'll want to trigger evaluation
|
|
2573
|
+
// of the groupId.
|
|
2574
|
+
// 2. All other subsequent renders now are a no-op (from the implementation
|
|
2575
|
+
// of .enqueue)
|
|
2576
|
+
// 3. If ever the groupId gets invalidated, the group info would be fetched again.
|
|
2577
|
+
);
|
|
2578
|
+
return result;
|
|
2579
|
+
}
|
|
2580
|
+
function useGroupInfoSuspense_withClient(client, groupId) {
|
|
2581
|
+
const groupsInfoStore = client[_core.kInternal].groupsInfoStore;
|
|
2582
|
+
const getGroupInfoState = _react.useCallback.call(void 0,
|
|
2583
|
+
() => groupsInfoStore.getItemState(groupId),
|
|
2584
|
+
[groupsInfoStore, groupId]
|
|
2585
|
+
);
|
|
2586
|
+
const groupInfoState = getGroupInfoState();
|
|
2587
|
+
if (!groupInfoState || groupInfoState.isLoading) {
|
|
2588
|
+
throw groupsInfoStore.enqueue(groupId);
|
|
2589
|
+
}
|
|
2590
|
+
if (groupInfoState.error) {
|
|
2591
|
+
throw groupInfoState.error;
|
|
2592
|
+
}
|
|
2593
|
+
if (!groupInfoState.data) {
|
|
2594
|
+
throw missingGroupInfoError(groupId);
|
|
2595
|
+
}
|
|
2596
|
+
const state = _react.useSyncExternalStore.call(void 0,
|
|
2597
|
+
groupsInfoStore.subscribe,
|
|
2598
|
+
getGroupInfoState,
|
|
2599
|
+
getGroupInfoState
|
|
2600
|
+
);
|
|
2601
|
+
_core.assert.call(void 0, state !== void 0, "Unexpected missing state");
|
|
2602
|
+
_core.assert.call(void 0, !state.isLoading, "Unexpected loading state");
|
|
2603
|
+
_core.assert.call(void 0, !state.error, "Unexpected error state");
|
|
2604
|
+
_core.assert.call(void 0, state.data !== void 0, "Unexpected missing group info data");
|
|
2605
|
+
return {
|
|
2606
|
+
isLoading: false,
|
|
2607
|
+
info: state.data,
|
|
2608
|
+
error: void 0
|
|
2609
|
+
};
|
|
2610
|
+
}
|
|
2536
2611
|
function useAiChats(options) {
|
|
2537
2612
|
const client = useClient();
|
|
2538
2613
|
const store = getUmbrellaStoreForClient(client);
|
|
2539
|
-
const queryKey = makeAiChatsQueryKey(_optionalChain([options, 'optionalAccess',
|
|
2614
|
+
const queryKey = makeAiChatsQueryKey(_optionalChain([options, 'optionalAccess', _19 => _19.query]));
|
|
2540
2615
|
useEnsureAiConnection(client);
|
|
2541
2616
|
_react.useEffect.call(void 0,
|
|
2542
2617
|
() => void store.outputs.aiChats.getOrCreate(queryKey).waitUntilLoaded()
|
|
@@ -2560,7 +2635,7 @@ function useAiChatsSuspense(options) {
|
|
|
2560
2635
|
const client = useClient();
|
|
2561
2636
|
const store = getUmbrellaStoreForClient(client);
|
|
2562
2637
|
useEnsureAiConnection(client);
|
|
2563
|
-
const queryKey = makeAiChatsQueryKey(_optionalChain([options, 'optionalAccess',
|
|
2638
|
+
const queryKey = makeAiChatsQueryKey(_optionalChain([options, 'optionalAccess', _20 => _20.query]));
|
|
2564
2639
|
use(store.outputs.aiChats.getOrCreate(queryKey).waitUntilLoaded());
|
|
2565
2640
|
const result = useAiChats(options);
|
|
2566
2641
|
_core.assert.call(void 0, !result.error, "Did not expect error");
|
|
@@ -2572,7 +2647,7 @@ function useAiChatMessages(chatId, options) {
|
|
|
2572
2647
|
const store = getUmbrellaStoreForClient(client);
|
|
2573
2648
|
useEnsureAiConnection(client);
|
|
2574
2649
|
_react.useEffect.call(void 0,
|
|
2575
|
-
() => void store.outputs.messagesByChatId.getOrCreate(chatId).getOrCreate(_nullishCoalesce(_optionalChain([options, 'optionalAccess',
|
|
2650
|
+
() => void store.outputs.messagesByChatId.getOrCreate(chatId).getOrCreate(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _21 => _21.branchId]), () => ( null))).waitUntilLoaded()
|
|
2576
2651
|
// NOTE: Deliberately *not* using a dependency array here!
|
|
2577
2652
|
//
|
|
2578
2653
|
// It is important to call waitUntil on *every* render.
|
|
@@ -2583,7 +2658,7 @@ function useAiChatMessages(chatId, options) {
|
|
|
2583
2658
|
// *next* render after that, a *new* fetch/promise will get created.
|
|
2584
2659
|
);
|
|
2585
2660
|
return useSignal(
|
|
2586
|
-
store.outputs.messagesByChatId.getOrCreate(chatId).getOrCreate(_nullishCoalesce(_optionalChain([options, 'optionalAccess',
|
|
2661
|
+
store.outputs.messagesByChatId.getOrCreate(chatId).getOrCreate(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _22 => _22.branchId]), () => ( null))).signal
|
|
2587
2662
|
);
|
|
2588
2663
|
}
|
|
2589
2664
|
function useAiChatMessagesSuspense(chatId, options) {
|
|
@@ -2592,7 +2667,7 @@ function useAiChatMessagesSuspense(chatId, options) {
|
|
|
2592
2667
|
const store = getUmbrellaStoreForClient(client);
|
|
2593
2668
|
useEnsureAiConnection(client);
|
|
2594
2669
|
use(
|
|
2595
|
-
store.outputs.messagesByChatId.getOrCreate(chatId).getOrCreate(_nullishCoalesce(_optionalChain([options, 'optionalAccess',
|
|
2670
|
+
store.outputs.messagesByChatId.getOrCreate(chatId).getOrCreate(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _23 => _23.branchId]), () => ( null))).waitUntilLoaded()
|
|
2596
2671
|
);
|
|
2597
2672
|
const result = useAiChatMessages(chatId, options);
|
|
2598
2673
|
_core.assert.call(void 0, !result.error, "Did not expect error");
|
|
@@ -2675,7 +2750,7 @@ function useSendAiMessage(chatId, options) {
|
|
|
2675
2750
|
"chatId must be provided to either `useSendAiMessage` or its returned function."
|
|
2676
2751
|
)));
|
|
2677
2752
|
const messages = client[_core.kInternal].ai.signals.getChatMessagesForBranch\u03A3(resolvedChatId).get();
|
|
2678
|
-
if (process.env.NODE_ENV !== "production" && !messageOptionsCopilotId && !_optionalChain([options, 'optionalAccess',
|
|
2753
|
+
if (process.env.NODE_ENV !== "production" && !messageOptionsCopilotId && !_optionalChain([options, 'optionalAccess', _24 => _24.copilotId])) {
|
|
2679
2754
|
_core.console.warn(
|
|
2680
2755
|
`No copilot ID was provided to useSendAiMessage when sending the message "${messageText.slice(
|
|
2681
2756
|
0,
|
|
@@ -2687,8 +2762,8 @@ To ensure the correct copilot ID is used, specify it either through the hook as
|
|
|
2687
2762
|
)}\u2026", copilotId: "co_xxx" })'`
|
|
2688
2763
|
);
|
|
2689
2764
|
}
|
|
2690
|
-
const resolvedCopilotId = _nullishCoalesce(_nullishCoalesce(messageOptionsCopilotId, () => ( _optionalChain([options, 'optionalAccess',
|
|
2691
|
-
const lastMessageId = _nullishCoalesce(_optionalChain([messages, 'access',
|
|
2765
|
+
const resolvedCopilotId = _nullishCoalesce(_nullishCoalesce(messageOptionsCopilotId, () => ( _optionalChain([options, 'optionalAccess', _25 => _25.copilotId]))), () => ( client[_core.kInternal].ai.getLastUsedCopilotId(resolvedChatId)));
|
|
2766
|
+
const lastMessageId = _nullishCoalesce(_optionalChain([messages, 'access', _26 => _26[messages.length - 1], 'optionalAccess', _27 => _27.id]), () => ( null));
|
|
2692
2767
|
const content = [{ type: "text", text: messageText }];
|
|
2693
2768
|
const newMessageId = client[_core.kInternal].ai[_core.kInternal].context.messagesStore.createOptimistically(
|
|
2694
2769
|
resolvedChatId,
|
|
@@ -2708,10 +2783,10 @@ To ensure the correct copilot ID is used, specify it either through the hook as
|
|
|
2708
2783
|
{ id: newMessageId, parentMessageId: lastMessageId, content },
|
|
2709
2784
|
targetMessageId,
|
|
2710
2785
|
{
|
|
2711
|
-
stream: _nullishCoalesce(messageOptions.stream, () => ( _optionalChain([options, 'optionalAccess',
|
|
2786
|
+
stream: _nullishCoalesce(messageOptions.stream, () => ( _optionalChain([options, 'optionalAccess', _28 => _28.stream]))),
|
|
2712
2787
|
copilotId: resolvedCopilotId,
|
|
2713
|
-
timeout: _nullishCoalesce(messageOptions.timeout, () => ( _optionalChain([options, 'optionalAccess',
|
|
2714
|
-
knowledge: _nullishCoalesce(messageOptions.knowledge, () => ( _optionalChain([options, 'optionalAccess',
|
|
2788
|
+
timeout: _nullishCoalesce(messageOptions.timeout, () => ( _optionalChain([options, 'optionalAccess', _29 => _29.timeout]))),
|
|
2789
|
+
knowledge: _nullishCoalesce(messageOptions.knowledge, () => ( _optionalChain([options, 'optionalAccess', _30 => _30.knowledge])))
|
|
2715
2790
|
}
|
|
2716
2791
|
);
|
|
2717
2792
|
return newMessage;
|
|
@@ -2719,10 +2794,10 @@ To ensure the correct copilot ID is used, specify it either through the hook as
|
|
|
2719
2794
|
[
|
|
2720
2795
|
client,
|
|
2721
2796
|
chatId,
|
|
2722
|
-
_optionalChain([options, 'optionalAccess',
|
|
2723
|
-
_optionalChain([options, 'optionalAccess',
|
|
2724
|
-
_optionalChain([options, 'optionalAccess',
|
|
2725
|
-
_optionalChain([options, 'optionalAccess',
|
|
2797
|
+
_optionalChain([options, 'optionalAccess', _31 => _31.copilotId]),
|
|
2798
|
+
_optionalChain([options, 'optionalAccess', _32 => _32.stream]),
|
|
2799
|
+
_optionalChain([options, 'optionalAccess', _33 => _33.timeout]),
|
|
2800
|
+
_optionalChain([options, 'optionalAccess', _34 => _34.knowledge])
|
|
2726
2801
|
]
|
|
2727
2802
|
);
|
|
2728
2803
|
}
|
|
@@ -2736,6 +2811,7 @@ function createSharedContext(client) {
|
|
|
2736
2811
|
useClient: useClient2,
|
|
2737
2812
|
useUser: (userId) => useUser_withClient(client, userId),
|
|
2738
2813
|
useRoomInfo: (roomId) => useRoomInfo_withClient(client, roomId),
|
|
2814
|
+
useGroupInfo: (groupId) => useGroupInfo_withClient(client, groupId),
|
|
2739
2815
|
useIsInsideRoom,
|
|
2740
2816
|
useErrorListener,
|
|
2741
2817
|
useSyncStatus: useSyncStatus2,
|
|
@@ -2746,6 +2822,7 @@ function createSharedContext(client) {
|
|
|
2746
2822
|
useClient: useClient2,
|
|
2747
2823
|
useUser: (userId) => useUserSuspense_withClient(client, userId),
|
|
2748
2824
|
useRoomInfo: (roomId) => useRoomInfoSuspense_withClient(client, roomId),
|
|
2825
|
+
useGroupInfo: (groupId) => useGroupInfoSuspense_withClient(client, groupId),
|
|
2749
2826
|
useIsInsideRoom,
|
|
2750
2827
|
useErrorListener,
|
|
2751
2828
|
useSyncStatus: useSyncStatus2,
|
|
@@ -2756,7 +2833,7 @@ function createSharedContext(client) {
|
|
|
2756
2833
|
}
|
|
2757
2834
|
function useEnsureNoLiveblocksProvider(options) {
|
|
2758
2835
|
const existing = useClientOrNull();
|
|
2759
|
-
if (!_optionalChain([options, 'optionalAccess',
|
|
2836
|
+
if (!_optionalChain([options, 'optionalAccess', _35 => _35.allowNesting]) && existing !== null) {
|
|
2760
2837
|
throw new Error(
|
|
2761
2838
|
"You cannot nest multiple LiveblocksProvider instances in the same React tree."
|
|
2762
2839
|
);
|
|
@@ -2783,6 +2860,7 @@ function LiveblocksProvider(props) {
|
|
|
2783
2860
|
),
|
|
2784
2861
|
resolveUsers: useInitialUnlessFunction(o.resolveUsers),
|
|
2785
2862
|
resolveRoomsInfo: useInitialUnlessFunction(o.resolveRoomsInfo),
|
|
2863
|
+
resolveGroupsInfo: useInitialUnlessFunction(o.resolveGroupsInfo),
|
|
2786
2864
|
baseUrl: useInitial(
|
|
2787
2865
|
// @ts-expect-error - Hidden config options
|
|
2788
2866
|
o.baseUrl
|
|
@@ -2840,11 +2918,16 @@ function useUserThreadsSuspense_experimental(options = {}) {
|
|
|
2840
2918
|
_core.assert.call(void 0, !result.isLoading, "Did not expect loading");
|
|
2841
2919
|
return result;
|
|
2842
2920
|
}
|
|
2843
|
-
function useInboxNotifications() {
|
|
2844
|
-
return useInboxNotifications_withClient(
|
|
2921
|
+
function useInboxNotifications(options) {
|
|
2922
|
+
return useInboxNotifications_withClient(
|
|
2923
|
+
useClient(),
|
|
2924
|
+
identity2,
|
|
2925
|
+
_core.shallow,
|
|
2926
|
+
options
|
|
2927
|
+
);
|
|
2845
2928
|
}
|
|
2846
|
-
function useInboxNotificationsSuspense() {
|
|
2847
|
-
return useInboxNotificationsSuspense_withClient(useClient());
|
|
2929
|
+
function useInboxNotificationsSuspense(options) {
|
|
2930
|
+
return useInboxNotificationsSuspense_withClient(useClient(), options);
|
|
2848
2931
|
}
|
|
2849
2932
|
function useInboxNotificationThread(inboxNotificationId) {
|
|
2850
2933
|
return useInboxNotificationThread_withClient(
|
|
@@ -2893,6 +2976,12 @@ function useRoomInfo(roomId) {
|
|
|
2893
2976
|
function useRoomInfoSuspense(roomId) {
|
|
2894
2977
|
return useRoomInfoSuspense_withClient(useClient(), roomId);
|
|
2895
2978
|
}
|
|
2979
|
+
function useGroupInfo(groupId) {
|
|
2980
|
+
return useGroupInfo_withClient(useClient(), groupId);
|
|
2981
|
+
}
|
|
2982
|
+
function useGroupInfoSuspense(groupId) {
|
|
2983
|
+
return useGroupInfoSuspense_withClient(useClient(), groupId);
|
|
2984
|
+
}
|
|
2896
2985
|
var _useInboxNotificationThread = useInboxNotificationThread;
|
|
2897
2986
|
var _useUser = useUser;
|
|
2898
2987
|
var _useUserSuspense = useUserSuspense;
|
|
@@ -2905,7 +2994,7 @@ var _useAiChatSuspense = useAiChatSuspense;
|
|
|
2905
2994
|
var _useAiChatMessages = useAiChatMessages;
|
|
2906
2995
|
var _useAiChatMessagesSuspense = useAiChatMessagesSuspense;
|
|
2907
2996
|
function useSyncStatus_withClient(client, options) {
|
|
2908
|
-
const smooth = useInitial(_nullishCoalesce(_optionalChain([options, 'optionalAccess',
|
|
2997
|
+
const smooth = useInitial(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _36 => _36.smooth]), () => ( false)));
|
|
2909
2998
|
if (smooth) {
|
|
2910
2999
|
return useSyncStatusSmooth_withClient(client);
|
|
2911
3000
|
} else {
|
|
@@ -3084,8 +3173,8 @@ function makeRoomExtrasForClient(client) {
|
|
|
3084
3173
|
if (innerError.status === 403) {
|
|
3085
3174
|
const detailedMessage = [
|
|
3086
3175
|
innerError.message,
|
|
3087
|
-
_optionalChain([innerError, 'access',
|
|
3088
|
-
_optionalChain([innerError, 'access',
|
|
3176
|
+
_optionalChain([innerError, 'access', _37 => _37.details, 'optionalAccess', _38 => _38.suggestion]),
|
|
3177
|
+
_optionalChain([innerError, 'access', _39 => _39.details, 'optionalAccess', _40 => _40.docs])
|
|
3089
3178
|
].filter(Boolean).join("\n");
|
|
3090
3179
|
_core.console.error(detailedMessage);
|
|
3091
3180
|
}
|
|
@@ -3380,7 +3469,7 @@ function RoomProviderInner(props) {
|
|
|
3380
3469
|
}
|
|
3381
3470
|
function useRoom(options) {
|
|
3382
3471
|
const room = useRoomOrNull();
|
|
3383
|
-
if (room === null && !_optionalChain([options, 'optionalAccess',
|
|
3472
|
+
if (room === null && !_optionalChain([options, 'optionalAccess', _41 => _41.allowOutsideRoom])) {
|
|
3384
3473
|
throw new Error("RoomProvider is missing from the React tree.");
|
|
3385
3474
|
}
|
|
3386
3475
|
return room;
|
|
@@ -3424,10 +3513,10 @@ function useYjsProvider() {
|
|
|
3424
3513
|
function useCreateTextMention() {
|
|
3425
3514
|
const room = useRoom();
|
|
3426
3515
|
return _react.useCallback.call(void 0,
|
|
3427
|
-
(
|
|
3428
|
-
room[_core.kInternal].createTextMention(
|
|
3516
|
+
(mentionId, mention) => {
|
|
3517
|
+
room[_core.kInternal].createTextMention(mentionId, mention).catch((err) => {
|
|
3429
3518
|
_core.console.error(
|
|
3430
|
-
`Cannot create text mention for
|
|
3519
|
+
`Cannot create text mention for mention '${mentionId}'`,
|
|
3431
3520
|
err
|
|
3432
3521
|
);
|
|
3433
3522
|
});
|
|
@@ -3730,7 +3819,7 @@ function useCreateRoomThread(roomId) {
|
|
|
3730
3819
|
thread: newThread,
|
|
3731
3820
|
roomId
|
|
3732
3821
|
});
|
|
3733
|
-
const attachmentIds = _optionalChain([attachments, 'optionalAccess',
|
|
3822
|
+
const attachmentIds = _optionalChain([attachments, 'optionalAccess', _42 => _42.map, 'call', _43 => _43((attachment) => attachment.id)]);
|
|
3734
3823
|
client[_core.kInternal].httpClient.createThread({
|
|
3735
3824
|
roomId,
|
|
3736
3825
|
threadId,
|
|
@@ -3770,7 +3859,7 @@ function useDeleteRoomThread(roomId) {
|
|
|
3770
3859
|
const { store, onMutationFailure } = getRoomExtrasForClient(client);
|
|
3771
3860
|
const userId = getCurrentUserId(client);
|
|
3772
3861
|
const existing = store.outputs.threads.get().get(threadId);
|
|
3773
|
-
if (_optionalChain([existing, 'optionalAccess',
|
|
3862
|
+
if (_optionalChain([existing, 'optionalAccess', _44 => _44.comments, 'optionalAccess', _45 => _45[0], 'optionalAccess', _46 => _46.userId]) !== userId) {
|
|
3774
3863
|
throw new Error("Only the thread creator can delete the thread");
|
|
3775
3864
|
}
|
|
3776
3865
|
const optimisticId = store.optimisticUpdates.add({
|
|
@@ -3858,7 +3947,7 @@ function useCreateRoomComment(roomId) {
|
|
|
3858
3947
|
type: "create-comment",
|
|
3859
3948
|
comment
|
|
3860
3949
|
});
|
|
3861
|
-
const attachmentIds = _optionalChain([attachments, 'optionalAccess',
|
|
3950
|
+
const attachmentIds = _optionalChain([attachments, 'optionalAccess', _47 => _47.map, 'call', _48 => _48((attachment) => attachment.id)]);
|
|
3862
3951
|
client[_core.kInternal].httpClient.createComment({ roomId, threadId, commentId, body, attachmentIds }).then(
|
|
3863
3952
|
(newComment) => {
|
|
3864
3953
|
store.createComment(newComment, optimisticId);
|
|
@@ -3914,7 +4003,7 @@ function useEditRoomComment(roomId) {
|
|
|
3914
4003
|
attachments: _nullishCoalesce(attachments, () => ( []))
|
|
3915
4004
|
}
|
|
3916
4005
|
});
|
|
3917
|
-
const attachmentIds = _optionalChain([attachments, 'optionalAccess',
|
|
4006
|
+
const attachmentIds = _optionalChain([attachments, 'optionalAccess', _49 => _49.map, 'call', _50 => _50((attachment) => attachment.id)]);
|
|
3918
4007
|
client[_core.kInternal].httpClient.editComment({ roomId, threadId, commentId, body, attachmentIds }).then(
|
|
3919
4008
|
(editedComment) => {
|
|
3920
4009
|
store.editComment(threadId, optimisticId, editedComment);
|
|
@@ -4255,7 +4344,7 @@ function useRoomThreadSubscription(roomId, threadId) {
|
|
|
4255
4344
|
}
|
|
4256
4345
|
return {
|
|
4257
4346
|
status: "subscribed",
|
|
4258
|
-
unreadSince: _nullishCoalesce(_optionalChain([notification, 'optionalAccess',
|
|
4347
|
+
unreadSince: _nullishCoalesce(_optionalChain([notification, 'optionalAccess', _51 => _51.readAt]), () => ( null)),
|
|
4259
4348
|
subscribe,
|
|
4260
4349
|
unsubscribe
|
|
4261
4350
|
};
|
|
@@ -4466,7 +4555,7 @@ function useThreadsSuspense(options = {}) {
|
|
|
4466
4555
|
return result;
|
|
4467
4556
|
}
|
|
4468
4557
|
function selectorFor_useAttachmentUrl(state) {
|
|
4469
|
-
if (state === void 0 || _optionalChain([state, 'optionalAccess',
|
|
4558
|
+
if (state === void 0 || _optionalChain([state, 'optionalAccess', _52 => _52.isLoading])) {
|
|
4470
4559
|
return _nullishCoalesce(state, () => ( { isLoading: true }));
|
|
4471
4560
|
}
|
|
4472
4561
|
if (state.error) {
|
|
@@ -4691,5 +4780,7 @@ var _useUpdateMyPresence = useUpdateMyPresence;
|
|
|
4691
4780
|
|
|
4692
4781
|
|
|
4693
4782
|
|
|
4694
|
-
|
|
4695
|
-
|
|
4783
|
+
|
|
4784
|
+
|
|
4785
|
+
exports.ClientContext = ClientContext; exports.useClientOrNull = useClientOrNull; exports.useClient = useClient; exports.RoomContext = RoomContext; exports.useLatest = useLatest; exports.RegisterAiKnowledge = RegisterAiKnowledge; exports.RegisterAiTool = RegisterAiTool; exports.useSyncExternalStoreWithSelector = useSyncExternalStoreWithSelector; exports.useSignal = useSignal; exports.getUmbrellaStoreForClient = getUmbrellaStoreForClient; exports.useCreateAiChat = useCreateAiChat; exports.useDeleteAiChat = useDeleteAiChat; exports.useSendAiMessage = useSendAiMessage; 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.useGroupInfo = useGroupInfo; exports.useGroupInfoSuspense = useGroupInfoSuspense; exports._useInboxNotificationThread = _useInboxNotificationThread; exports._useUser = _useUser; exports._useUserSuspense = _useUserSuspense; exports._useUserThreads_experimental = _useUserThreads_experimental; exports._useUserThreadsSuspense_experimental = _useUserThreadsSuspense_experimental; exports._useAiChats = _useAiChats; exports._useAiChatsSuspense = _useAiChatsSuspense; exports._useAiChat = _useAiChat; exports._useAiChatSuspense = _useAiChatSuspense; exports._useAiChatMessages = _useAiChatMessages; exports._useAiChatMessagesSuspense = _useAiChatMessagesSuspense; 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.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.useSubscribeToThread = useSubscribeToThread; exports.useUnsubscribeFromThread = useUnsubscribeFromThread; exports.useThreadSubscription = useThreadSubscription; exports.useRoomThreadSubscription = useRoomThreadSubscription; exports.useHistoryVersionData = useHistoryVersionData; exports.useUpdateRoomSubscriptionSettings = useUpdateRoomSubscriptionSettings; exports.useOthersConnectionIdsSuspense = useOthersConnectionIdsSuspense; 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._useRoomSubscriptionSettings = _useRoomSubscriptionSettings; exports._useRoomSubscriptionSettingsSuspense = _useRoomSubscriptionSettingsSuspense; 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;
|
|
4786
|
+
//# sourceMappingURL=chunk-W2H56LB3.cjs.map
|