@liveblocks/react 3.8.0-tiptap1 → 3.8.1
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 +7 -7
- package/dist/_private.d.cts +2 -2
- package/dist/_private.d.ts +2 -2
- package/dist/_private.js +1 -1
- package/dist/{chunk-4GCS3365.cjs → chunk-2YWY7TUQ.cjs} +211 -73
- package/dist/chunk-2YWY7TUQ.cjs.map +1 -0
- package/dist/{chunk-ZU7C6DJE.cjs → chunk-BXCA7DCZ.cjs} +2 -2
- package/dist/{chunk-ZU7C6DJE.cjs.map → chunk-BXCA7DCZ.cjs.map} +1 -1
- package/dist/{chunk-OKYUUXNY.js → chunk-QY4EJ7GZ.js} +193 -55
- package/dist/chunk-QY4EJ7GZ.js.map +1 -0
- package/dist/{chunk-RCYYHORY.js → chunk-WMCNV6XL.js} +2 -2
- package/dist/index.cjs +6 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +6 -3
- package/dist/index.d.ts +6 -3
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/{room-BtcL74U0.d.cts → room-DkyB1sbB.d.cts} +108 -4
- package/dist/{room-BtcL74U0.d.ts → room-DkyB1sbB.d.ts} +108 -4
- 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-4GCS3365.cjs.map +0 -1
- package/dist/chunk-OKYUUXNY.js.map +0 -1
- /package/dist/{chunk-RCYYHORY.js.map → chunk-WMCNV6XL.js.map} +0 -0
|
@@ -39,23 +39,28 @@ function useRandom() {
|
|
|
39
39
|
var RegisterAiKnowledge = _react.memo.call(void 0, function RegisterAiKnowledge2(props) {
|
|
40
40
|
const layerId = _react.useId.call(void 0, );
|
|
41
41
|
const ai = useAi();
|
|
42
|
-
const { description, value } = props;
|
|
42
|
+
const { description, value, chatId } = props;
|
|
43
43
|
const [layerKey, setLayerKey] = _react.useState.call(void 0, );
|
|
44
44
|
_react.useEffect.call(void 0, () => {
|
|
45
|
-
const layerKey2 = ai.registerKnowledgeLayer(layerId);
|
|
45
|
+
const { layerKey: layerKey2, deregister } = ai.registerKnowledgeLayer(layerId, chatId);
|
|
46
46
|
setLayerKey(layerKey2);
|
|
47
47
|
return () => {
|
|
48
|
-
|
|
48
|
+
deregister();
|
|
49
49
|
setLayerKey(void 0);
|
|
50
50
|
};
|
|
51
|
-
}, [ai, layerId]);
|
|
51
|
+
}, [ai, layerId, chatId]);
|
|
52
52
|
const randomKey = useRandom();
|
|
53
53
|
const knowledgeKey = _nullishCoalesce(props.id, () => ( randomKey));
|
|
54
54
|
_react.useEffect.call(void 0, () => {
|
|
55
55
|
if (layerKey !== void 0) {
|
|
56
|
-
ai.updateKnowledge(
|
|
56
|
+
ai.updateKnowledge(
|
|
57
|
+
layerKey,
|
|
58
|
+
{ description, value },
|
|
59
|
+
knowledgeKey,
|
|
60
|
+
chatId
|
|
61
|
+
);
|
|
57
62
|
}
|
|
58
|
-
}, [ai, layerKey, knowledgeKey, description, value]);
|
|
63
|
+
}, [ai, layerKey, knowledgeKey, description, value, chatId]);
|
|
59
64
|
return null;
|
|
60
65
|
});
|
|
61
66
|
var RegisterAiTool = _react.memo.call(void 0, function RegisterAiTool2({
|
|
@@ -186,6 +191,7 @@ function useSignal(signal, selector, isEqual) {
|
|
|
186
191
|
|
|
187
192
|
|
|
188
193
|
|
|
194
|
+
|
|
189
195
|
// src/config.ts
|
|
190
196
|
var SECONDS = 1e3;
|
|
191
197
|
var MINUTES = 60 * SECONDS;
|
|
@@ -216,21 +222,6 @@ function ASYNC_OK(fieldOrData, data) {
|
|
|
216
222
|
}
|
|
217
223
|
}
|
|
218
224
|
|
|
219
|
-
// src/lib/itertools.ts
|
|
220
|
-
function find(it, predicate) {
|
|
221
|
-
for (const item of it) {
|
|
222
|
-
if (predicate(item)) return item;
|
|
223
|
-
}
|
|
224
|
-
return void 0;
|
|
225
|
-
}
|
|
226
|
-
function count(it, predicate) {
|
|
227
|
-
let total = 0;
|
|
228
|
-
for (const item of it) {
|
|
229
|
-
if (predicate(item)) total++;
|
|
230
|
-
}
|
|
231
|
-
return total;
|
|
232
|
-
}
|
|
233
|
-
|
|
234
225
|
// src/lib/ssr.ts
|
|
235
226
|
function ensureNotServerSide() {
|
|
236
227
|
if (typeof window === "undefined") {
|
|
@@ -324,6 +315,14 @@ function autobind(self) {
|
|
|
324
315
|
} while ((obj = Reflect.getPrototypeOf(obj)) && obj !== Object.prototype);
|
|
325
316
|
}
|
|
326
317
|
|
|
318
|
+
// src/lib/itertools.ts
|
|
319
|
+
function find(it, predicate) {
|
|
320
|
+
for (const item of it) {
|
|
321
|
+
if (predicate(item)) return item;
|
|
322
|
+
}
|
|
323
|
+
return void 0;
|
|
324
|
+
}
|
|
325
|
+
|
|
327
326
|
// src/lib/querying.ts
|
|
328
327
|
|
|
329
328
|
function makeThreadsFilter(query) {
|
|
@@ -347,10 +346,15 @@ function matchesOperator(value, op) {
|
|
|
347
346
|
return value === void 0;
|
|
348
347
|
} else if (_core.isStartsWithOperator.call(void 0, op)) {
|
|
349
348
|
return typeof value === "string" && value.startsWith(op.startsWith);
|
|
349
|
+
} else if (_core.isNumberOperator.call(void 0, op)) {
|
|
350
|
+
return typeof value === "number" && matchesNumberOperator(value, op);
|
|
350
351
|
} else {
|
|
351
352
|
return value === op;
|
|
352
353
|
}
|
|
353
354
|
}
|
|
355
|
+
function matchesNumberOperator(value, op) {
|
|
356
|
+
return (op.lt === void 0 || value < op.lt) && (op.gt === void 0 || value > op.gt) && (op.lte === void 0 || value <= op.lte) && (op.gte === void 0 || value >= op.gte);
|
|
357
|
+
}
|
|
354
358
|
function makeInboxNotificationsFilter(query) {
|
|
355
359
|
return (inboxNotification) => matchesInboxNotificationsQuery(inboxNotification, query);
|
|
356
360
|
}
|
|
@@ -722,6 +726,21 @@ function createStore_forNotifications() {
|
|
|
722
726
|
upsert
|
|
723
727
|
};
|
|
724
728
|
}
|
|
729
|
+
function createStore_forUnreadNotificationsCount() {
|
|
730
|
+
const baseSignal = new (0, _core.MutableSignal)(
|
|
731
|
+
/* @__PURE__ */ new Map()
|
|
732
|
+
);
|
|
733
|
+
function update(queryKey, count) {
|
|
734
|
+
baseSignal.mutate((lut) => {
|
|
735
|
+
lut.set(queryKey, count);
|
|
736
|
+
});
|
|
737
|
+
}
|
|
738
|
+
return {
|
|
739
|
+
signal: _core.DerivedSignal.from(baseSignal, (c) => Object.fromEntries(c)),
|
|
740
|
+
// Mutations
|
|
741
|
+
update
|
|
742
|
+
};
|
|
743
|
+
}
|
|
725
744
|
function createStore_forSubscriptions(updates, threads) {
|
|
726
745
|
const baseSignal = new (0, _core.MutableSignal)(/* @__PURE__ */ new Map());
|
|
727
746
|
function applyDelta(newSubscriptions, deletedSubscriptions) {
|
|
@@ -914,6 +933,7 @@ var UmbrellaStore = class {
|
|
|
914
933
|
|
|
915
934
|
|
|
916
935
|
|
|
936
|
+
|
|
917
937
|
//
|
|
918
938
|
// Output signals.
|
|
919
939
|
// (Readonly, clean, consistent. With optimistic updates applied.)
|
|
@@ -958,6 +978,7 @@ var UmbrellaStore = class {
|
|
|
958
978
|
this.optimisticUpdates.signal
|
|
959
979
|
);
|
|
960
980
|
this.historyVersions = createStore_forHistoryVersions();
|
|
981
|
+
this.unreadNotificationsCount = createStore_forUnreadNotificationsCount();
|
|
961
982
|
const threadifications = _core.DerivedSignal.from(
|
|
962
983
|
this.threads.signal,
|
|
963
984
|
this.notifications.signal,
|
|
@@ -1114,6 +1135,35 @@ var UmbrellaStore = class {
|
|
|
1114
1135
|
};
|
|
1115
1136
|
}
|
|
1116
1137
|
);
|
|
1138
|
+
const unreadNotificationsCount = new (0, _core.DefaultMap)(
|
|
1139
|
+
(queryKey) => {
|
|
1140
|
+
const query = JSON.parse(queryKey);
|
|
1141
|
+
const resource = new SinglePageResource(async () => {
|
|
1142
|
+
const result = await this.#client.getUnreadInboxNotificationsCount({
|
|
1143
|
+
query
|
|
1144
|
+
});
|
|
1145
|
+
this.unreadNotificationsCount.update(queryKey, result);
|
|
1146
|
+
});
|
|
1147
|
+
const signal = _core.DerivedSignal.from(
|
|
1148
|
+
() => {
|
|
1149
|
+
const result = resource.get();
|
|
1150
|
+
if (result.isLoading || result.error) {
|
|
1151
|
+
return result;
|
|
1152
|
+
} else {
|
|
1153
|
+
return ASYNC_OK(
|
|
1154
|
+
"count",
|
|
1155
|
+
_core.nn.call(void 0, this.unreadNotificationsCount.signal.get()[queryKey])
|
|
1156
|
+
);
|
|
1157
|
+
}
|
|
1158
|
+
},
|
|
1159
|
+
_core.shallow
|
|
1160
|
+
);
|
|
1161
|
+
return {
|
|
1162
|
+
signal,
|
|
1163
|
+
waitUntilLoaded: resource.waitUntilLoaded
|
|
1164
|
+
};
|
|
1165
|
+
}
|
|
1166
|
+
);
|
|
1117
1167
|
const roomSubscriptionSettingsByRoomId = new (0, _core.DefaultMap)(
|
|
1118
1168
|
(roomId) => {
|
|
1119
1169
|
const resource = new SinglePageResource(async () => {
|
|
@@ -1262,6 +1312,7 @@ var UmbrellaStore = class {
|
|
|
1262
1312
|
loadingUserThreads,
|
|
1263
1313
|
notifications,
|
|
1264
1314
|
loadingNotifications,
|
|
1315
|
+
unreadNotificationsCount,
|
|
1265
1316
|
roomSubscriptionSettingsByRoomId,
|
|
1266
1317
|
versionsByRoomId,
|
|
1267
1318
|
notificationSettings,
|
|
@@ -1469,6 +1520,14 @@ var UmbrellaStore = class {
|
|
|
1469
1520
|
result.subscriptions.deleted
|
|
1470
1521
|
);
|
|
1471
1522
|
}
|
|
1523
|
+
async fetchUnreadNotificationsCount(queryKey, signal) {
|
|
1524
|
+
const query = JSON.parse(queryKey);
|
|
1525
|
+
const result = await this.#client.getUnreadInboxNotificationsCount({
|
|
1526
|
+
query,
|
|
1527
|
+
signal
|
|
1528
|
+
});
|
|
1529
|
+
this.unreadNotificationsCount.update(queryKey, result);
|
|
1530
|
+
}
|
|
1472
1531
|
async fetchRoomThreadsDeltaUpdate(roomId, signal) {
|
|
1473
1532
|
const lastRequestedAt = this.#roomThreadsLastRequestedAtByRoom.get(roomId);
|
|
1474
1533
|
if (lastRequestedAt === void 0) {
|
|
@@ -1983,16 +2042,10 @@ var _umbrellaStores = /* @__PURE__ */ new WeakMap();
|
|
|
1983
2042
|
var _extras = /* @__PURE__ */ new WeakMap();
|
|
1984
2043
|
var _bundles = /* @__PURE__ */ new WeakMap();
|
|
1985
2044
|
function selectorFor_useUnreadInboxNotificationsCount(result) {
|
|
1986
|
-
if (!result.
|
|
2045
|
+
if (!("count" in result) || result.count === void 0) {
|
|
1987
2046
|
return result;
|
|
1988
2047
|
}
|
|
1989
|
-
return ASYNC_OK(
|
|
1990
|
-
"count",
|
|
1991
|
-
count(
|
|
1992
|
-
result.inboxNotifications,
|
|
1993
|
-
(n) => n.readAt === null || n.readAt < n.notifiedAt
|
|
1994
|
-
)
|
|
1995
|
-
);
|
|
2048
|
+
return ASYNC_OK("count", result.count);
|
|
1996
2049
|
}
|
|
1997
2050
|
function selectorFor_useUser(state, userId) {
|
|
1998
2051
|
if (state === void 0 || _optionalChain([state, 'optionalAccess', _10 => _10.isLoading])) {
|
|
@@ -2091,6 +2144,22 @@ function makeLiveblocksExtrasForClient(client) {
|
|
|
2091
2144
|
config.NOTIFICATIONS_POLL_INTERVAL,
|
|
2092
2145
|
{ maxStaleTimeMs: config.NOTIFICATIONS_MAX_STALE_TIME }
|
|
2093
2146
|
);
|
|
2147
|
+
const unreadNotificationsCountPollersByQueryKey = new (0, _core.DefaultMap)(
|
|
2148
|
+
(queryKey) => _core.makePoller.call(void 0,
|
|
2149
|
+
async (signal) => {
|
|
2150
|
+
try {
|
|
2151
|
+
return await store.fetchUnreadNotificationsCount(queryKey, signal);
|
|
2152
|
+
} catch (err) {
|
|
2153
|
+
_core.console.warn(
|
|
2154
|
+
`Polling unread inbox notifications countfailed: ${String(err)}`
|
|
2155
|
+
);
|
|
2156
|
+
throw err;
|
|
2157
|
+
}
|
|
2158
|
+
},
|
|
2159
|
+
config.NOTIFICATIONS_POLL_INTERVAL,
|
|
2160
|
+
{ maxStaleTimeMs: config.NOTIFICATIONS_MAX_STALE_TIME }
|
|
2161
|
+
)
|
|
2162
|
+
);
|
|
2094
2163
|
const userThreadsPoller = _core.makePoller.call(void 0,
|
|
2095
2164
|
async (signal) => {
|
|
2096
2165
|
try {
|
|
@@ -2121,7 +2190,8 @@ function makeLiveblocksExtrasForClient(client) {
|
|
|
2121
2190
|
store,
|
|
2122
2191
|
notificationsPoller,
|
|
2123
2192
|
userThreadsPoller,
|
|
2124
|
-
notificationSettingsPoller
|
|
2193
|
+
notificationSettingsPoller,
|
|
2194
|
+
unreadNotificationsCountPollersByQueryKey
|
|
2125
2195
|
};
|
|
2126
2196
|
}
|
|
2127
2197
|
function makeLiveblocksContextBundle(client) {
|
|
@@ -2151,6 +2221,7 @@ function makeLiveblocksContextBundle(client) {
|
|
|
2151
2221
|
useAiChats,
|
|
2152
2222
|
useAiChat,
|
|
2153
2223
|
useAiChatMessages,
|
|
2224
|
+
useAiChatStatus,
|
|
2154
2225
|
useCreateAiChat,
|
|
2155
2226
|
useDeleteAiChat,
|
|
2156
2227
|
useSendAiMessage,
|
|
@@ -2170,6 +2241,7 @@ function makeLiveblocksContextBundle(client) {
|
|
|
2170
2241
|
useAiChats: useAiChatsSuspense,
|
|
2171
2242
|
useAiChat: useAiChatSuspense,
|
|
2172
2243
|
useAiChatMessages: useAiChatMessagesSuspense,
|
|
2244
|
+
useAiChatStatus,
|
|
2173
2245
|
useCreateAiChat,
|
|
2174
2246
|
useDeleteAiChat,
|
|
2175
2247
|
useSendAiMessage,
|
|
@@ -2223,19 +2295,39 @@ function useInboxNotificationsSuspense_withClient(client, options) {
|
|
|
2223
2295
|
return result;
|
|
2224
2296
|
}
|
|
2225
2297
|
function useUnreadInboxNotificationsCount_withClient(client, options) {
|
|
2226
|
-
|
|
2227
|
-
|
|
2298
|
+
const { store, unreadNotificationsCountPollersByQueryKey: pollers } = getLiveblocksExtrasForClient(client);
|
|
2299
|
+
const queryKey = makeInboxNotificationsQueryKey(_optionalChain([options, 'optionalAccess', _15 => _15.query]));
|
|
2300
|
+
const poller = pollers.getOrCreate(queryKey);
|
|
2301
|
+
_react.useEffect.call(void 0,
|
|
2302
|
+
() => void store.outputs.unreadNotificationsCount.getOrCreate(queryKey).waitUntilLoaded()
|
|
2303
|
+
// NOTE: Deliberately *not* using a dependency array here!
|
|
2304
|
+
//
|
|
2305
|
+
// It is important to call waitUntil on *every* render.
|
|
2306
|
+
// This is harmless though, on most renders, except:
|
|
2307
|
+
// 1. The very first render, in which case we'll want to trigger the initial page fetch.
|
|
2308
|
+
// 2. All other subsequent renders now "just" return the same promise (a quick operation).
|
|
2309
|
+
// 3. If ever the promise would fail, then after 5 seconds it would reset, and on the very
|
|
2310
|
+
// *next* render after that, a *new* fetch/promise will get created.
|
|
2311
|
+
);
|
|
2312
|
+
_react.useEffect.call(void 0, () => {
|
|
2313
|
+
poller.inc();
|
|
2314
|
+
poller.pollNowIfStale();
|
|
2315
|
+
return () => {
|
|
2316
|
+
poller.dec();
|
|
2317
|
+
};
|
|
2318
|
+
}, [poller]);
|
|
2319
|
+
return useSignal(
|
|
2320
|
+
store.outputs.unreadNotificationsCount.getOrCreate(queryKey).signal,
|
|
2228
2321
|
selectorFor_useUnreadInboxNotificationsCount,
|
|
2229
|
-
_core.shallow
|
|
2230
|
-
options
|
|
2322
|
+
_core.shallow
|
|
2231
2323
|
);
|
|
2232
2324
|
}
|
|
2233
2325
|
function useUnreadInboxNotificationsCountSuspense_withClient(client, options) {
|
|
2234
2326
|
ensureNotServerSide();
|
|
2235
2327
|
const store = getLiveblocksExtrasForClient(client).store;
|
|
2236
|
-
const queryKey = makeInboxNotificationsQueryKey(_optionalChain([options, 'optionalAccess',
|
|
2328
|
+
const queryKey = makeInboxNotificationsQueryKey(_optionalChain([options, 'optionalAccess', _16 => _16.query]));
|
|
2237
2329
|
use(
|
|
2238
|
-
store.outputs.
|
|
2330
|
+
store.outputs.unreadNotificationsCount.getOrCreate(queryKey).waitUntilLoaded()
|
|
2239
2331
|
);
|
|
2240
2332
|
const result = useUnreadInboxNotificationsCount_withClient(client, options);
|
|
2241
2333
|
_core.assert.call(void 0, !result.isLoading, "Did not expect loading");
|
|
@@ -2245,7 +2337,7 @@ function useUnreadInboxNotificationsCountSuspense_withClient(client, options) {
|
|
|
2245
2337
|
function useMarkInboxNotificationAsRead_withClient(client) {
|
|
2246
2338
|
return _react.useCallback.call(void 0,
|
|
2247
2339
|
(inboxNotificationId) => {
|
|
2248
|
-
const { store } = getLiveblocksExtrasForClient(client);
|
|
2340
|
+
const { store, unreadNotificationsCountPollersByQueryKey } = getLiveblocksExtrasForClient(client);
|
|
2249
2341
|
const readAt = /* @__PURE__ */ new Date();
|
|
2250
2342
|
const optimisticId = store.optimisticUpdates.add({
|
|
2251
2343
|
type: "mark-inbox-notification-as-read",
|
|
@@ -2259,6 +2351,10 @@ function useMarkInboxNotificationAsRead_withClient(client) {
|
|
|
2259
2351
|
readAt,
|
|
2260
2352
|
optimisticId
|
|
2261
2353
|
);
|
|
2354
|
+
for (const poller of unreadNotificationsCountPollersByQueryKey.values()) {
|
|
2355
|
+
poller.markAsStale();
|
|
2356
|
+
poller.pollNowIfStale();
|
|
2357
|
+
}
|
|
2262
2358
|
},
|
|
2263
2359
|
(err) => {
|
|
2264
2360
|
store.optimisticUpdates.remove(optimisticId);
|
|
@@ -2277,7 +2373,7 @@ function useMarkInboxNotificationAsRead_withClient(client) {
|
|
|
2277
2373
|
}
|
|
2278
2374
|
function useMarkAllInboxNotificationsAsRead_withClient(client) {
|
|
2279
2375
|
return _react.useCallback.call(void 0, () => {
|
|
2280
|
-
const { store } = getLiveblocksExtrasForClient(client);
|
|
2376
|
+
const { store, unreadNotificationsCountPollersByQueryKey } = getLiveblocksExtrasForClient(client);
|
|
2281
2377
|
const readAt = /* @__PURE__ */ new Date();
|
|
2282
2378
|
const optimisticId = store.optimisticUpdates.add({
|
|
2283
2379
|
type: "mark-all-inbox-notifications-as-read",
|
|
@@ -2286,6 +2382,10 @@ function useMarkAllInboxNotificationsAsRead_withClient(client) {
|
|
|
2286
2382
|
client.markAllInboxNotificationsAsRead().then(
|
|
2287
2383
|
() => {
|
|
2288
2384
|
store.markAllInboxNotificationsRead(optimisticId, readAt);
|
|
2385
|
+
for (const poller of unreadNotificationsCountPollersByQueryKey.values()) {
|
|
2386
|
+
poller.markAsStale();
|
|
2387
|
+
poller.pollNowIfStale();
|
|
2388
|
+
}
|
|
2289
2389
|
},
|
|
2290
2390
|
(err) => {
|
|
2291
2391
|
store.optimisticUpdates.remove(optimisticId);
|
|
@@ -2301,7 +2401,7 @@ function useMarkAllInboxNotificationsAsRead_withClient(client) {
|
|
|
2301
2401
|
function useDeleteInboxNotification_withClient(client) {
|
|
2302
2402
|
return _react.useCallback.call(void 0,
|
|
2303
2403
|
(inboxNotificationId) => {
|
|
2304
|
-
const { store } = getLiveblocksExtrasForClient(client);
|
|
2404
|
+
const { store, unreadNotificationsCountPollersByQueryKey } = getLiveblocksExtrasForClient(client);
|
|
2305
2405
|
const deletedAt = /* @__PURE__ */ new Date();
|
|
2306
2406
|
const optimisticId = store.optimisticUpdates.add({
|
|
2307
2407
|
type: "delete-inbox-notification",
|
|
@@ -2311,6 +2411,10 @@ function useDeleteInboxNotification_withClient(client) {
|
|
|
2311
2411
|
client.deleteInboxNotification(inboxNotificationId).then(
|
|
2312
2412
|
() => {
|
|
2313
2413
|
store.deleteInboxNotification(inboxNotificationId, optimisticId);
|
|
2414
|
+
for (const poller of unreadNotificationsCountPollersByQueryKey.values()) {
|
|
2415
|
+
poller.markAsStale();
|
|
2416
|
+
poller.pollNowIfStale();
|
|
2417
|
+
}
|
|
2314
2418
|
},
|
|
2315
2419
|
(err) => {
|
|
2316
2420
|
store.optimisticUpdates.remove(optimisticId);
|
|
@@ -2326,7 +2430,7 @@ function useDeleteInboxNotification_withClient(client) {
|
|
|
2326
2430
|
}
|
|
2327
2431
|
function useDeleteAllInboxNotifications_withClient(client) {
|
|
2328
2432
|
return _react.useCallback.call(void 0, () => {
|
|
2329
|
-
const { store } = getLiveblocksExtrasForClient(client);
|
|
2433
|
+
const { store, unreadNotificationsCountPollersByQueryKey } = getLiveblocksExtrasForClient(client);
|
|
2330
2434
|
const deletedAt = /* @__PURE__ */ new Date();
|
|
2331
2435
|
const optimisticId = store.optimisticUpdates.add({
|
|
2332
2436
|
type: "delete-all-inbox-notifications",
|
|
@@ -2335,6 +2439,10 @@ function useDeleteAllInboxNotifications_withClient(client) {
|
|
|
2335
2439
|
client.deleteAllInboxNotifications().then(
|
|
2336
2440
|
() => {
|
|
2337
2441
|
store.deleteAllInboxNotifications(optimisticId);
|
|
2442
|
+
for (const poller of unreadNotificationsCountPollersByQueryKey.values()) {
|
|
2443
|
+
poller.markAsStale();
|
|
2444
|
+
poller.pollNowIfStale();
|
|
2445
|
+
}
|
|
2338
2446
|
},
|
|
2339
2447
|
(err) => {
|
|
2340
2448
|
store.optimisticUpdates.remove(optimisticId);
|
|
@@ -2388,7 +2496,7 @@ function useUpdateNotificationSettings_withClient(client) {
|
|
|
2388
2496
|
store.optimisticUpdates.remove(optimisticUpdateId);
|
|
2389
2497
|
if (err instanceof _core.HttpError) {
|
|
2390
2498
|
if (err.status === 422) {
|
|
2391
|
-
const msg = [_optionalChain([err, 'access',
|
|
2499
|
+
const msg = [_optionalChain([err, 'access', _17 => _17.details, 'optionalAccess', _18 => _18.error]), _optionalChain([err, 'access', _19 => _19.details, 'optionalAccess', _20 => _20.reason])].filter(Boolean).join("\n");
|
|
2392
2500
|
_core.console.error(msg);
|
|
2393
2501
|
}
|
|
2394
2502
|
client[_core.kInternal].emitError(
|
|
@@ -2623,7 +2731,7 @@ function useGroupInfoSuspense_withClient(client, groupId) {
|
|
|
2623
2731
|
function useAiChats(options) {
|
|
2624
2732
|
const client = useClient();
|
|
2625
2733
|
const store = getUmbrellaStoreForClient(client);
|
|
2626
|
-
const queryKey = makeAiChatsQueryKey(_optionalChain([options, 'optionalAccess',
|
|
2734
|
+
const queryKey = makeAiChatsQueryKey(_optionalChain([options, 'optionalAccess', _21 => _21.query]));
|
|
2627
2735
|
useEnsureAiConnection(client);
|
|
2628
2736
|
_react.useEffect.call(void 0,
|
|
2629
2737
|
() => void store.outputs.aiChats.getOrCreate(queryKey).waitUntilLoaded()
|
|
@@ -2647,7 +2755,7 @@ function useAiChatsSuspense(options) {
|
|
|
2647
2755
|
const client = useClient();
|
|
2648
2756
|
const store = getUmbrellaStoreForClient(client);
|
|
2649
2757
|
useEnsureAiConnection(client);
|
|
2650
|
-
const queryKey = makeAiChatsQueryKey(_optionalChain([options, 'optionalAccess',
|
|
2758
|
+
const queryKey = makeAiChatsQueryKey(_optionalChain([options, 'optionalAccess', _22 => _22.query]));
|
|
2651
2759
|
use(store.outputs.aiChats.getOrCreate(queryKey).waitUntilLoaded());
|
|
2652
2760
|
const result = useAiChats(options);
|
|
2653
2761
|
_core.assert.call(void 0, !result.error, "Did not expect error");
|
|
@@ -2659,7 +2767,7 @@ function useAiChatMessages(chatId, options) {
|
|
|
2659
2767
|
const store = getUmbrellaStoreForClient(client);
|
|
2660
2768
|
useEnsureAiConnection(client);
|
|
2661
2769
|
_react.useEffect.call(void 0,
|
|
2662
|
-
() => void store.outputs.messagesByChatId.getOrCreate(chatId).getOrCreate(_nullishCoalesce(_optionalChain([options, 'optionalAccess',
|
|
2770
|
+
() => void store.outputs.messagesByChatId.getOrCreate(chatId).getOrCreate(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _23 => _23.branchId]), () => ( null))).waitUntilLoaded()
|
|
2663
2771
|
// NOTE: Deliberately *not* using a dependency array here!
|
|
2664
2772
|
//
|
|
2665
2773
|
// It is important to call waitUntil on *every* render.
|
|
@@ -2670,7 +2778,7 @@ function useAiChatMessages(chatId, options) {
|
|
|
2670
2778
|
// *next* render after that, a *new* fetch/promise will get created.
|
|
2671
2779
|
);
|
|
2672
2780
|
return useSignal(
|
|
2673
|
-
store.outputs.messagesByChatId.getOrCreate(chatId).getOrCreate(_nullishCoalesce(_optionalChain([options, 'optionalAccess',
|
|
2781
|
+
store.outputs.messagesByChatId.getOrCreate(chatId).getOrCreate(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _24 => _24.branchId]), () => ( null))).signal
|
|
2674
2782
|
);
|
|
2675
2783
|
}
|
|
2676
2784
|
function useAiChatMessagesSuspense(chatId, options) {
|
|
@@ -2679,7 +2787,7 @@ function useAiChatMessagesSuspense(chatId, options) {
|
|
|
2679
2787
|
const store = getUmbrellaStoreForClient(client);
|
|
2680
2788
|
useEnsureAiConnection(client);
|
|
2681
2789
|
use(
|
|
2682
|
-
store.outputs.messagesByChatId.getOrCreate(chatId).getOrCreate(_nullishCoalesce(_optionalChain([options, 'optionalAccess',
|
|
2790
|
+
store.outputs.messagesByChatId.getOrCreate(chatId).getOrCreate(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _25 => _25.branchId]), () => ( null))).waitUntilLoaded()
|
|
2683
2791
|
);
|
|
2684
2792
|
const result = useAiChatMessages(chatId, options);
|
|
2685
2793
|
_core.assert.call(void 0, !result.error, "Did not expect error");
|
|
@@ -2746,6 +2854,43 @@ function useDeleteAiChat() {
|
|
|
2746
2854
|
[client]
|
|
2747
2855
|
);
|
|
2748
2856
|
}
|
|
2857
|
+
var LOADING = Object.freeze({ status: "loading" });
|
|
2858
|
+
var IDLE = Object.freeze({ status: "idle" });
|
|
2859
|
+
function useAiChatStatus(chatId, branchId) {
|
|
2860
|
+
const client = useClient();
|
|
2861
|
+
const store = getUmbrellaStoreForClient(client);
|
|
2862
|
+
useEnsureAiConnection(client);
|
|
2863
|
+
_react.useEffect.call(void 0,
|
|
2864
|
+
() => void store.outputs.messagesByChatId.getOrCreate(chatId).getOrCreate(_nullishCoalesce(branchId, () => ( null))).waitUntilLoaded()
|
|
2865
|
+
);
|
|
2866
|
+
return useSignal(
|
|
2867
|
+
// Signal
|
|
2868
|
+
store.outputs.messagesByChatId.getOrCreate(chatId).getOrCreate(_nullishCoalesce(branchId, () => ( null))).signal,
|
|
2869
|
+
// Selector
|
|
2870
|
+
(result) => {
|
|
2871
|
+
if (result.isLoading) return LOADING;
|
|
2872
|
+
if (result.error) return IDLE;
|
|
2873
|
+
const messages = result.messages;
|
|
2874
|
+
const lastMessage = messages[messages.length - 1];
|
|
2875
|
+
if (_optionalChain([lastMessage, 'optionalAccess', _26 => _26.role]) !== "assistant") return IDLE;
|
|
2876
|
+
if (lastMessage.status !== "generating" && lastMessage.status !== "awaiting-tool")
|
|
2877
|
+
return IDLE;
|
|
2878
|
+
const contentSoFar = lastMessage.contentSoFar;
|
|
2879
|
+
const lastPart = contentSoFar[contentSoFar.length - 1];
|
|
2880
|
+
if (_optionalChain([lastPart, 'optionalAccess', _27 => _27.type]) === "tool-invocation") {
|
|
2881
|
+
return {
|
|
2882
|
+
status: "generating",
|
|
2883
|
+
partType: "tool-invocation",
|
|
2884
|
+
toolName: lastPart.name
|
|
2885
|
+
};
|
|
2886
|
+
} else {
|
|
2887
|
+
return { status: "generating", partType: _optionalChain([lastPart, 'optionalAccess', _28 => _28.type]) };
|
|
2888
|
+
}
|
|
2889
|
+
},
|
|
2890
|
+
// Consider { status: "generating", partType: "text" } and { status: "generating", partType: "text" } equal
|
|
2891
|
+
_core.shallow
|
|
2892
|
+
);
|
|
2893
|
+
}
|
|
2749
2894
|
function useSendAiMessage(chatId, options) {
|
|
2750
2895
|
const client = useClient();
|
|
2751
2896
|
return _react.useCallback.call(void 0,
|
|
@@ -2762,7 +2907,7 @@ function useSendAiMessage(chatId, options) {
|
|
|
2762
2907
|
"chatId must be provided to either `useSendAiMessage` or its returned function."
|
|
2763
2908
|
)));
|
|
2764
2909
|
const messages = client[_core.kInternal].ai.signals.getChatMessagesForBranch\u03A3(resolvedChatId).get();
|
|
2765
|
-
if (process.env.NODE_ENV !== "production" && !messageOptionsCopilotId && !_optionalChain([options, 'optionalAccess',
|
|
2910
|
+
if (process.env.NODE_ENV !== "production" && !messageOptionsCopilotId && !_optionalChain([options, 'optionalAccess', _29 => _29.copilotId])) {
|
|
2766
2911
|
_core.console.warn(
|
|
2767
2912
|
`No copilot ID was provided to useSendAiMessage when sending the message "${messageText.slice(
|
|
2768
2913
|
0,
|
|
@@ -2774,8 +2919,8 @@ To ensure the correct copilot ID is used, specify it either through the hook as
|
|
|
2774
2919
|
)}\u2026", copilotId: "co_xxx" })'`
|
|
2775
2920
|
);
|
|
2776
2921
|
}
|
|
2777
|
-
const resolvedCopilotId = _nullishCoalesce(_nullishCoalesce(messageOptionsCopilotId, () => ( _optionalChain([options, 'optionalAccess',
|
|
2778
|
-
const lastMessageId = _nullishCoalesce(_optionalChain([messages, 'access',
|
|
2922
|
+
const resolvedCopilotId = _nullishCoalesce(_nullishCoalesce(messageOptionsCopilotId, () => ( _optionalChain([options, 'optionalAccess', _30 => _30.copilotId]))), () => ( client[_core.kInternal].ai.getLastUsedCopilotId(resolvedChatId)));
|
|
2923
|
+
const lastMessageId = _nullishCoalesce(_optionalChain([messages, 'access', _31 => _31[messages.length - 1], 'optionalAccess', _32 => _32.id]), () => ( null));
|
|
2779
2924
|
const content = [{ type: "text", text: messageText }];
|
|
2780
2925
|
const newMessageId = client[_core.kInternal].ai[_core.kInternal].context.messagesStore.createOptimistically(
|
|
2781
2926
|
resolvedChatId,
|
|
@@ -2795,22 +2940,14 @@ To ensure the correct copilot ID is used, specify it either through the hook as
|
|
|
2795
2940
|
{ id: newMessageId, parentMessageId: lastMessageId, content },
|
|
2796
2941
|
targetMessageId,
|
|
2797
2942
|
{
|
|
2798
|
-
stream: _nullishCoalesce(messageOptions.stream, () => ( _optionalChain([options, 'optionalAccess',
|
|
2943
|
+
stream: _nullishCoalesce(messageOptions.stream, () => ( _optionalChain([options, 'optionalAccess', _33 => _33.stream]))),
|
|
2799
2944
|
copilotId: resolvedCopilotId,
|
|
2800
|
-
timeout: _nullishCoalesce(messageOptions.timeout, () => ( _optionalChain([options, 'optionalAccess',
|
|
2801
|
-
knowledge: _nullishCoalesce(messageOptions.knowledge, () => ( _optionalChain([options, 'optionalAccess', _31 => _31.knowledge])))
|
|
2945
|
+
timeout: _nullishCoalesce(messageOptions.timeout, () => ( _optionalChain([options, 'optionalAccess', _34 => _34.timeout])))
|
|
2802
2946
|
}
|
|
2803
2947
|
);
|
|
2804
2948
|
return newMessage;
|
|
2805
2949
|
},
|
|
2806
|
-
[
|
|
2807
|
-
client,
|
|
2808
|
-
chatId,
|
|
2809
|
-
_optionalChain([options, 'optionalAccess', _32 => _32.copilotId]),
|
|
2810
|
-
_optionalChain([options, 'optionalAccess', _33 => _33.stream]),
|
|
2811
|
-
_optionalChain([options, 'optionalAccess', _34 => _34.timeout]),
|
|
2812
|
-
_optionalChain([options, 'optionalAccess', _35 => _35.knowledge])
|
|
2813
|
-
]
|
|
2950
|
+
[client, chatId, _optionalChain([options, 'optionalAccess', _35 => _35.copilotId]), _optionalChain([options, 'optionalAccess', _36 => _36.stream]), _optionalChain([options, 'optionalAccess', _37 => _37.timeout])]
|
|
2814
2951
|
);
|
|
2815
2952
|
}
|
|
2816
2953
|
function createSharedContext(client) {
|
|
@@ -2845,7 +2982,7 @@ function createSharedContext(client) {
|
|
|
2845
2982
|
}
|
|
2846
2983
|
function useEnsureNoLiveblocksProvider(options) {
|
|
2847
2984
|
const existing = useClientOrNull();
|
|
2848
|
-
if (!_optionalChain([options, 'optionalAccess',
|
|
2985
|
+
if (!_optionalChain([options, 'optionalAccess', _38 => _38.allowNesting]) && existing !== null) {
|
|
2849
2986
|
throw new Error(
|
|
2850
2987
|
"You cannot nest multiple LiveblocksProvider instances in the same React tree."
|
|
2851
2988
|
);
|
|
@@ -3009,7 +3146,7 @@ var _useAiChatSuspense = useAiChatSuspense;
|
|
|
3009
3146
|
var _useAiChatMessages = useAiChatMessages;
|
|
3010
3147
|
var _useAiChatMessagesSuspense = useAiChatMessagesSuspense;
|
|
3011
3148
|
function useSyncStatus_withClient(client, options) {
|
|
3012
|
-
const smooth = useInitial(_nullishCoalesce(_optionalChain([options, 'optionalAccess',
|
|
3149
|
+
const smooth = useInitial(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _39 => _39.smooth]), () => ( false)));
|
|
3013
3150
|
if (smooth) {
|
|
3014
3151
|
return useSyncStatusSmooth_withClient(client);
|
|
3015
3152
|
} else {
|
|
@@ -3188,8 +3325,8 @@ function makeRoomExtrasForClient(client) {
|
|
|
3188
3325
|
if (innerError.status === 403) {
|
|
3189
3326
|
const detailedMessage = [
|
|
3190
3327
|
innerError.message,
|
|
3191
|
-
_optionalChain([innerError, 'access',
|
|
3192
|
-
_optionalChain([innerError, 'access',
|
|
3328
|
+
_optionalChain([innerError, 'access', _40 => _40.details, 'optionalAccess', _41 => _41.suggestion]),
|
|
3329
|
+
_optionalChain([innerError, 'access', _42 => _42.details, 'optionalAccess', _43 => _43.docs])
|
|
3193
3330
|
].filter(Boolean).join("\n");
|
|
3194
3331
|
_core.console.error(detailedMessage);
|
|
3195
3332
|
}
|
|
@@ -3484,7 +3621,7 @@ function RoomProviderInner(props) {
|
|
|
3484
3621
|
}
|
|
3485
3622
|
function useRoom(options) {
|
|
3486
3623
|
const room = useRoomOrNull();
|
|
3487
|
-
if (room === null && !_optionalChain([options, 'optionalAccess',
|
|
3624
|
+
if (room === null && !_optionalChain([options, 'optionalAccess', _44 => _44.allowOutsideRoom])) {
|
|
3488
3625
|
throw new Error("RoomProvider is missing from the React tree.");
|
|
3489
3626
|
}
|
|
3490
3627
|
return room;
|
|
@@ -3834,7 +3971,7 @@ function useCreateRoomThread(roomId) {
|
|
|
3834
3971
|
thread: newThread,
|
|
3835
3972
|
roomId
|
|
3836
3973
|
});
|
|
3837
|
-
const attachmentIds = _optionalChain([attachments, 'optionalAccess',
|
|
3974
|
+
const attachmentIds = _optionalChain([attachments, 'optionalAccess', _45 => _45.map, 'call', _46 => _46((attachment) => attachment.id)]);
|
|
3838
3975
|
client[_core.kInternal].httpClient.createThread({
|
|
3839
3976
|
roomId,
|
|
3840
3977
|
threadId,
|
|
@@ -3874,7 +4011,7 @@ function useDeleteRoomThread(roomId) {
|
|
|
3874
4011
|
const { store, onMutationFailure } = getRoomExtrasForClient(client);
|
|
3875
4012
|
const userId = getCurrentUserId(client);
|
|
3876
4013
|
const existing = store.outputs.threads.get().get(threadId);
|
|
3877
|
-
if (_optionalChain([existing, 'optionalAccess',
|
|
4014
|
+
if (_optionalChain([existing, 'optionalAccess', _47 => _47.comments, 'optionalAccess', _48 => _48[0], 'optionalAccess', _49 => _49.userId]) !== userId) {
|
|
3878
4015
|
throw new Error("Only the thread creator can delete the thread");
|
|
3879
4016
|
}
|
|
3880
4017
|
const optimisticId = store.optimisticUpdates.add({
|
|
@@ -3962,7 +4099,7 @@ function useCreateRoomComment(roomId) {
|
|
|
3962
4099
|
type: "create-comment",
|
|
3963
4100
|
comment
|
|
3964
4101
|
});
|
|
3965
|
-
const attachmentIds = _optionalChain([attachments, 'optionalAccess',
|
|
4102
|
+
const attachmentIds = _optionalChain([attachments, 'optionalAccess', _50 => _50.map, 'call', _51 => _51((attachment) => attachment.id)]);
|
|
3966
4103
|
client[_core.kInternal].httpClient.createComment({ roomId, threadId, commentId, body, attachmentIds }).then(
|
|
3967
4104
|
(newComment) => {
|
|
3968
4105
|
store.createComment(newComment, optimisticId);
|
|
@@ -4018,7 +4155,7 @@ function useEditRoomComment(roomId) {
|
|
|
4018
4155
|
attachments: _nullishCoalesce(attachments, () => ( []))
|
|
4019
4156
|
}
|
|
4020
4157
|
});
|
|
4021
|
-
const attachmentIds = _optionalChain([attachments, 'optionalAccess',
|
|
4158
|
+
const attachmentIds = _optionalChain([attachments, 'optionalAccess', _52 => _52.map, 'call', _53 => _53((attachment) => attachment.id)]);
|
|
4022
4159
|
client[_core.kInternal].httpClient.editComment({ roomId, threadId, commentId, body, attachmentIds }).then(
|
|
4023
4160
|
(editedComment) => {
|
|
4024
4161
|
store.editComment(threadId, optimisticId, editedComment);
|
|
@@ -4359,7 +4496,7 @@ function useRoomThreadSubscription(roomId, threadId) {
|
|
|
4359
4496
|
}
|
|
4360
4497
|
return {
|
|
4361
4498
|
status: "subscribed",
|
|
4362
|
-
unreadSince: _nullishCoalesce(_optionalChain([notification, 'optionalAccess',
|
|
4499
|
+
unreadSince: _nullishCoalesce(_optionalChain([notification, 'optionalAccess', _54 => _54.readAt]), () => ( null)),
|
|
4363
4500
|
subscribe,
|
|
4364
4501
|
unsubscribe
|
|
4365
4502
|
};
|
|
@@ -4570,7 +4707,7 @@ function useThreadsSuspense(options = {}) {
|
|
|
4570
4707
|
return result;
|
|
4571
4708
|
}
|
|
4572
4709
|
function selectorFor_useAttachmentUrl(state) {
|
|
4573
|
-
if (state === void 0 || _optionalChain([state, 'optionalAccess',
|
|
4710
|
+
if (state === void 0 || _optionalChain([state, 'optionalAccess', _55 => _55.isLoading])) {
|
|
4574
4711
|
return _nullishCoalesce(state, () => ( { isLoading: true }));
|
|
4575
4712
|
}
|
|
4576
4713
|
if (state.error) {
|
|
@@ -4797,5 +4934,6 @@ var _useUpdateMyPresence = useUpdateMyPresence;
|
|
|
4797
4934
|
|
|
4798
4935
|
|
|
4799
4936
|
|
|
4800
|
-
|
|
4801
|
-
|
|
4937
|
+
|
|
4938
|
+
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.useAiChatStatus = useAiChatStatus; 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;
|
|
4939
|
+
//# sourceMappingURL=chunk-2YWY7TUQ.cjs.map
|