@liveblocks/react 2.15.2 → 2.16.0-rc1

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.
@@ -233,8 +233,6 @@ var use = (
233
233
 
234
234
 
235
235
 
236
-
237
-
238
236
  // src/lib/autobind.ts
239
237
  function autobind(self) {
240
238
  const seen = /* @__PURE__ */ new Set();
@@ -270,16 +268,8 @@ function shallow2(a, b) {
270
268
  // src/ThreadDB.ts
271
269
 
272
270
 
273
- // src/lib/guards.ts
274
-
275
- function isStartsWith(blob) {
276
- return _core.isPlainObject.call(void 0, blob) && isString(blob.startsWith);
277
- }
278
- function isString(value) {
279
- return typeof value === "string";
280
- }
281
-
282
271
  // src/lib/querying.ts
272
+
283
273
  function makeThreadsFilter(query) {
284
274
  return (thread) => matchesQuery(thread, query) && matchesMetadata(thread, query);
285
275
  }
@@ -290,17 +280,17 @@ function matchesMetadata(thread, q) {
290
280
  const metadata = thread.metadata;
291
281
  return q.metadata === void 0 || Object.entries(q.metadata).every(
292
282
  ([key, op]) => (
293
- // NOTE: `op` can be explicitly-`undefined` here, which ideally would not
294
- // mean "filter for absence" like it does now, as this does not match the
295
- // backend behavior at the moment. For an in-depth discussion, see
296
- // https://liveblocks.slack.com/archives/C02PZL7QAAW/p1728546988505989
297
- matchesOperator(metadata[key], op)
283
+ // Ignore explicit-undefined filters
284
+ // Boolean logic: op? => value matches the operator
285
+ op === void 0 || matchesOperator(metadata[key], op)
298
286
  )
299
287
  );
300
288
  }
301
289
  function matchesOperator(value, op) {
302
- if (isStartsWith(op)) {
303
- return isString(value) && value.startsWith(op.startsWith);
290
+ if (op === null) {
291
+ return value === void 0;
292
+ } else if (_core.isStartsWithOperator.call(void 0, op)) {
293
+ return typeof value === "string" && value.startsWith(op.startsWith);
304
294
  } else {
305
295
  return value === op;
306
296
  }
@@ -844,7 +834,7 @@ var UmbrellaStore = class {
844
834
  );
845
835
  const loadingUserThreads = new (0, _core.DefaultMap)(
846
836
  (queryKey) => {
847
- const query = _core.unstringify.call(void 0, queryKey);
837
+ const query = JSON.parse(queryKey);
848
838
  const resource = new PaginatedResource(async (cursor) => {
849
839
  const result = await this.#client[_core.kInternal].httpClient.getUserThreads_experimental({
850
840
  cursor,
@@ -886,7 +876,7 @@ var UmbrellaStore = class {
886
876
  );
887
877
  const loadingRoomThreads = new (0, _core.DefaultMap)(
888
878
  (queryKey) => {
889
- const [roomId, query] = _core.unstringify.call(void 0, queryKey);
879
+ const [roomId, query] = JSON.parse(queryKey);
890
880
  const resource = new PaginatedResource(async (cursor) => {
891
881
  const result = await this.#client[_core.kInternal].httpClient.getThreads({
892
882
  roomId,
@@ -928,7 +918,8 @@ var UmbrellaStore = class {
928
918
  );
929
919
  const loadingNotifications = {
930
920
  signal: _core.DerivedSignal.from(() => {
931
- const result = this.#notificationsPaginationState.get();
921
+ const resource = this.#notificationsPaginationState;
922
+ const result = resource.get();
932
923
  if (result.isLoading || result.error) {
933
924
  return result;
934
925
  }
@@ -948,10 +939,7 @@ var UmbrellaStore = class {
948
939
  const resource = new SinglePageResource(async () => {
949
940
  const room = this.#client.getRoom(roomId);
950
941
  if (room === null) {
951
- throw new (0, _core.HttpError)(
952
- `Room '${roomId}' is not available on client`,
953
- 479
954
- );
942
+ throw new Error(`Room '${roomId}' is not available on client`);
955
943
  }
956
944
  const result = await room.getNotificationSettings();
957
945
  this.roomNotificationSettings.update(roomId, result);
@@ -974,10 +962,7 @@ var UmbrellaStore = class {
974
962
  const resource = new SinglePageResource(async () => {
975
963
  const room = this.#client.getRoom(roomId);
976
964
  if (room === null) {
977
- throw new (0, _core.HttpError)(
978
- `Room '${roomId}' is not available on client`,
979
- 479
980
- );
965
+ throw new Error(`Room '${roomId}' is not available on client`);
981
966
  }
982
967
  const result = await room[_core.kInternal].listTextVersions();
983
968
  this.historyVersions.update(roomId, result.versions);
@@ -994,12 +979,10 @@ var UmbrellaStore = class {
994
979
  if (result.isLoading || result.error) {
995
980
  return result;
996
981
  } else {
997
- return {
998
- isLoading: false,
999
- versions: Object.values(
1000
- _nullishCoalesce(this.historyVersions.signal.get()[roomId], () => ( {}))
1001
- )
1002
- };
982
+ return ASYNC_OK(
983
+ "versions",
984
+ Object.values(_nullishCoalesce(this.historyVersions.signal.get()[roomId], () => ( {})))
985
+ );
1003
986
  }
1004
987
  }, _core.shallow);
1005
988
  return { signal, waitUntilLoaded: resource.waitUntilLoaded };
@@ -1835,8 +1818,15 @@ function useMarkInboxNotificationAsRead_withClient(client) {
1835
1818
  optimisticId
1836
1819
  );
1837
1820
  },
1838
- () => {
1821
+ (err) => {
1839
1822
  store.optimisticUpdates.remove(optimisticId);
1823
+ client[_core.kInternal].emitError(
1824
+ {
1825
+ type: "MARK_INBOX_NOTIFICATION_AS_READ_ERROR",
1826
+ inboxNotificationId
1827
+ },
1828
+ err
1829
+ );
1840
1830
  }
1841
1831
  );
1842
1832
  },
@@ -1855,8 +1845,13 @@ function useMarkAllInboxNotificationsAsRead_withClient(client) {
1855
1845
  () => {
1856
1846
  store.markAllInboxNotificationsRead(optimisticId, readAt);
1857
1847
  },
1858
- () => {
1848
+ (err) => {
1859
1849
  store.optimisticUpdates.remove(optimisticId);
1850
+ client[_core.kInternal].emitError(
1851
+ // No roomId, threadId, commentId to include for this error
1852
+ { type: "MARK_ALL_INBOX_NOTIFICATIONS_AS_READ_ERROR" },
1853
+ err
1854
+ );
1860
1855
  }
1861
1856
  );
1862
1857
  }, [client]);
@@ -1875,8 +1870,12 @@ function useDeleteInboxNotification_withClient(client) {
1875
1870
  () => {
1876
1871
  store.deleteInboxNotification(inboxNotificationId, optimisticId);
1877
1872
  },
1878
- () => {
1873
+ (err) => {
1879
1874
  store.optimisticUpdates.remove(optimisticId);
1875
+ client[_core.kInternal].emitError(
1876
+ { type: "DELETE_INBOX_NOTIFICATION_ERROR", inboxNotificationId },
1877
+ err
1878
+ );
1880
1879
  }
1881
1880
  );
1882
1881
  },
@@ -1895,8 +1894,12 @@ function useDeleteAllInboxNotifications_withClient(client) {
1895
1894
  () => {
1896
1895
  store.deleteAllInboxNotifications(optimisticId);
1897
1896
  },
1898
- () => {
1897
+ (err) => {
1899
1898
  store.optimisticUpdates.remove(optimisticId);
1899
+ client[_core.kInternal].emitError(
1900
+ { type: "DELETE_ALL_INBOX_NOTIFICATIONS_ERROR" },
1901
+ err
1902
+ );
1900
1903
  }
1901
1904
  );
1902
1905
  }, [client]);
@@ -2058,6 +2061,7 @@ function createSharedContext(client) {
2058
2061
  useUser: (userId) => useUser_withClient(client, userId),
2059
2062
  useRoomInfo: (roomId) => useRoomInfo_withClient(client, roomId),
2060
2063
  useIsInsideRoom,
2064
+ useErrorListener,
2061
2065
  useSyncStatus: useSyncStatus2
2062
2066
  },
2063
2067
  suspense: {
@@ -2065,6 +2069,7 @@ function createSharedContext(client) {
2065
2069
  useUser: (userId) => useUserSuspense_withClient(client, userId),
2066
2070
  useRoomInfo: (roomId) => useRoomInfoSuspense_withClient(client, roomId),
2067
2071
  useIsInsideRoom,
2072
+ useErrorListener,
2068
2073
  useSyncStatus: useSyncStatus2
2069
2074
  }
2070
2075
  };
@@ -2119,11 +2124,7 @@ function LiveblocksProvider(props) {
2119
2124
  function createLiveblocksContext(client) {
2120
2125
  return getOrCreateContextBundle(client);
2121
2126
  }
2122
- function useUserThreads_experimental(options = {
2123
- query: {
2124
- metadata: {}
2125
- }
2126
- }) {
2127
+ function useUserThreads_experimental(options = {}) {
2127
2128
  const client = useClient();
2128
2129
  const { store, userThreadsPoller: poller } = getLiveblocksExtrasForClient(client);
2129
2130
  const queryKey = makeUserThreadsQueryKey(options.query);
@@ -2149,11 +2150,7 @@ function useUserThreads_experimental(options = {
2149
2150
  store.outputs.loadingUserThreads.getOrCreate(queryKey).signal
2150
2151
  );
2151
2152
  }
2152
- function useUserThreadsSuspense_experimental(options = {
2153
- query: {
2154
- metadata: {}
2155
- }
2156
- }) {
2153
+ function useUserThreadsSuspense_experimental(options = {}) {
2157
2154
  const client = useClient();
2158
2155
  const { store } = getLiveblocksExtrasForClient(client);
2159
2156
  const queryKey = makeUserThreadsQueryKey(options.query);
@@ -2252,104 +2249,14 @@ function useSyncStatusSmooth_withClient(client) {
2252
2249
  function useSyncStatus(options) {
2253
2250
  return useSyncStatus_withClient(useClient(), options);
2254
2251
  }
2255
-
2256
- // src/types/errors.ts
2257
- var CreateThreadError = class extends Error {
2258
- constructor(cause, context) {
2259
- super("Create thread failed.");
2260
- this.cause = cause;
2261
- this.context = context;
2262
- this.name = "CreateThreadError";
2263
- }
2264
- };
2265
- var DeleteThreadError = class extends Error {
2266
- constructor(cause, context) {
2267
- super("Delete thread failed.");
2268
- this.cause = cause;
2269
- this.context = context;
2270
- this.name = "DeleteThreadError";
2271
- }
2272
- };
2273
- var EditThreadMetadataError = class extends Error {
2274
- constructor(cause, context) {
2275
- super("Edit thread metadata failed.");
2276
- this.cause = cause;
2277
- this.context = context;
2278
- this.name = "EditThreadMetadataError";
2279
- }
2280
- };
2281
- var MarkThreadAsResolvedError = class extends Error {
2282
- constructor(cause, context) {
2283
- super("Mark thread as resolved failed.");
2284
- this.cause = cause;
2285
- this.context = context;
2286
- this.name = "MarkThreadAsResolvedError";
2287
- }
2288
- };
2289
- var MarkThreadAsUnresolvedError = class extends Error {
2290
- constructor(cause, context) {
2291
- super("Mark thread as unresolved failed.");
2292
- this.cause = cause;
2293
- this.context = context;
2294
- this.name = "MarkThreadAsUnresolvedError";
2295
- }
2296
- };
2297
- var CreateCommentError = class extends Error {
2298
- constructor(cause, context) {
2299
- super("Create comment failed.");
2300
- this.cause = cause;
2301
- this.context = context;
2302
- this.name = "CreateCommentError";
2303
- }
2304
- };
2305
- var EditCommentError = class extends Error {
2306
- constructor(cause, context) {
2307
- super("Edit comment failed.");
2308
- this.cause = cause;
2309
- this.context = context;
2310
- this.name = "EditCommentError";
2311
- }
2312
- };
2313
- var DeleteCommentError = class extends Error {
2314
- constructor(cause, context) {
2315
- super("Delete comment failed.");
2316
- this.cause = cause;
2317
- this.context = context;
2318
- this.name = "DeleteCommentError";
2319
- }
2320
- };
2321
- var AddReactionError = class extends Error {
2322
- constructor(cause, context) {
2323
- super("Add reaction failed.");
2324
- this.cause = cause;
2325
- this.context = context;
2326
- this.name = "AddReactionError";
2327
- }
2328
- };
2329
- var RemoveReactionError = class extends Error {
2330
- constructor(cause, context) {
2331
- super("Remove reaction failed.");
2332
- this.cause = cause;
2333
- this.context = context;
2334
- this.name = "RemoveReactionError";
2335
- }
2336
- };
2337
- var MarkInboxNotificationAsReadError = class extends Error {
2338
- constructor(cause, context) {
2339
- super("Mark inbox notification as read failed.");
2340
- this.cause = cause;
2341
- this.context = context;
2342
- this.name = "MarkInboxNotificationAsReadError";
2343
- }
2344
- };
2345
- var UpdateNotificationSettingsError = class extends Error {
2346
- constructor(cause, context) {
2347
- super("Update notification settings failed.");
2348
- this.cause = cause;
2349
- this.context = context;
2350
- this.name = "UpdateNotificationSettingsError";
2351
- }
2352
- };
2252
+ function useErrorListener(callback) {
2253
+ const client = useClient();
2254
+ const savedCallback = useLatest(callback);
2255
+ _react.useEffect.call(void 0,
2256
+ () => client.events.error.subscribe((e) => savedCallback.current(e)),
2257
+ [client, savedCallback]
2258
+ );
2259
+ }
2353
2260
 
2354
2261
  // src/room.tsx
2355
2262
  var _client = require('@liveblocks/client');
@@ -2373,7 +2280,6 @@ var _client = require('@liveblocks/client');
2373
2280
 
2374
2281
 
2375
2282
 
2376
-
2377
2283
 
2378
2284
 
2379
2285
  // src/use-scroll-to-comment-on-load-effect.ts
@@ -2456,14 +2362,6 @@ function getCurrentUserId(client) {
2456
2362
  }
2457
2363
  return userId;
2458
2364
  }
2459
- function handleApiError(err) {
2460
- const message = `Request failed with status ${err.status}: ${err.message}`;
2461
- if (_optionalChain([err, 'access', _14 => _14.details, 'optionalAccess', _15 => _15.error]) === "FORBIDDEN") {
2462
- const detailedMessage = [message, err.details.suggestion, err.details.docs].filter(Boolean).join("\n");
2463
- _core.console.error(detailedMessage);
2464
- }
2465
- return new Error(message);
2466
- }
2467
2365
  var _extras2 = /* @__PURE__ */ new WeakMap();
2468
2366
  var _bundles2 = /* @__PURE__ */ new WeakMap();
2469
2367
  function getOrCreateRoomContextBundle(client) {
@@ -2484,19 +2382,21 @@ function getRoomExtrasForClient(client) {
2484
2382
  }
2485
2383
  function makeRoomExtrasForClient(client) {
2486
2384
  const store = getUmbrellaStoreForClient(client);
2487
- const commentsErrorEventSource = _core.makeEventSource.call(void 0, );
2488
- function onMutationFailure(innerError, optimisticId, createPublicError) {
2385
+ function onMutationFailure(optimisticId, context, innerError) {
2489
2386
  store.optimisticUpdates.remove(optimisticId);
2490
2387
  if (innerError instanceof _core.HttpError) {
2491
- const error = handleApiError(innerError);
2492
- commentsErrorEventSource.notify(createPublicError(error));
2493
- return;
2494
- }
2495
- if (innerError instanceof _core.HttpError) {
2496
- handleApiError(innerError);
2497
- return;
2388
+ if (innerError.status === 403) {
2389
+ const detailedMessage = [
2390
+ innerError.message,
2391
+ _optionalChain([innerError, 'access', _14 => _14.details, 'optionalAccess', _15 => _15.suggestion]),
2392
+ _optionalChain([innerError, 'access', _16 => _16.details, 'optionalAccess', _17 => _17.docs])
2393
+ ].filter(Boolean).join("\n");
2394
+ _core.console.error(detailedMessage);
2395
+ }
2396
+ client[_core.kInternal].emitError(context, innerError);
2397
+ } else {
2398
+ throw innerError;
2498
2399
  }
2499
- throw innerError;
2500
2400
  }
2501
2401
  const threadsPollersByRoomId = new (0, _core.DefaultMap)(
2502
2402
  (roomId) => _core.makePoller.call(void 0,
@@ -2542,7 +2442,6 @@ function makeRoomExtrasForClient(client) {
2542
2442
  );
2543
2443
  return {
2544
2444
  store,
2545
- commentsErrorEventSource: commentsErrorEventSource.observable,
2546
2445
  onMutationFailure,
2547
2446
  getOrCreateThreadsPollerForRoomId: threadsPollersByRoomId.getOrCreate.bind(
2548
2447
  threadsPollersByRoomId
@@ -2568,7 +2467,6 @@ function makeRoomContextBundle(client) {
2568
2467
  useBroadcastEvent,
2569
2468
  useOthersListener,
2570
2469
  useLostConnectionListener,
2571
- useErrorListener,
2572
2470
  useEventListener,
2573
2471
  useHistory,
2574
2472
  useUndo,
@@ -2614,7 +2512,6 @@ function makeRoomContextBundle(client) {
2614
2512
  useBroadcastEvent,
2615
2513
  useOthersListener,
2616
2514
  useLostConnectionListener,
2617
- useErrorListener,
2618
2515
  useEventListener,
2619
2516
  useHistory,
2620
2517
  useUndo,
@@ -2650,8 +2547,7 @@ function makeRoomContextBundle(client) {
2650
2547
  useRoomNotificationSettings: useRoomNotificationSettingsSuspense,
2651
2548
  useUpdateRoomNotificationSettings,
2652
2549
  ...shared.suspense
2653
- },
2654
- useCommentsErrorListener
2550
+ }
2655
2551
  };
2656
2552
  return Object.defineProperty(bundle, _core.kInternal, {
2657
2553
  enumerable: false
@@ -2694,7 +2590,7 @@ function RoomProviderInner(props) {
2694
2590
  "RoomProvider id property is required. For more information: https://liveblocks.io/docs/errors/liveblocks-react/RoomProvider-id-property-is-required"
2695
2591
  );
2696
2592
  }
2697
- if (!isString(roomId)) {
2593
+ if (typeof roomId !== "string") {
2698
2594
  throw new Error("RoomProvider id property should be a string.");
2699
2595
  }
2700
2596
  const majorReactVersion = parseInt(_react.version) || 1;
@@ -2847,7 +2743,7 @@ function useMentionSuggestionsCache() {
2847
2743
  return client[_core.kInternal].mentionSuggestionsCache;
2848
2744
  }
2849
2745
  function useStorageStatus(options) {
2850
- const smooth = useInitial(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _16 => _16.smooth]), () => ( false)));
2746
+ const smooth = useInitial(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _18 => _18.smooth]), () => ( false)));
2851
2747
  if (smooth) {
2852
2748
  return useStorageStatusSmooth();
2853
2749
  } else {
@@ -2912,14 +2808,6 @@ function useLostConnectionListener(callback) {
2912
2808
  [room, savedCallback]
2913
2809
  );
2914
2810
  }
2915
- function useErrorListener(callback) {
2916
- const room = useRoom();
2917
- const savedCallback = useLatest(callback);
2918
- _react.useEffect.call(void 0,
2919
- () => room.events.error.subscribe((e) => savedCallback.current(e)),
2920
- [room, savedCallback]
2921
- );
2922
- }
2923
2811
  function useEventListener(callback) {
2924
2812
  const room = useRoom();
2925
2813
  const savedCallback = useLatest(callback);
@@ -3129,14 +3017,6 @@ function useThreads(options = {}) {
3129
3017
  useScrollToCommentOnLoadEffect(scrollOnLoad, result);
3130
3018
  return result;
3131
3019
  }
3132
- function useCommentsErrorListener(callback) {
3133
- const client = useClient();
3134
- const savedCallback = useLatest(callback);
3135
- const { commentsErrorEventSource } = getRoomExtrasForClient(client);
3136
- _react.useEffect.call(void 0, () => {
3137
- return commentsErrorEventSource.subscribe(savedCallback.current);
3138
- }, [savedCallback, commentsErrorEventSource]);
3139
- }
3140
3020
  function useCreateThread() {
3141
3021
  return useCreateRoomThread(useRoom().id);
3142
3022
  }
@@ -3177,7 +3057,7 @@ function useCreateRoomThread(roomId) {
3177
3057
  thread: newThread,
3178
3058
  roomId
3179
3059
  });
3180
- const attachmentIds = _optionalChain([attachments, 'optionalAccess', _17 => _17.map, 'call', _18 => _18((attachment) => attachment.id)]);
3060
+ const attachmentIds = _optionalChain([attachments, 'optionalAccess', _19 => _19.map, 'call', _20 => _20((attachment) => attachment.id)]);
3181
3061
  client[_core.kInternal].httpClient.createThread({
3182
3062
  roomId,
3183
3063
  threadId,
@@ -3190,15 +3070,16 @@ function useCreateRoomThread(roomId) {
3190
3070
  store.createThread(optimisticId, thread);
3191
3071
  },
3192
3072
  (err) => onMutationFailure(
3193
- err,
3194
3073
  optimisticId,
3195
- (err2) => new CreateThreadError(err2, {
3074
+ {
3075
+ type: "CREATE_THREAD_ERROR",
3196
3076
  roomId,
3197
3077
  threadId,
3198
3078
  commentId,
3199
3079
  body,
3200
3080
  metadata
3201
- })
3081
+ },
3082
+ err
3202
3083
  )
3203
3084
  );
3204
3085
  return newThread;
@@ -3216,7 +3097,7 @@ function useDeleteRoomThread(roomId) {
3216
3097
  const { store, onMutationFailure } = getRoomExtrasForClient(client);
3217
3098
  const userId = getCurrentUserId(client);
3218
3099
  const existing = store.outputs.threads.get().get(threadId);
3219
- if (_optionalChain([existing, 'optionalAccess', _19 => _19.comments, 'optionalAccess', _20 => _20[0], 'optionalAccess', _21 => _21.userId]) !== userId) {
3100
+ if (_optionalChain([existing, 'optionalAccess', _21 => _21.comments, 'optionalAccess', _22 => _22[0], 'optionalAccess', _23 => _23.userId]) !== userId) {
3220
3101
  throw new Error("Only the thread creator can delete the thread");
3221
3102
  }
3222
3103
  const optimisticId = store.optimisticUpdates.add({
@@ -3230,9 +3111,9 @@ function useDeleteRoomThread(roomId) {
3230
3111
  store.deleteThread(threadId, optimisticId);
3231
3112
  },
3232
3113
  (err) => onMutationFailure(
3233
- err,
3234
3114
  optimisticId,
3235
- (err2) => new DeleteThreadError(err2, { roomId, threadId })
3115
+ { type: "DELETE_THREAD_ERROR", roomId, threadId },
3116
+ err
3236
3117
  )
3237
3118
  );
3238
3119
  },
@@ -3265,13 +3146,14 @@ function useEditRoomThreadMetadata(roomId) {
3265
3146
  store.patchThread(threadId, optimisticId, { metadata: metadata2 }, updatedAt)
3266
3147
  ),
3267
3148
  (err) => onMutationFailure(
3268
- err,
3269
3149
  optimisticId,
3270
- (error) => new EditThreadMetadataError(error, {
3150
+ {
3151
+ type: "EDIT_THREAD_METADATA_ERROR",
3271
3152
  roomId,
3272
3153
  threadId,
3273
3154
  metadata
3274
- })
3155
+ },
3156
+ err
3275
3157
  )
3276
3158
  );
3277
3159
  },
@@ -3303,20 +3185,21 @@ function useCreateRoomComment(roomId) {
3303
3185
  type: "create-comment",
3304
3186
  comment
3305
3187
  });
3306
- const attachmentIds = _optionalChain([attachments, 'optionalAccess', _22 => _22.map, 'call', _23 => _23((attachment) => attachment.id)]);
3188
+ const attachmentIds = _optionalChain([attachments, 'optionalAccess', _24 => _24.map, 'call', _25 => _25((attachment) => attachment.id)]);
3307
3189
  client[_core.kInternal].httpClient.createComment({ roomId, threadId, commentId, body, attachmentIds }).then(
3308
3190
  (newComment) => {
3309
3191
  store.createComment(newComment, optimisticId);
3310
3192
  },
3311
3193
  (err) => onMutationFailure(
3312
- err,
3313
3194
  optimisticId,
3314
- (err2) => new CreateCommentError(err2, {
3195
+ {
3196
+ type: "CREATE_COMMENT_ERROR",
3315
3197
  roomId,
3316
3198
  threadId,
3317
3199
  commentId,
3318
3200
  body
3319
- })
3201
+ },
3202
+ err
3320
3203
  )
3321
3204
  );
3322
3205
  return comment;
@@ -3358,20 +3241,15 @@ function useEditRoomComment(roomId) {
3358
3241
  attachments: _nullishCoalesce(attachments, () => ( []))
3359
3242
  }
3360
3243
  });
3361
- const attachmentIds = _optionalChain([attachments, 'optionalAccess', _24 => _24.map, 'call', _25 => _25((attachment) => attachment.id)]);
3244
+ const attachmentIds = _optionalChain([attachments, 'optionalAccess', _26 => _26.map, 'call', _27 => _27((attachment) => attachment.id)]);
3362
3245
  client[_core.kInternal].httpClient.editComment({ roomId, threadId, commentId, body, attachmentIds }).then(
3363
3246
  (editedComment) => {
3364
3247
  store.editComment(threadId, optimisticId, editedComment);
3365
3248
  },
3366
3249
  (err) => onMutationFailure(
3367
- err,
3368
3250
  optimisticId,
3369
- (error) => new EditCommentError(error, {
3370
- roomId,
3371
- threadId,
3372
- commentId,
3373
- body
3374
- })
3251
+ { type: "EDIT_COMMENT_ERROR", roomId, threadId, commentId, body },
3252
+ err
3375
3253
  )
3376
3254
  );
3377
3255
  },
@@ -3399,13 +3277,9 @@ function useDeleteRoomComment(roomId) {
3399
3277
  store.deleteComment(threadId, optimisticId, commentId, deletedAt);
3400
3278
  },
3401
3279
  (err) => onMutationFailure(
3402
- err,
3403
3280
  optimisticId,
3404
- (error) => new DeleteCommentError(error, {
3405
- roomId,
3406
- threadId,
3407
- commentId
3408
- })
3281
+ { type: "DELETE_COMMENT_ERROR", roomId, threadId, commentId },
3282
+ err
3409
3283
  )
3410
3284
  );
3411
3285
  },
@@ -3443,14 +3317,15 @@ function useAddRoomCommentReaction(roomId) {
3443
3317
  );
3444
3318
  },
3445
3319
  (err) => onMutationFailure(
3446
- err,
3447
3320
  optimisticId,
3448
- (error) => new AddReactionError(error, {
3321
+ {
3322
+ type: "ADD_REACTION_ERROR",
3449
3323
  roomId,
3450
3324
  threadId,
3451
3325
  commentId,
3452
3326
  emoji
3453
- })
3327
+ },
3328
+ err
3454
3329
  )
3455
3330
  );
3456
3331
  },
@@ -3487,14 +3362,15 @@ function useRemoveRoomCommentReaction(roomId) {
3487
3362
  );
3488
3363
  },
3489
3364
  (err) => onMutationFailure(
3490
- err,
3491
3365
  optimisticId,
3492
- (error) => new RemoveReactionError(error, {
3366
+ {
3367
+ type: "REMOVE_REACTION_ERROR",
3493
3368
  roomId,
3494
3369
  threadId,
3495
3370
  commentId,
3496
3371
  emoji
3497
- })
3372
+ },
3373
+ err
3498
3374
  )
3499
3375
  );
3500
3376
  },
@@ -3534,11 +3410,13 @@ function useMarkRoomThreadAsRead(roomId) {
3534
3410
  },
3535
3411
  (err) => {
3536
3412
  onMutationFailure(
3537
- err,
3538
3413
  optimisticId,
3539
- (error) => new MarkInboxNotificationAsReadError(error, {
3414
+ {
3415
+ type: "MARK_INBOX_NOTIFICATION_AS_READ_ERROR",
3416
+ roomId,
3540
3417
  inboxNotificationId: inboxNotification.id
3541
- })
3418
+ },
3419
+ err
3542
3420
  );
3543
3421
  return;
3544
3422
  }
@@ -3571,12 +3449,9 @@ function useMarkRoomThreadAsResolved(roomId) {
3571
3449
  );
3572
3450
  },
3573
3451
  (err) => onMutationFailure(
3574
- err,
3575
3452
  optimisticId,
3576
- (error) => new MarkThreadAsResolvedError(error, {
3577
- roomId,
3578
- threadId
3579
- })
3453
+ { type: "MARK_THREAD_AS_RESOLVED_ERROR", roomId, threadId },
3454
+ err
3580
3455
  )
3581
3456
  );
3582
3457
  },
@@ -3607,12 +3482,9 @@ function useMarkRoomThreadAsUnresolved(roomId) {
3607
3482
  );
3608
3483
  },
3609
3484
  (err) => onMutationFailure(
3610
- err,
3611
3485
  optimisticId,
3612
- (error) => new MarkThreadAsUnresolvedError(error, {
3613
- roomId,
3614
- threadId
3615
- })
3486
+ { type: "MARK_THREAD_AS_UNRESOLVED_ERROR", roomId, threadId },
3487
+ err
3616
3488
  )
3617
3489
  );
3618
3490
  },
@@ -3762,11 +3634,9 @@ function useUpdateRoomNotificationSettings() {
3762
3634
  store.updateRoomNotificationSettings(room.id, optimisticId, settings2);
3763
3635
  },
3764
3636
  (err) => onMutationFailure(
3765
- err,
3766
3637
  optimisticId,
3767
- (error) => new UpdateNotificationSettingsError(error, {
3768
- roomId: room.id
3769
- })
3638
+ { type: "UPDATE_NOTIFICATION_SETTINGS_ERROR", roomId: room.id },
3639
+ err
3770
3640
  )
3771
3641
  );
3772
3642
  },
@@ -3839,7 +3709,7 @@ function useThreadsSuspense(options = {}) {
3839
3709
  return result;
3840
3710
  }
3841
3711
  function selectorFor_useAttachmentUrl(state) {
3842
- if (state === void 0 || _optionalChain([state, 'optionalAccess', _26 => _26.isLoading])) {
3712
+ if (state === void 0 || _optionalChain([state, 'optionalAccess', _28 => _28.isLoading])) {
3843
3713
  return _nullishCoalesce(state, () => ( { isLoading: true }));
3844
3714
  }
3845
3715
  if (state.error) {
@@ -4054,7 +3924,5 @@ var _useUpdateMyPresence = useUpdateMyPresence;
4054
3924
 
4055
3925
 
4056
3926
 
4057
-
4058
-
4059
- exports.RoomContext = RoomContext; exports.useRoomOrNull = useRoomOrNull; exports.useSyncExternalStoreWithSelector = useSyncExternalStoreWithSelector; exports.useSignal = useSignal; exports.ClientContext = ClientContext; exports.getUmbrellaStoreForClient = getUmbrellaStoreForClient; exports.useClientOrNull = useClientOrNull; exports.useClient = useClient; exports.LiveblocksProvider = LiveblocksProvider; exports.createLiveblocksContext = createLiveblocksContext; exports.useInboxNotifications = useInboxNotifications; exports.useInboxNotificationsSuspense = useInboxNotificationsSuspense; exports.useMarkAllInboxNotificationsAsRead = useMarkAllInboxNotificationsAsRead; exports.useMarkInboxNotificationAsRead = useMarkInboxNotificationAsRead; exports.useDeleteAllInboxNotifications = useDeleteAllInboxNotifications; exports.useDeleteInboxNotification = useDeleteInboxNotification; exports.useUnreadInboxNotificationsCount = useUnreadInboxNotificationsCount; exports.useUnreadInboxNotificationsCountSuspense = useUnreadInboxNotificationsCountSuspense; exports.useRoomInfo = useRoomInfo; exports.useRoomInfoSuspense = useRoomInfoSuspense; exports._useInboxNotificationThread = _useInboxNotificationThread; exports._useUser = _useUser; exports._useUserSuspense = _useUserSuspense; exports._useUserThreads_experimental = _useUserThreads_experimental; exports._useUserThreadsSuspense_experimental = _useUserThreadsSuspense_experimental; exports.useSyncStatus = useSyncStatus; exports.CreateThreadError = CreateThreadError; 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.useErrorListener = useErrorListener; exports.useHistory = useHistory; exports.useUndo = useUndo; exports.useRedo = useRedo; exports.useCanUndo = useCanUndo; exports.useCanRedo = useCanRedo; exports.useOthersConnectionIds = useOthersConnectionIds; exports.useCommentsErrorListener = useCommentsErrorListener; 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;
4060
- //# sourceMappingURL=chunk-DEAPV4GE.js.map
3927
+ exports.RoomContext = RoomContext; exports.useRoomOrNull = useRoomOrNull; exports.useSyncExternalStoreWithSelector = useSyncExternalStoreWithSelector; exports.useSignal = useSignal; exports.ClientContext = ClientContext; exports.getUmbrellaStoreForClient = getUmbrellaStoreForClient; exports.useClientOrNull = useClientOrNull; exports.useClient = useClient; exports.LiveblocksProvider = LiveblocksProvider; exports.createLiveblocksContext = createLiveblocksContext; exports.useInboxNotifications = useInboxNotifications; exports.useInboxNotificationsSuspense = useInboxNotificationsSuspense; exports.useMarkAllInboxNotificationsAsRead = useMarkAllInboxNotificationsAsRead; exports.useMarkInboxNotificationAsRead = useMarkInboxNotificationAsRead; exports.useDeleteAllInboxNotifications = useDeleteAllInboxNotifications; exports.useDeleteInboxNotification = useDeleteInboxNotification; exports.useUnreadInboxNotificationsCount = useUnreadInboxNotificationsCount; exports.useUnreadInboxNotificationsCountSuspense = useUnreadInboxNotificationsCountSuspense; exports.useRoomInfo = useRoomInfo; exports.useRoomInfoSuspense = useRoomInfoSuspense; exports._useInboxNotificationThread = _useInboxNotificationThread; exports._useUser = _useUser; exports._useUserSuspense = _useUserSuspense; exports._useUserThreads_experimental = _useUserThreads_experimental; exports._useUserThreadsSuspense_experimental = _useUserThreadsSuspense_experimental; exports.useSyncStatus = useSyncStatus; exports.useErrorListener = useErrorListener; exports.useStatus = useStatus; exports.useReportTextEditor = useReportTextEditor; exports.useYjsProvider = useYjsProvider; exports.useCreateTextMention = useCreateTextMention; exports.useDeleteTextMention = useDeleteTextMention; exports.useResolveMentionSuggestions = useResolveMentionSuggestions; exports.useMentionSuggestionsCache = useMentionSuggestionsCache; exports.useStorageStatus = useStorageStatus; exports.useBatch = useBatch; exports.useLostConnectionListener = useLostConnectionListener; exports.useHistory = useHistory; exports.useUndo = useUndo; exports.useRedo = useRedo; exports.useCanUndo = useCanUndo; exports.useCanRedo = useCanRedo; exports.useOthersConnectionIds = useOthersConnectionIds; exports.useCreateRoomThread = useCreateRoomThread; exports.useDeleteRoomThread = useDeleteRoomThread; exports.useEditRoomThreadMetadata = useEditRoomThreadMetadata; exports.useCreateComment = useCreateComment; exports.useCreateRoomComment = useCreateRoomComment; exports.useEditComment = useEditComment; exports.useEditRoomComment = useEditRoomComment; exports.useDeleteComment = useDeleteComment; exports.useDeleteRoomComment = useDeleteRoomComment; exports.useAddRoomCommentReaction = useAddRoomCommentReaction; exports.useRemoveReaction = useRemoveReaction; exports.useRemoveRoomCommentReaction = useRemoveRoomCommentReaction; exports.useMarkThreadAsRead = useMarkThreadAsRead; exports.useMarkRoomThreadAsRead = useMarkRoomThreadAsRead; exports.useMarkThreadAsResolved = useMarkThreadAsResolved; exports.useMarkRoomThreadAsResolved = useMarkRoomThreadAsResolved; exports.useMarkThreadAsUnresolved = useMarkThreadAsUnresolved; exports.useMarkRoomThreadAsUnresolved = useMarkRoomThreadAsUnresolved; exports.useThreadSubscription = useThreadSubscription; exports.useHistoryVersionData = useHistoryVersionData; exports.useUpdateRoomNotificationSettings = useUpdateRoomNotificationSettings; exports.useOthersConnectionIdsSuspense = useOthersConnectionIdsSuspense; exports.useStorageStatusSuspense = useStorageStatusSuspense; exports.useAttachmentUrl = useAttachmentUrl; exports.useRoomAttachmentUrl = useRoomAttachmentUrl; exports.useAttachmentUrlSuspense = useAttachmentUrlSuspense; exports.useRoomPermissions = useRoomPermissions; exports.createRoomContext = createRoomContext; exports._RoomProvider = _RoomProvider; exports._useBroadcastEvent = _useBroadcastEvent; exports._useOthersListener = _useOthersListener; exports._useRoom = _useRoom; exports._useIsInsideRoom = _useIsInsideRoom; exports._useAddReaction = _useAddReaction; exports._useMutation = _useMutation; exports._useCreateThread = _useCreateThread; exports._useDeleteThread = _useDeleteThread; exports._useEditThreadMetadata = _useEditThreadMetadata; exports._useEventListener = _useEventListener; exports._useMyPresence = _useMyPresence; exports._useOthersMapped = _useOthersMapped; exports._useOthersMappedSuspense = _useOthersMappedSuspense; exports._useThreads = _useThreads; exports._useThreadsSuspense = _useThreadsSuspense; exports._useRoomNotificationSettings = _useRoomNotificationSettings; exports._useRoomNotificationSettingsSuspense = _useRoomNotificationSettingsSuspense; exports._useHistoryVersions = _useHistoryVersions; exports._useHistoryVersionsSuspense = _useHistoryVersionsSuspense; exports._useOther = _useOther; exports._useOthers = _useOthers; exports._useOtherSuspense = _useOtherSuspense; exports._useOthersSuspense = _useOthersSuspense; exports._useStorage = _useStorage; exports._useStorageSuspense = _useStorageSuspense; exports._useSelf = _useSelf; exports._useSelfSuspense = _useSelfSuspense; exports._useStorageRoot = _useStorageRoot; exports._useUpdateMyPresence = _useUpdateMyPresence;
3928
+ //# sourceMappingURL=chunk-NZL5WL5O.js.map