@liveblocks/react 2.24.0-sub1 → 2.24.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 CHANGED
@@ -24,7 +24,7 @@
24
24
 
25
25
 
26
26
 
27
- var _chunkVEO3XXA7cjs = require('./chunk-VEO3XXA7.cjs');
27
+ var _chunk32HQP5F6cjs = require('./chunk-32HQP5F6.cjs');
28
28
 
29
29
  // src/lib/use-layout-effect.ts
30
30
  var _react = require('react');
@@ -37,8 +37,8 @@ var MENTION_SUGGESTIONS_DEBOUNCE = 500;
37
37
  function useMentionSuggestions(roomId, search) {
38
38
  const [mentionSuggestions, setMentionSuggestions] = _react.useState.call(void 0, );
39
39
  const lastInvokedAt = _react.useRef.call(void 0, );
40
- const resolveMentionSuggestions = _chunkVEO3XXA7cjs.useResolveMentionSuggestions.call(void 0, );
41
- const mentionSuggestionsCache = _chunkVEO3XXA7cjs.useMentionSuggestionsCache.call(void 0, );
40
+ const resolveMentionSuggestions = _chunk32HQP5F6cjs.useResolveMentionSuggestions.call(void 0, );
41
+ const mentionSuggestionsCache = _chunk32HQP5F6cjs.useMentionSuggestionsCache.call(void 0, );
42
42
  _react.useEffect.call(void 0, () => {
43
43
  if (search === void 0 || !resolveMentionSuggestions) {
44
44
  return;
@@ -89,7 +89,7 @@ function useMentionSuggestions(roomId, search) {
89
89
 
90
90
 
91
91
  function useSyncSource() {
92
- const client = _chunkVEO3XXA7cjs.useClient.call(void 0, );
92
+ const client = _chunk32HQP5F6cjs.useClient.call(void 0, );
93
93
  const createSyncSource = client[_core.kInternal].createSyncSource;
94
94
  const [syncSource, setSyncSource] = _react.useState.call(void 0, );
95
95
  _react.useEffect.call(void 0, () => {
@@ -127,5 +127,5 @@ function useSyncSource() {
127
127
 
128
128
 
129
129
 
130
- exports.getUmbrellaStoreForClient = _chunkVEO3XXA7cjs.getUmbrellaStoreForClient; exports.useAddRoomCommentReaction = _chunkVEO3XXA7cjs.useAddRoomCommentReaction; exports.useClientOrNull = _chunkVEO3XXA7cjs.useClientOrNull; exports.useCreateRoomComment = _chunkVEO3XXA7cjs.useCreateRoomComment; exports.useCreateRoomThread = _chunkVEO3XXA7cjs.useCreateRoomThread; exports.useCreateTextMention = _chunkVEO3XXA7cjs.useCreateTextMention; exports.useDeleteRoomComment = _chunkVEO3XXA7cjs.useDeleteRoomComment; exports.useDeleteRoomThread = _chunkVEO3XXA7cjs.useDeleteRoomThread; exports.useDeleteTextMention = _chunkVEO3XXA7cjs.useDeleteTextMention; exports.useEditRoomComment = _chunkVEO3XXA7cjs.useEditRoomComment; exports.useEditRoomThreadMetadata = _chunkVEO3XXA7cjs.useEditRoomThreadMetadata; exports.useLayoutEffect = useLayoutEffect; exports.useMarkRoomThreadAsRead = _chunkVEO3XXA7cjs.useMarkRoomThreadAsRead; exports.useMarkRoomThreadAsResolved = _chunkVEO3XXA7cjs.useMarkRoomThreadAsResolved; exports.useMarkRoomThreadAsUnresolved = _chunkVEO3XXA7cjs.useMarkRoomThreadAsUnresolved; exports.useMentionSuggestions = useMentionSuggestions; exports.useMentionSuggestionsCache = _chunkVEO3XXA7cjs.useMentionSuggestionsCache; exports.useRemoveRoomCommentReaction = _chunkVEO3XXA7cjs.useRemoveRoomCommentReaction; exports.useReportTextEditor = _chunkVEO3XXA7cjs.useReportTextEditor; exports.useResolveMentionSuggestions = _chunkVEO3XXA7cjs.useResolveMentionSuggestions; exports.useRoomAttachmentUrl = _chunkVEO3XXA7cjs.useRoomAttachmentUrl; exports.useRoomPermissions = _chunkVEO3XXA7cjs.useRoomPermissions; exports.useRoomThreadSubscription = _chunkVEO3XXA7cjs.useRoomThreadSubscription; exports.useSignal = _chunkVEO3XXA7cjs.useSignal; exports.useSyncExternalStoreWithSelector = _chunkVEO3XXA7cjs.useSyncExternalStoreWithSelector; exports.useSyncSource = useSyncSource; exports.useYjsProvider = _chunkVEO3XXA7cjs.useYjsProvider;
130
+ exports.getUmbrellaStoreForClient = _chunk32HQP5F6cjs.getUmbrellaStoreForClient; exports.useAddRoomCommentReaction = _chunk32HQP5F6cjs.useAddRoomCommentReaction; exports.useClientOrNull = _chunk32HQP5F6cjs.useClientOrNull; exports.useCreateRoomComment = _chunk32HQP5F6cjs.useCreateRoomComment; exports.useCreateRoomThread = _chunk32HQP5F6cjs.useCreateRoomThread; exports.useCreateTextMention = _chunk32HQP5F6cjs.useCreateTextMention; exports.useDeleteRoomComment = _chunk32HQP5F6cjs.useDeleteRoomComment; exports.useDeleteRoomThread = _chunk32HQP5F6cjs.useDeleteRoomThread; exports.useDeleteTextMention = _chunk32HQP5F6cjs.useDeleteTextMention; exports.useEditRoomComment = _chunk32HQP5F6cjs.useEditRoomComment; exports.useEditRoomThreadMetadata = _chunk32HQP5F6cjs.useEditRoomThreadMetadata; exports.useLayoutEffect = useLayoutEffect; exports.useMarkRoomThreadAsRead = _chunk32HQP5F6cjs.useMarkRoomThreadAsRead; exports.useMarkRoomThreadAsResolved = _chunk32HQP5F6cjs.useMarkRoomThreadAsResolved; exports.useMarkRoomThreadAsUnresolved = _chunk32HQP5F6cjs.useMarkRoomThreadAsUnresolved; exports.useMentionSuggestions = useMentionSuggestions; exports.useMentionSuggestionsCache = _chunk32HQP5F6cjs.useMentionSuggestionsCache; exports.useRemoveRoomCommentReaction = _chunk32HQP5F6cjs.useRemoveRoomCommentReaction; exports.useReportTextEditor = _chunk32HQP5F6cjs.useReportTextEditor; exports.useResolveMentionSuggestions = _chunk32HQP5F6cjs.useResolveMentionSuggestions; exports.useRoomAttachmentUrl = _chunk32HQP5F6cjs.useRoomAttachmentUrl; exports.useRoomPermissions = _chunk32HQP5F6cjs.useRoomPermissions; exports.useRoomThreadSubscription = _chunk32HQP5F6cjs.useRoomThreadSubscription; exports.useSignal = _chunk32HQP5F6cjs.useSignal; exports.useSyncExternalStoreWithSelector = _chunk32HQP5F6cjs.useSyncExternalStoreWithSelector; exports.useSyncSource = useSyncSource; exports.useYjsProvider = _chunk32HQP5F6cjs.useYjsProvider;
131
131
  //# sourceMappingURL=_private.cjs.map
@@ -1,5 +1,5 @@
1
1
  import { useLayoutEffect as useLayoutEffect$1 } from 'react';
2
- export { g as getUmbrellaStoreForClient, a as useAddRoomCommentReaction, u as useClientOrNull, b as useCreateRoomComment, c as useCreateRoomThread, d as useCreateTextMention, e as useDeleteRoomComment, f as useDeleteRoomThread, h as useDeleteTextMention, i as useEditRoomComment, j as useEditRoomThreadMetadata, k as useMarkRoomThreadAsRead, l as useMarkRoomThreadAsResolved, m as useMarkRoomThreadAsUnresolved, n as useMentionSuggestionsCache, o as useRemoveRoomCommentReaction, p as useReportTextEditor, q as useResolveMentionSuggestions, r as useRoomAttachmentUrl, s as useRoomPermissions, t as useRoomThreadSubscription, v as useYjsProvider } from './room-BHrloYUB.cjs';
2
+ export { g as getUmbrellaStoreForClient, a as useAddRoomCommentReaction, u as useClientOrNull, b as useCreateRoomComment, c as useCreateRoomThread, d as useCreateTextMention, e as useDeleteRoomComment, f as useDeleteRoomThread, h as useDeleteTextMention, i as useEditRoomComment, j as useEditRoomThreadMetadata, k as useMarkRoomThreadAsRead, l as useMarkRoomThreadAsResolved, m as useMarkRoomThreadAsUnresolved, n as useMentionSuggestionsCache, o as useRemoveRoomCommentReaction, p as useReportTextEditor, q as useResolveMentionSuggestions, r as useRoomAttachmentUrl, s as useRoomPermissions, t as useRoomThreadSubscription, v as useYjsProvider } from './room-CqT08uWZ.cjs';
3
3
  import { ISignal, SyncSource } from '@liveblocks/core';
4
4
  import 'react/jsx-runtime';
5
5
  import '@liveblocks/client';
@@ -1,5 +1,5 @@
1
1
  import { useLayoutEffect as useLayoutEffect$1 } from 'react';
2
- export { g as getUmbrellaStoreForClient, a as useAddRoomCommentReaction, u as useClientOrNull, b as useCreateRoomComment, c as useCreateRoomThread, d as useCreateTextMention, e as useDeleteRoomComment, f as useDeleteRoomThread, h as useDeleteTextMention, i as useEditRoomComment, j as useEditRoomThreadMetadata, k as useMarkRoomThreadAsRead, l as useMarkRoomThreadAsResolved, m as useMarkRoomThreadAsUnresolved, n as useMentionSuggestionsCache, o as useRemoveRoomCommentReaction, p as useReportTextEditor, q as useResolveMentionSuggestions, r as useRoomAttachmentUrl, s as useRoomPermissions, t as useRoomThreadSubscription, v as useYjsProvider } from './room-BHrloYUB.js';
2
+ export { g as getUmbrellaStoreForClient, a as useAddRoomCommentReaction, u as useClientOrNull, b as useCreateRoomComment, c as useCreateRoomThread, d as useCreateTextMention, e as useDeleteRoomComment, f as useDeleteRoomThread, h as useDeleteTextMention, i as useEditRoomComment, j as useEditRoomThreadMetadata, k as useMarkRoomThreadAsRead, l as useMarkRoomThreadAsResolved, m as useMarkRoomThreadAsUnresolved, n as useMentionSuggestionsCache, o as useRemoveRoomCommentReaction, p as useReportTextEditor, q as useResolveMentionSuggestions, r as useRoomAttachmentUrl, s as useRoomPermissions, t as useRoomThreadSubscription, v as useYjsProvider } from './room-CqT08uWZ.js';
3
3
  import { ISignal, SyncSource } from '@liveblocks/core';
4
4
  import 'react/jsx-runtime';
5
5
  import '@liveblocks/client';
package/dist/_private.js CHANGED
@@ -24,7 +24,7 @@ import {
24
24
  useSignal,
25
25
  useSyncExternalStoreWithSelector,
26
26
  useYjsProvider
27
- } from "./chunk-ZWYRZR44.js";
27
+ } from "./chunk-N6OQQVYV.js";
28
28
 
29
29
  // src/lib/use-layout-effect.ts
30
30
  import { useEffect, useLayoutEffect as useOriginalLayoutEffect } from "react";
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/version.ts
2
2
  var PKG_NAME = "@liveblocks/react";
3
- var PKG_VERSION = "2.24.0-sub1";
3
+ var PKG_VERSION = "2.24.1";
4
4
  var PKG_FORMAT = "cjs";
5
5
 
6
6
  // src/ClientSideSuspense.tsx
@@ -20,4 +20,4 @@ function ClientSideSuspense(props) {
20
20
 
21
21
 
22
22
  exports.PKG_NAME = PKG_NAME; exports.PKG_VERSION = PKG_VERSION; exports.PKG_FORMAT = PKG_FORMAT; exports.ClientSideSuspense = ClientSideSuspense;
23
- //# sourceMappingURL=chunk-JYG2E4EZ.cjs.map
23
+ //# sourceMappingURL=chunk-2C72TPGI.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/liveblocks/liveblocks/packages/liveblocks-react/dist/chunk-JYG2E4EZ.cjs","../src/version.ts","../src/ClientSideSuspense.tsx"],"names":[],"mappings":"AAAA;ACGO,IAAM,SAAA,EAAW,mBAAA;AACjB,IAAM,YAAA,EAAiD,aAAA;AACvD,IAAM,WAAA,EAAgD,KAAA;ADD7D;AACA;AEJA,8BAA8C;AAkC1C,+CAAA;AAVG,SAAS,kBAAA,CAAmB,KAAA,EAAc;AAC/C,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,EAAA,EAAI,6BAAA,KAAc,CAAA;AAE5C,EAAA,8BAAA,CAAU,EAAA,GAAM;AAGd,IAAA,UAAA,CAAW,IAAI,CAAA;AAAA,EACjB,CAAA,EAAG,CAAC,CAAC,CAAA;AAEL,EAAA,uBACE,6BAAA,eAAC,EAAA,EAAS,QAAA,EAAU,KAAA,CAAM,QAAA,EACvB,QAAA,EAAA,QAAA,EACG,OAAO,KAAA,CAAM,SAAA,IAAa,WAAA,EACxB,KAAA,CAAM,QAAA,CAAS,EAAA,EACf,KAAA,CAAM,SAAA,EACR,KAAA,CAAM,SAAA,CACZ,CAAA;AAEJ;AF5BA;AACA;AACE;AACA;AACA;AACA;AACF,iJAAC","file":"/home/runner/work/liveblocks/liveblocks/packages/liveblocks-react/dist/chunk-JYG2E4EZ.cjs","sourcesContent":[null,"declare const __VERSION__: string;\ndeclare const TSUP_FORMAT: string;\n\nexport const PKG_NAME = \"@liveblocks/react\";\nexport const PKG_VERSION = typeof __VERSION__ === \"string\" && __VERSION__;\nexport const PKG_FORMAT = typeof TSUP_FORMAT === \"string\" && TSUP_FORMAT;\n","import type { ReactNode } from \"react\";\nimport { Suspense, useEffect, useState } from \"react\";\n\ntype Props = {\n fallback: ReactNode;\n children: (() => ReactNode | undefined) | ReactNode | undefined;\n};\n\n/**\n * Almost like a normal <Suspense> component, except that for server-side\n * renders, the fallback will be used.\n *\n * The child props will have to be provided in a function, i.e. change:\n *\n * <Suspense fallback={<Loading />}>\n * <MyRealComponent a={1} />\n * </Suspense>\n *\n * To:\n *\n * <ClientSideSuspense fallback={<Loading />}>\n * <MyRealComponent a={1} />\n * </ClientSideSuspense>\n *\n */\nexport function ClientSideSuspense(props: Props) {\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => {\n // Effects are never executed on the server side. The point of this is to\n // delay the flipping of this boolean until after hydration has happened.\n setMounted(true);\n }, []);\n\n return (\n <Suspense fallback={props.fallback}>\n {mounted\n ? typeof props.children === \"function\"\n ? props.children()\n : props.children\n : props.fallback}\n </Suspense>\n );\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/liveblocks/liveblocks/packages/liveblocks-react/dist/chunk-2C72TPGI.cjs","../src/version.ts","../src/ClientSideSuspense.tsx"],"names":[],"mappings":"AAAA;ACGO,IAAM,SAAA,EAAW,mBAAA;AACjB,IAAM,YAAA,EAAiD,QAAA;AACvD,IAAM,WAAA,EAAgD,KAAA;ADD7D;AACA;AEJA,8BAA8C;AAkC1C,+CAAA;AAVG,SAAS,kBAAA,CAAmB,KAAA,EAAc;AAC/C,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,EAAA,EAAI,6BAAA,KAAc,CAAA;AAE5C,EAAA,8BAAA,CAAU,EAAA,GAAM;AAGd,IAAA,UAAA,CAAW,IAAI,CAAA;AAAA,EACjB,CAAA,EAAG,CAAC,CAAC,CAAA;AAEL,EAAA,uBACE,6BAAA,eAAC,EAAA,EAAS,QAAA,EAAU,KAAA,CAAM,QAAA,EACvB,QAAA,EAAA,QAAA,EACG,OAAO,KAAA,CAAM,SAAA,IAAa,WAAA,EACxB,KAAA,CAAM,QAAA,CAAS,EAAA,EACf,KAAA,CAAM,SAAA,EACR,KAAA,CAAM,SAAA,CACZ,CAAA;AAEJ;AF5BA;AACA;AACE;AACA;AACA;AACA;AACF,iJAAC","file":"/home/runner/work/liveblocks/liveblocks/packages/liveblocks-react/dist/chunk-2C72TPGI.cjs","sourcesContent":[null,"declare const __VERSION__: string;\ndeclare const TSUP_FORMAT: string;\n\nexport const PKG_NAME = \"@liveblocks/react\";\nexport const PKG_VERSION = typeof __VERSION__ === \"string\" && __VERSION__;\nexport const PKG_FORMAT = typeof TSUP_FORMAT === \"string\" && TSUP_FORMAT;\n","import type { ReactNode } from \"react\";\nimport { Suspense, useEffect, useState } from \"react\";\n\ntype Props = {\n fallback: ReactNode;\n children: (() => ReactNode | undefined) | ReactNode | undefined;\n};\n\n/**\n * Almost like a normal <Suspense> component, except that for server-side\n * renders, the fallback will be used.\n *\n * The child props will have to be provided in a function, i.e. change:\n *\n * <Suspense fallback={<Loading />}>\n * <MyRealComponent a={1} />\n * </Suspense>\n *\n * To:\n *\n * <ClientSideSuspense fallback={<Loading />}>\n * <MyRealComponent a={1} />\n * </ClientSideSuspense>\n *\n */\nexport function ClientSideSuspense(props: Props) {\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => {\n // Effects are never executed on the server side. The point of this is to\n // delay the flipping of this boolean until after hydration has happened.\n setMounted(true);\n }, []);\n\n return (\n <Suspense fallback={props.fallback}>\n {mounted\n ? typeof props.children === \"function\"\n ? props.children()\n : props.children\n : props.fallback}\n </Suspense>\n );\n}\n"]}
@@ -250,6 +250,7 @@ var use = (
250
250
 
251
251
 
252
252
 
253
+
253
254
 
254
255
 
255
256
  // src/lib/autobind.ts
@@ -269,21 +270,6 @@ function autobind(self) {
269
270
  } while ((obj = Reflect.getPrototypeOf(obj)) && obj !== Object.prototype);
270
271
  }
271
272
 
272
- // src/lib/shallow2.ts
273
-
274
- function shallow2(a, b) {
275
- if (!_core.isPlainObject.call(void 0, a) || !_core.isPlainObject.call(void 0, b)) {
276
- return _core.shallow.call(void 0, a, b);
277
- }
278
- const keysA = Object.keys(a);
279
- if (keysA.length !== Object.keys(b).length) {
280
- return false;
281
- }
282
- return keysA.every(
283
- (key) => Object.prototype.hasOwnProperty.call(b, key) && _core.shallow.call(void 0, a[key], b[key])
284
- );
285
- }
286
-
287
273
  // src/ThreadDB.ts
288
274
 
289
275
 
@@ -981,7 +967,7 @@ var UmbrellaStore = class {
981
967
  fetchMoreError: page.fetchMoreError,
982
968
  fetchMore: page.fetchMore
983
969
  };
984
- }, shallow2);
970
+ }, _core.shallow2);
985
971
  return { signal, waitUntilLoaded: resource.waitUntilLoaded };
986
972
  }
987
973
  );
@@ -1024,7 +1010,7 @@ var UmbrellaStore = class {
1024
1010
  fetchMoreError: page.fetchMoreError,
1025
1011
  fetchMore: page.fetchMore
1026
1012
  };
1027
- }, shallow2);
1013
+ }, _core.shallow2);
1028
1014
  return { signal, waitUntilLoaded: resource.waitUntilLoaded };
1029
1015
  }
1030
1016
  );
@@ -1168,7 +1154,7 @@ var UmbrellaStore = class {
1168
1154
  });
1169
1155
  }
1170
1156
  /**
1171
- * Creates a existing subscription, replacing the corresponding
1157
+ * Creates an existing subscription, replacing the corresponding
1172
1158
  * optimistic update.
1173
1159
  */
1174
1160
  createSubscription(subscription, optimisticId) {
@@ -1593,47 +1579,45 @@ function applyOptimisticUpdates_forRoomSubscriptionSettings(settingsLUT, optimis
1593
1579
  function applyOptimisticUpdates_forSubscriptions(subscriptionsLUT, threads, optimisticUpdates) {
1594
1580
  const subscriptions = Object.fromEntries(subscriptionsLUT);
1595
1581
  for (const update of optimisticUpdates) {
1596
- if (update.type === "update-room-subscription-settings") {
1597
- if (update.settings.threads) {
1582
+ switch (update.type) {
1583
+ case "update-room-subscription-settings": {
1584
+ if (!update.settings.threads) {
1585
+ continue;
1586
+ }
1598
1587
  const roomThreads = threads.findMany(update.roomId, void 0, "desc");
1599
1588
  for (const thread of roomThreads) {
1600
1589
  const subscriptionKey = _core.getSubscriptionKey.call(void 0, "thread", thread.id);
1601
- if (update.settings.threads === "all") {
1602
- subscriptions[subscriptionKey] = {
1603
- kind: "thread",
1604
- subjectId: thread.id,
1605
- createdAt: /* @__PURE__ */ new Date()
1606
- };
1607
- } else if (update.settings.threads === "none") {
1608
- delete subscriptions[subscriptionKey];
1609
- } else if (update.settings.threads === "replies_and_mentions") {
1610
- let isParticipant = false;
1611
- for (const comment of thread.comments) {
1612
- if (comment.deletedAt) {
1613
- continue;
1614
- }
1615
- if (comment.userId === update.userId) {
1616
- isParticipant = true;
1617
- break;
1618
- }
1619
- const mentionedIds = _core.getMentionedIdsFromCommentBody.call(void 0, comment.body);
1620
- if (mentionedIds.includes(update.userId)) {
1621
- isParticipant = true;
1622
- break;
1623
- }
1624
- }
1625
- if (isParticipant && !subscriptions[subscriptionKey]) {
1590
+ switch (update.settings.threads) {
1591
+ // Create subscriptions for all existing threads in the room
1592
+ case "all": {
1626
1593
  subscriptions[subscriptionKey] = {
1627
1594
  kind: "thread",
1628
1595
  subjectId: thread.id,
1629
1596
  createdAt: /* @__PURE__ */ new Date()
1630
1597
  };
1598
+ break;
1631
1599
  }
1632
- } else {
1633
- _core.assertNever.call(void 0,
1634
- update.settings.threads,
1635
- "Unexpected room subscription settings."
1636
- );
1600
+ // Delete subscriptions for all existing threads in the room
1601
+ case "none": {
1602
+ delete subscriptions[subscriptionKey];
1603
+ break;
1604
+ }
1605
+ // Create subscriptions for every threads in the room which the user participates in but doesn't have a subscription for yet
1606
+ case "replies_and_mentions": {
1607
+ if (isThreadParticipant(thread, update.userId) && !subscriptions[subscriptionKey]) {
1608
+ subscriptions[subscriptionKey] = {
1609
+ kind: "thread",
1610
+ subjectId: thread.id,
1611
+ createdAt: /* @__PURE__ */ new Date()
1612
+ };
1613
+ }
1614
+ break;
1615
+ }
1616
+ default:
1617
+ _core.assertNever.call(void 0,
1618
+ update.settings.threads,
1619
+ "Unexpected thread subscription settings."
1620
+ );
1637
1621
  }
1638
1622
  }
1639
1623
  }
@@ -1827,6 +1811,24 @@ function upsertReaction(reactions, reaction) {
1827
1811
  }
1828
1812
  return reactions;
1829
1813
  }
1814
+ function isThreadParticipant(thread, userId) {
1815
+ let isParticipant = false;
1816
+ for (const comment of thread.comments) {
1817
+ if (comment.deletedAt) {
1818
+ continue;
1819
+ }
1820
+ if (comment.userId === userId) {
1821
+ isParticipant = true;
1822
+ break;
1823
+ }
1824
+ const mentionedIds = _core.getMentionedIdsFromCommentBody.call(void 0, comment.body);
1825
+ if (mentionedIds.includes(userId)) {
1826
+ isParticipant = true;
1827
+ break;
1828
+ }
1829
+ }
1830
+ return isParticipant;
1831
+ }
1830
1832
 
1831
1833
  // src/liveblocks.tsx
1832
1834
  var _jsxruntime = require('react/jsx-runtime');
@@ -4459,4 +4461,4 @@ var _useUpdateMyPresence = useUpdateMyPresence;
4459
4461
 
4460
4462
 
4461
4463
  exports.RoomContext = RoomContext; exports.useSyncExternalStoreWithSelector = useSyncExternalStoreWithSelector; exports.useSignal = useSignal; exports.ClientContext = ClientContext; exports.getUmbrellaStoreForClient = getUmbrellaStoreForClient; exports.useClientOrNull = useClientOrNull; exports.useClient = useClient; exports.LiveblocksProvider = LiveblocksProvider; exports.createLiveblocksContext = createLiveblocksContext; exports.useInboxNotifications = useInboxNotifications; exports.useInboxNotificationsSuspense = useInboxNotificationsSuspense; exports.useMarkAllInboxNotificationsAsRead = useMarkAllInboxNotificationsAsRead; exports.useMarkInboxNotificationAsRead = useMarkInboxNotificationAsRead; exports.useDeleteAllInboxNotifications = useDeleteAllInboxNotifications; exports.useDeleteInboxNotification = useDeleteInboxNotification; exports.useUnreadInboxNotificationsCount = useUnreadInboxNotificationsCount; exports.useUnreadInboxNotificationsCountSuspense = useUnreadInboxNotificationsCountSuspense; exports.useNotificationSettings = useNotificationSettings; exports.useNotificationSettingsSuspense = useNotificationSettingsSuspense; exports.useUpdateNotificationSettings = useUpdateNotificationSettings; exports.useRoomInfo = useRoomInfo; exports.useRoomInfoSuspense = useRoomInfoSuspense; exports._useInboxNotificationThread = _useInboxNotificationThread; exports._useUser = _useUser; exports._useUserSuspense = _useUserSuspense; exports._useUserThreads_experimental = _useUserThreads_experimental; exports._useUserThreadsSuspense_experimental = _useUserThreadsSuspense_experimental; exports.useSyncStatus = useSyncStatus; exports.useErrorListener = useErrorListener; exports.useStatus = useStatus; exports.useReportTextEditor = useReportTextEditor; exports.useYjsProvider = useYjsProvider; exports.useCreateTextMention = useCreateTextMention; exports.useDeleteTextMention = useDeleteTextMention; exports.useResolveMentionSuggestions = useResolveMentionSuggestions; exports.useMentionSuggestionsCache = useMentionSuggestionsCache; exports.useStorageStatus = useStorageStatus; exports.useBatch = useBatch; exports.useLostConnectionListener = useLostConnectionListener; exports.useHistory = useHistory; exports.useUndo = useUndo; exports.useRedo = useRedo; exports.useCanUndo = useCanUndo; exports.useCanRedo = useCanRedo; exports.useOthersConnectionIds = useOthersConnectionIds; exports.useCreateRoomThread = useCreateRoomThread; exports.useDeleteRoomThread = useDeleteRoomThread; exports.useEditRoomThreadMetadata = useEditRoomThreadMetadata; exports.useCreateComment = useCreateComment; exports.useCreateRoomComment = useCreateRoomComment; exports.useEditComment = useEditComment; exports.useEditRoomComment = useEditRoomComment; exports.useDeleteComment = useDeleteComment; exports.useDeleteRoomComment = useDeleteRoomComment; exports.useAddRoomCommentReaction = useAddRoomCommentReaction; exports.useRemoveReaction = useRemoveReaction; exports.useRemoveRoomCommentReaction = useRemoveRoomCommentReaction; exports.useMarkThreadAsRead = useMarkThreadAsRead; exports.useMarkRoomThreadAsRead = useMarkRoomThreadAsRead; exports.useMarkThreadAsResolved = useMarkThreadAsResolved; exports.useMarkRoomThreadAsResolved = useMarkRoomThreadAsResolved; exports.useMarkThreadAsUnresolved = useMarkThreadAsUnresolved; exports.useMarkRoomThreadAsUnresolved = useMarkRoomThreadAsUnresolved; exports.useSubscribeToThread = useSubscribeToThread; exports.useUnsubscribeFromThread = useUnsubscribeFromThread; exports.useThreadSubscription = useThreadSubscription; exports.useRoomThreadSubscription = useRoomThreadSubscription; exports.useHistoryVersionData = useHistoryVersionData; exports.useUpdateRoomNotificationSettings = useUpdateRoomNotificationSettings; exports.useUpdateRoomSubscriptionSettings = useUpdateRoomSubscriptionSettings; 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._useRoomSubscriptionSettings = _useRoomSubscriptionSettings; exports._useRoomNotificationSettingsSuspense = _useRoomNotificationSettingsSuspense; 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;
4462
- //# sourceMappingURL=chunk-VEO3XXA7.cjs.map
4464
+ //# sourceMappingURL=chunk-32HQP5F6.cjs.map