@liveblocks/react 3.23.0-exp3 → 3.23.0-exp4
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 +9 -7
- package/dist/_private.cjs.map +1 -1
- package/dist/_private.d.cts +2 -2
- package/dist/_private.d.ts +2 -2
- package/dist/_private.js +3 -1
- package/dist/_private.js.map +1 -1
- package/dist/{chunk-KPYJEXHQ.js → chunk-75UW76PP.js} +2 -2
- package/dist/{chunk-QYUQVBDM.cjs → chunk-BTFWM6LL.cjs} +2 -2
- package/dist/{chunk-QYUQVBDM.cjs.map → chunk-BTFWM6LL.cjs.map} +1 -1
- package/dist/{chunk-HJZWAVCC.js → chunk-JMMTB4CU.js} +118 -2
- package/dist/chunk-JMMTB4CU.js.map +1 -0
- package/dist/{chunk-IMWZEHKF.cjs → chunk-SPZHRPMG.cjs} +121 -5
- package/dist/chunk-SPZHRPMG.cjs.map +1 -0
- package/dist/index.cjs +8 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +7 -3
- package/dist/index.js.map +1 -1
- package/dist/{room-Qo6boT5Q.d.cts → room-DUr5FIYB.d.cts} +71 -3
- package/dist/{room-Qo6boT5Q.d.ts → room-DUr5FIYB.d.ts} +71 -3
- package/dist/suspense.cjs +8 -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 +7 -3
- package/dist/suspense.js.map +1 -1
- package/package.json +3 -3
- package/dist/chunk-HJZWAVCC.js.map +0 -1
- package/dist/chunk-IMWZEHKF.cjs.map +0 -1
- /package/dist/{chunk-KPYJEXHQ.js.map → chunk-75UW76PP.js.map} +0 -0
package/dist/_private.cjs
CHANGED
|
@@ -29,7 +29,8 @@
|
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
|
|
33
|
+
var _chunkSPZHRPMGcjs = require('./chunk-SPZHRPMG.cjs');
|
|
33
34
|
|
|
34
35
|
// src/lib/use-layout-effect.ts
|
|
35
36
|
var _react = require('react');
|
|
@@ -54,7 +55,7 @@ function selectorFor_useGroup(state) {
|
|
|
54
55
|
};
|
|
55
56
|
}
|
|
56
57
|
function useGroup(groupId) {
|
|
57
|
-
const client =
|
|
58
|
+
const client = _chunkSPZHRPMGcjs.useClient.call(void 0, );
|
|
58
59
|
const store = client[_core.kInternal].httpClient.groupsStore;
|
|
59
60
|
const getGroupState = _react.useCallback.call(void 0,
|
|
60
61
|
() => store.getItemState(groupId),
|
|
@@ -63,7 +64,7 @@ function useGroup(groupId) {
|
|
|
63
64
|
_react.useEffect.call(void 0, () => {
|
|
64
65
|
void store.enqueue(groupId);
|
|
65
66
|
}, [store, groupId]);
|
|
66
|
-
return
|
|
67
|
+
return _chunkSPZHRPMGcjs.useSyncExternalStoreWithSelector.call(void 0,
|
|
67
68
|
store.subscribe,
|
|
68
69
|
getGroupState,
|
|
69
70
|
getGroupState,
|
|
@@ -84,8 +85,8 @@ function normalizeMentionSuggestions(suggestions) {
|
|
|
84
85
|
function useMentionSuggestions(roomId, search) {
|
|
85
86
|
const [mentionSuggestions, setMentionSuggestions] = _react.useState.call(void 0, );
|
|
86
87
|
const lastInvokedAt = _react.useRef.call(void 0, );
|
|
87
|
-
const resolveMentionSuggestions =
|
|
88
|
-
const mentionSuggestionsCache =
|
|
88
|
+
const resolveMentionSuggestions = _chunkSPZHRPMGcjs.useResolveMentionSuggestions.call(void 0, );
|
|
89
|
+
const mentionSuggestionsCache = _chunkSPZHRPMGcjs.useMentionSuggestionsCache.call(void 0, );
|
|
89
90
|
_react.useEffect.call(void 0, () => {
|
|
90
91
|
if (search === void 0 || !resolveMentionSuggestions) {
|
|
91
92
|
return;
|
|
@@ -140,7 +141,7 @@ function useMentionSuggestions(roomId, search) {
|
|
|
140
141
|
|
|
141
142
|
|
|
142
143
|
function useSyncSource() {
|
|
143
|
-
const client =
|
|
144
|
+
const client = _chunkSPZHRPMGcjs.useClient.call(void 0, );
|
|
144
145
|
const createSyncSource = client[_core.kInternal].createSyncSource;
|
|
145
146
|
const [syncSource, setSyncSource] = _react.useState.call(void 0, );
|
|
146
147
|
_react.useEffect.call(void 0, () => {
|
|
@@ -184,5 +185,6 @@ function useSyncSource() {
|
|
|
184
185
|
|
|
185
186
|
|
|
186
187
|
|
|
187
|
-
|
|
188
|
+
|
|
189
|
+
exports.getUmbrellaStoreForClient = _chunkSPZHRPMGcjs.getUmbrellaStoreForClient; exports.useAddRoomCommentReaction = _chunkSPZHRPMGcjs.useAddRoomCommentReaction; exports.useClientOrNull = _chunkSPZHRPMGcjs.useClientOrNull; exports.useCreateRoomComment = _chunkSPZHRPMGcjs.useCreateRoomComment; exports.useCreateRoomThread = _chunkSPZHRPMGcjs.useCreateRoomThread; exports.useCreateTextMention = _chunkSPZHRPMGcjs.useCreateTextMention; exports.useDeleteRoomComment = _chunkSPZHRPMGcjs.useDeleteRoomComment; exports.useDeleteRoomThread = _chunkSPZHRPMGcjs.useDeleteRoomThread; exports.useDeleteTextMention = _chunkSPZHRPMGcjs.useDeleteTextMention; exports.useEditRoomComment = _chunkSPZHRPMGcjs.useEditRoomComment; exports.useEditRoomThreadMetadata = _chunkSPZHRPMGcjs.useEditRoomThreadMetadata; exports.useGroup = useGroup; exports.useHasPermissionAccess = _chunkSPZHRPMGcjs.useHasPermissionAccess; exports.useInitial = _chunkSPZHRPMGcjs.useInitial; exports.useLatest = _chunkSPZHRPMGcjs.useLatest; exports.useLayoutEffect = useLayoutEffect; exports.useMarkRoomThreadAsRead = _chunkSPZHRPMGcjs.useMarkRoomThreadAsRead; exports.useMarkRoomThreadAsResolved = _chunkSPZHRPMGcjs.useMarkRoomThreadAsResolved; exports.useMarkRoomThreadAsUnresolved = _chunkSPZHRPMGcjs.useMarkRoomThreadAsUnresolved; exports.useMentionSuggestions = useMentionSuggestions; exports.useMentionSuggestionsCache = _chunkSPZHRPMGcjs.useMentionSuggestionsCache; exports.useRemoveRoomCommentReaction = _chunkSPZHRPMGcjs.useRemoveRoomCommentReaction; exports.useReportTextEditor = _chunkSPZHRPMGcjs.useReportTextEditor; exports.useResolveMentionSuggestions = _chunkSPZHRPMGcjs.useResolveMentionSuggestions; exports.useRoomAttachmentUrl = _chunkSPZHRPMGcjs.useRoomAttachmentUrl; exports.useRoomFileUrl = _chunkSPZHRPMGcjs.useRoomFileUrl; exports.useRoomPermissions = _chunkSPZHRPMGcjs.useRoomPermissions; exports.useRoomThreadSubscription = _chunkSPZHRPMGcjs.useRoomThreadSubscription; exports.useSignal = _chunkSPZHRPMGcjs.useSignal; exports.useSuspendUntilPresenceReady = _chunkSPZHRPMGcjs.useSuspendUntilPresenceReady; exports.useSuspendUntilStorageReady = _chunkSPZHRPMGcjs.useSuspendUntilStorageReady; exports.useSyncExternalStoreWithSelector = _chunkSPZHRPMGcjs.useSyncExternalStoreWithSelector; exports.useSyncSource = useSyncSource; exports.useYjsProvider = _chunkSPZHRPMGcjs.useYjsProvider;
|
|
188
190
|
//# sourceMappingURL=_private.cjs.map
|
package/dist/_private.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/liveblocks/liveblocks/packages/liveblocks-react/dist/_private.cjs","../src/lib/use-layout-effect.ts","../src/use-group.ts","../src/use-mention-suggestions.ts","../src/use-sync-source.ts"],"names":["useEffect","kInternal","useState"],"mappings":"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","file":"/home/runner/work/liveblocks/liveblocks/packages/liveblocks-react/dist/_private.cjs","sourcesContent":[null,"/* eslint-disable no-restricted-syntax */\n\nimport { useEffect, useLayoutEffect as useOriginalLayoutEffect } from \"react\";\n\n// On React 18.2.0 and earlier, useLayoutEffect triggers a warning when\n// executed on the server, so this workaround should be used instead.\nexport const useLayoutEffect =\n typeof window !== \"undefined\" ? useOriginalLayoutEffect : useEffect;\n","import {\n type AsyncResult,\n type GroupData,\n kInternal,\n shallow,\n} from \"@liveblocks/core\";\nimport { useCallback, useEffect } from \"react\";\n\nimport { useClient } from \"./contexts\";\nimport type { GroupAsyncResult } from \"./types\";\nimport { useSyncExternalStoreWithSelector } from \"./use-sync-external-store-with-selector\";\n\nfunction selectorFor_useGroup(\n state: AsyncResult<GroupData | undefined> | undefined\n): GroupAsyncResult {\n if (state === undefined || state?.isLoading) {\n return state ?? { isLoading: true };\n }\n\n if (state.error) {\n return state;\n }\n\n return {\n isLoading: false,\n group: state.data,\n };\n}\n\n/** @private - Internal API, do not rely on it. */\nexport function useGroup(groupId: string): GroupAsyncResult {\n const client = useClient();\n const store = client[kInternal].httpClient.groupsStore;\n\n const getGroupState = useCallback(\n () => store.getItemState(groupId),\n [store, groupId]\n );\n\n useEffect(() => {\n void store.enqueue(groupId);\n }, [store, groupId]);\n\n return useSyncExternalStoreWithSelector(\n store.subscribe,\n getGroupState,\n getGroupState,\n selectorFor_useGroup,\n shallow\n );\n}\n","import { type MentionData, stableStringify } from \"@liveblocks/core\";\nimport { useEffect, useRef, useState } from \"react\";\n\nimport {\n useMentionSuggestionsCache,\n useResolveMentionSuggestions,\n} from \"./room\";\n\nconst MENTION_SUGGESTIONS_DEBOUNCE = 500;\n\n/**\n * Normalize mention suggestions as `MentionData[]`.\n *\n * Mention suggestions were previously typed as `string[]`, a list of user IDs,\n * but to support multiple mention kinds (user, group, etc), they're now\n * typed as `MentionData[]`.\n */\nfunction normalizeMentionSuggestions<T extends string[] | MentionData[]>(\n suggestions: T\n): MentionData[] {\n return suggestions.map(\n (suggestion): MentionData =>\n typeof suggestion === \"string\"\n ? { kind: \"user\" as const, id: suggestion }\n : suggestion\n );\n}\n\n/**\n * @private For internal use only. Do not rely on this hook.\n *\n * Simplistic debounced search, we don't need to worry too much about deduping\n * and race conditions as there can only be one search at a time.\n */\nexport function useMentionSuggestions(roomId: string, search?: string) {\n const [mentionSuggestions, setMentionSuggestions] = useState<MentionData[]>();\n const lastInvokedAt = useRef<number>();\n\n const resolveMentionSuggestions = useResolveMentionSuggestions();\n const mentionSuggestionsCache = useMentionSuggestionsCache();\n\n useEffect(() => {\n if (search === undefined || !resolveMentionSuggestions) {\n return;\n }\n\n const resolveMentionSuggestionsArgs = { text: search, roomId };\n const mentionSuggestionsCacheKey = stableStringify(\n resolveMentionSuggestionsArgs\n );\n let debounceTimeout: number | undefined;\n let isCanceled = false;\n\n const getMentionSuggestions = async () => {\n try {\n lastInvokedAt.current = performance.now();\n const rawMentionSuggestions = await resolveMentionSuggestions(\n resolveMentionSuggestionsArgs\n );\n\n if (!isCanceled) {\n const normalizedSuggestions = normalizeMentionSuggestions(\n rawMentionSuggestions\n );\n setMentionSuggestions(normalizedSuggestions);\n mentionSuggestionsCache.set(\n mentionSuggestionsCacheKey,\n normalizedSuggestions\n );\n }\n } catch (error) {\n console.error((error as Error)?.message);\n }\n };\n\n if (mentionSuggestionsCache.has(mentionSuggestionsCacheKey)) {\n // If there are already cached mention suggestions, use them immediately.\n const cachedSuggestions = mentionSuggestionsCache.get(\n mentionSuggestionsCacheKey\n );\n setMentionSuggestions(cachedSuggestions);\n } else if (\n !lastInvokedAt.current ||\n Math.abs(performance.now() - lastInvokedAt.current) >\n MENTION_SUGGESTIONS_DEBOUNCE\n ) {\n // If on the debounce's leading edge (either because it's the first invokation or enough\n // time has passed since the last debounce), get mention suggestions immediately.\n void getMentionSuggestions();\n } else {\n // Otherwise, wait for the debounce delay.\n debounceTimeout = window.setTimeout(() => {\n void getMentionSuggestions();\n }, MENTION_SUGGESTIONS_DEBOUNCE);\n }\n\n return () => {\n isCanceled = true;\n window.clearTimeout(debounceTimeout);\n };\n }, [search, roomId, resolveMentionSuggestions, mentionSuggestionsCache]);\n\n return mentionSuggestions;\n}\n","import type { SyncSource } from \"@liveblocks/core\";\nimport { kInternal } from \"@liveblocks/core\";\nimport { useEffect, useState } from \"react\";\n\nimport { useClient } from \"./contexts\";\n\n/**\n * @private For internal use only. Do not rely on this hook.\n */\nexport function useSyncSource(): SyncSource | undefined {\n const client = useClient();\n const createSyncSource = client[kInternal].createSyncSource;\n const [syncSource, setSyncSource] = useState<SyncSource | undefined>();\n\n useEffect(() => {\n // Create new sync source on mount\n const newSyncSource = createSyncSource();\n setSyncSource(newSyncSource);\n return () => newSyncSource.destroy();\n }, [createSyncSource]);\n\n return syncSource;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/liveblocks/liveblocks/packages/liveblocks-react/dist/_private.cjs","../src/lib/use-layout-effect.ts","../src/use-group.ts","../src/use-mention-suggestions.ts","../src/use-sync-source.ts"],"names":["useEffect","kInternal","useState"],"mappings":"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","file":"/home/runner/work/liveblocks/liveblocks/packages/liveblocks-react/dist/_private.cjs","sourcesContent":[null,"/* eslint-disable no-restricted-syntax */\n\nimport { useEffect, useLayoutEffect as useOriginalLayoutEffect } from \"react\";\n\n// On React 18.2.0 and earlier, useLayoutEffect triggers a warning when\n// executed on the server, so this workaround should be used instead.\nexport const useLayoutEffect =\n typeof window !== \"undefined\" ? useOriginalLayoutEffect : useEffect;\n","import {\n type AsyncResult,\n type GroupData,\n kInternal,\n shallow,\n} from \"@liveblocks/core\";\nimport { useCallback, useEffect } from \"react\";\n\nimport { useClient } from \"./contexts\";\nimport type { GroupAsyncResult } from \"./types\";\nimport { useSyncExternalStoreWithSelector } from \"./use-sync-external-store-with-selector\";\n\nfunction selectorFor_useGroup(\n state: AsyncResult<GroupData | undefined> | undefined\n): GroupAsyncResult {\n if (state === undefined || state?.isLoading) {\n return state ?? { isLoading: true };\n }\n\n if (state.error) {\n return state;\n }\n\n return {\n isLoading: false,\n group: state.data,\n };\n}\n\n/** @private - Internal API, do not rely on it. */\nexport function useGroup(groupId: string): GroupAsyncResult {\n const client = useClient();\n const store = client[kInternal].httpClient.groupsStore;\n\n const getGroupState = useCallback(\n () => store.getItemState(groupId),\n [store, groupId]\n );\n\n useEffect(() => {\n void store.enqueue(groupId);\n }, [store, groupId]);\n\n return useSyncExternalStoreWithSelector(\n store.subscribe,\n getGroupState,\n getGroupState,\n selectorFor_useGroup,\n shallow\n );\n}\n","import { type MentionData, stableStringify } from \"@liveblocks/core\";\nimport { useEffect, useRef, useState } from \"react\";\n\nimport {\n useMentionSuggestionsCache,\n useResolveMentionSuggestions,\n} from \"./room\";\n\nconst MENTION_SUGGESTIONS_DEBOUNCE = 500;\n\n/**\n * Normalize mention suggestions as `MentionData[]`.\n *\n * Mention suggestions were previously typed as `string[]`, a list of user IDs,\n * but to support multiple mention kinds (user, group, etc), they're now\n * typed as `MentionData[]`.\n */\nfunction normalizeMentionSuggestions<T extends string[] | MentionData[]>(\n suggestions: T\n): MentionData[] {\n return suggestions.map(\n (suggestion): MentionData =>\n typeof suggestion === \"string\"\n ? { kind: \"user\" as const, id: suggestion }\n : suggestion\n );\n}\n\n/**\n * @private For internal use only. Do not rely on this hook.\n *\n * Simplistic debounced search, we don't need to worry too much about deduping\n * and race conditions as there can only be one search at a time.\n */\nexport function useMentionSuggestions(roomId: string, search?: string) {\n const [mentionSuggestions, setMentionSuggestions] = useState<MentionData[]>();\n const lastInvokedAt = useRef<number>();\n\n const resolveMentionSuggestions = useResolveMentionSuggestions();\n const mentionSuggestionsCache = useMentionSuggestionsCache();\n\n useEffect(() => {\n if (search === undefined || !resolveMentionSuggestions) {\n return;\n }\n\n const resolveMentionSuggestionsArgs = { text: search, roomId };\n const mentionSuggestionsCacheKey = stableStringify(\n resolveMentionSuggestionsArgs\n );\n let debounceTimeout: number | undefined;\n let isCanceled = false;\n\n const getMentionSuggestions = async () => {\n try {\n lastInvokedAt.current = performance.now();\n const rawMentionSuggestions = await resolveMentionSuggestions(\n resolveMentionSuggestionsArgs\n );\n\n if (!isCanceled) {\n const normalizedSuggestions = normalizeMentionSuggestions(\n rawMentionSuggestions\n );\n setMentionSuggestions(normalizedSuggestions);\n mentionSuggestionsCache.set(\n mentionSuggestionsCacheKey,\n normalizedSuggestions\n );\n }\n } catch (error) {\n console.error((error as Error)?.message);\n }\n };\n\n if (mentionSuggestionsCache.has(mentionSuggestionsCacheKey)) {\n // If there are already cached mention suggestions, use them immediately.\n const cachedSuggestions = mentionSuggestionsCache.get(\n mentionSuggestionsCacheKey\n );\n setMentionSuggestions(cachedSuggestions);\n } else if (\n !lastInvokedAt.current ||\n Math.abs(performance.now() - lastInvokedAt.current) >\n MENTION_SUGGESTIONS_DEBOUNCE\n ) {\n // If on the debounce's leading edge (either because it's the first invokation or enough\n // time has passed since the last debounce), get mention suggestions immediately.\n void getMentionSuggestions();\n } else {\n // Otherwise, wait for the debounce delay.\n debounceTimeout = window.setTimeout(() => {\n void getMentionSuggestions();\n }, MENTION_SUGGESTIONS_DEBOUNCE);\n }\n\n return () => {\n isCanceled = true;\n window.clearTimeout(debounceTimeout);\n };\n }, [search, roomId, resolveMentionSuggestions, mentionSuggestionsCache]);\n\n return mentionSuggestions;\n}\n","import type { SyncSource } from \"@liveblocks/core\";\nimport { kInternal } from \"@liveblocks/core\";\nimport { useEffect, useState } from \"react\";\n\nimport { useClient } from \"./contexts\";\n\n/**\n * @private For internal use only. Do not rely on this hook.\n */\nexport function useSyncSource(): SyncSource | undefined {\n const client = useClient();\n const createSyncSource = client[kInternal].createSyncSource;\n const [syncSource, setSyncSource] = useState<SyncSource | undefined>();\n\n useEffect(() => {\n // Create new sync source on mount\n const newSyncSource = createSyncSource();\n setSyncSource(newSyncSource);\n return () => newSyncSource.destroy();\n }, [createSyncSource]);\n\n return syncSource;\n}\n"]}
|
package/dist/_private.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { G as GroupAsyncResult } from './room-
|
|
2
|
-
export { g as getUmbrellaStoreForClient, u as useAddRoomCommentReaction, a 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 useHasPermissionAccess, l as useMarkRoomThreadAsRead, m as useMarkRoomThreadAsResolved, n as useMarkRoomThreadAsUnresolved, o as useMentionSuggestionsCache, p as useRemoveRoomCommentReaction, q as useReportTextEditor, r as useResolveMentionSuggestions, s as useRoomAttachmentUrl, t as
|
|
1
|
+
import { G as GroupAsyncResult } from './room-DUr5FIYB.cjs';
|
|
2
|
+
export { g as getUmbrellaStoreForClient, u as useAddRoomCommentReaction, a 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 useHasPermissionAccess, l as useMarkRoomThreadAsRead, m as useMarkRoomThreadAsResolved, n as useMarkRoomThreadAsUnresolved, o as useMentionSuggestionsCache, p as useRemoveRoomCommentReaction, q as useReportTextEditor, r as useResolveMentionSuggestions, s as useRoomAttachmentUrl, t as useRoomFileUrl, v as useRoomPermissions, w as useRoomThreadSubscription, x as useSuspendUntilPresenceReady, y as useSuspendUntilStorageReady, z as useYjsProvider } from './room-DUr5FIYB.cjs';
|
|
3
3
|
import { MutableRefObject, useEffect } from 'react';
|
|
4
4
|
import { MentionData, ISignal, SyncSource } from '@liveblocks/core';
|
|
5
5
|
import '@liveblocks/client';
|
package/dist/_private.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { G as GroupAsyncResult } from './room-
|
|
2
|
-
export { g as getUmbrellaStoreForClient, u as useAddRoomCommentReaction, a 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 useHasPermissionAccess, l as useMarkRoomThreadAsRead, m as useMarkRoomThreadAsResolved, n as useMarkRoomThreadAsUnresolved, o as useMentionSuggestionsCache, p as useRemoveRoomCommentReaction, q as useReportTextEditor, r as useResolveMentionSuggestions, s as useRoomAttachmentUrl, t as
|
|
1
|
+
import { G as GroupAsyncResult } from './room-DUr5FIYB.js';
|
|
2
|
+
export { g as getUmbrellaStoreForClient, u as useAddRoomCommentReaction, a 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 useHasPermissionAccess, l as useMarkRoomThreadAsRead, m as useMarkRoomThreadAsResolved, n as useMarkRoomThreadAsUnresolved, o as useMentionSuggestionsCache, p as useRemoveRoomCommentReaction, q as useReportTextEditor, r as useResolveMentionSuggestions, s as useRoomAttachmentUrl, t as useRoomFileUrl, v as useRoomPermissions, w as useRoomThreadSubscription, x as useSuspendUntilPresenceReady, y as useSuspendUntilStorageReady, z as useYjsProvider } from './room-DUr5FIYB.js';
|
|
3
3
|
import { MutableRefObject, useEffect } from 'react';
|
|
4
4
|
import { MentionData, ISignal, SyncSource } from '@liveblocks/core';
|
|
5
5
|
import '@liveblocks/client';
|
package/dist/_private.js
CHANGED
|
@@ -22,6 +22,7 @@ import {
|
|
|
22
22
|
useReportTextEditor,
|
|
23
23
|
useResolveMentionSuggestions,
|
|
24
24
|
useRoomAttachmentUrl,
|
|
25
|
+
useRoomFileUrl,
|
|
25
26
|
useRoomPermissions,
|
|
26
27
|
useRoomThreadSubscription,
|
|
27
28
|
useSignal,
|
|
@@ -29,7 +30,7 @@ import {
|
|
|
29
30
|
useSuspendUntilStorageReady,
|
|
30
31
|
useSyncExternalStoreWithSelector,
|
|
31
32
|
useYjsProvider
|
|
32
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-JMMTB4CU.js";
|
|
33
34
|
|
|
34
35
|
// src/lib/use-layout-effect.ts
|
|
35
36
|
import { useEffect, useLayoutEffect as useOriginalLayoutEffect } from "react";
|
|
@@ -176,6 +177,7 @@ export {
|
|
|
176
177
|
useReportTextEditor,
|
|
177
178
|
useResolveMentionSuggestions,
|
|
178
179
|
useRoomAttachmentUrl,
|
|
180
|
+
useRoomFileUrl,
|
|
179
181
|
useRoomPermissions,
|
|
180
182
|
useRoomThreadSubscription,
|
|
181
183
|
useSignal,
|
package/dist/_private.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lib/use-layout-effect.ts","../src/use-group.ts","../src/use-mention-suggestions.ts","../src/use-sync-source.ts"],"sourcesContent":["/* eslint-disable no-restricted-syntax */\n\nimport { useEffect, useLayoutEffect as useOriginalLayoutEffect } from \"react\";\n\n// On React 18.2.0 and earlier, useLayoutEffect triggers a warning when\n// executed on the server, so this workaround should be used instead.\nexport const useLayoutEffect =\n typeof window !== \"undefined\" ? useOriginalLayoutEffect : useEffect;\n","import {\n type AsyncResult,\n type GroupData,\n kInternal,\n shallow,\n} from \"@liveblocks/core\";\nimport { useCallback, useEffect } from \"react\";\n\nimport { useClient } from \"./contexts\";\nimport type { GroupAsyncResult } from \"./types\";\nimport { useSyncExternalStoreWithSelector } from \"./use-sync-external-store-with-selector\";\n\nfunction selectorFor_useGroup(\n state: AsyncResult<GroupData | undefined> | undefined\n): GroupAsyncResult {\n if (state === undefined || state?.isLoading) {\n return state ?? { isLoading: true };\n }\n\n if (state.error) {\n return state;\n }\n\n return {\n isLoading: false,\n group: state.data,\n };\n}\n\n/** @private - Internal API, do not rely on it. */\nexport function useGroup(groupId: string): GroupAsyncResult {\n const client = useClient();\n const store = client[kInternal].httpClient.groupsStore;\n\n const getGroupState = useCallback(\n () => store.getItemState(groupId),\n [store, groupId]\n );\n\n useEffect(() => {\n void store.enqueue(groupId);\n }, [store, groupId]);\n\n return useSyncExternalStoreWithSelector(\n store.subscribe,\n getGroupState,\n getGroupState,\n selectorFor_useGroup,\n shallow\n );\n}\n","import { type MentionData, stableStringify } from \"@liveblocks/core\";\nimport { useEffect, useRef, useState } from \"react\";\n\nimport {\n useMentionSuggestionsCache,\n useResolveMentionSuggestions,\n} from \"./room\";\n\nconst MENTION_SUGGESTIONS_DEBOUNCE = 500;\n\n/**\n * Normalize mention suggestions as `MentionData[]`.\n *\n * Mention suggestions were previously typed as `string[]`, a list of user IDs,\n * but to support multiple mention kinds (user, group, etc), they're now\n * typed as `MentionData[]`.\n */\nfunction normalizeMentionSuggestions<T extends string[] | MentionData[]>(\n suggestions: T\n): MentionData[] {\n return suggestions.map(\n (suggestion): MentionData =>\n typeof suggestion === \"string\"\n ? { kind: \"user\" as const, id: suggestion }\n : suggestion\n );\n}\n\n/**\n * @private For internal use only. Do not rely on this hook.\n *\n * Simplistic debounced search, we don't need to worry too much about deduping\n * and race conditions as there can only be one search at a time.\n */\nexport function useMentionSuggestions(roomId: string, search?: string) {\n const [mentionSuggestions, setMentionSuggestions] = useState<MentionData[]>();\n const lastInvokedAt = useRef<number>();\n\n const resolveMentionSuggestions = useResolveMentionSuggestions();\n const mentionSuggestionsCache = useMentionSuggestionsCache();\n\n useEffect(() => {\n if (search === undefined || !resolveMentionSuggestions) {\n return;\n }\n\n const resolveMentionSuggestionsArgs = { text: search, roomId };\n const mentionSuggestionsCacheKey = stableStringify(\n resolveMentionSuggestionsArgs\n );\n let debounceTimeout: number | undefined;\n let isCanceled = false;\n\n const getMentionSuggestions = async () => {\n try {\n lastInvokedAt.current = performance.now();\n const rawMentionSuggestions = await resolveMentionSuggestions(\n resolveMentionSuggestionsArgs\n );\n\n if (!isCanceled) {\n const normalizedSuggestions = normalizeMentionSuggestions(\n rawMentionSuggestions\n );\n setMentionSuggestions(normalizedSuggestions);\n mentionSuggestionsCache.set(\n mentionSuggestionsCacheKey,\n normalizedSuggestions\n );\n }\n } catch (error) {\n console.error((error as Error)?.message);\n }\n };\n\n if (mentionSuggestionsCache.has(mentionSuggestionsCacheKey)) {\n // If there are already cached mention suggestions, use them immediately.\n const cachedSuggestions = mentionSuggestionsCache.get(\n mentionSuggestionsCacheKey\n );\n setMentionSuggestions(cachedSuggestions);\n } else if (\n !lastInvokedAt.current ||\n Math.abs(performance.now() - lastInvokedAt.current) >\n MENTION_SUGGESTIONS_DEBOUNCE\n ) {\n // If on the debounce's leading edge (either because it's the first invokation or enough\n // time has passed since the last debounce), get mention suggestions immediately.\n void getMentionSuggestions();\n } else {\n // Otherwise, wait for the debounce delay.\n debounceTimeout = window.setTimeout(() => {\n void getMentionSuggestions();\n }, MENTION_SUGGESTIONS_DEBOUNCE);\n }\n\n return () => {\n isCanceled = true;\n window.clearTimeout(debounceTimeout);\n };\n }, [search, roomId, resolveMentionSuggestions, mentionSuggestionsCache]);\n\n return mentionSuggestions;\n}\n","import type { SyncSource } from \"@liveblocks/core\";\nimport { kInternal } from \"@liveblocks/core\";\nimport { useEffect, useState } from \"react\";\n\nimport { useClient } from \"./contexts\";\n\n/**\n * @private For internal use only. Do not rely on this hook.\n */\nexport function useSyncSource(): SyncSource | undefined {\n const client = useClient();\n const createSyncSource = client[kInternal].createSyncSource;\n const [syncSource, setSyncSource] = useState<SyncSource | undefined>();\n\n useEffect(() => {\n // Create new sync source on mount\n const newSyncSource = createSyncSource();\n setSyncSource(newSyncSource);\n return () => newSyncSource.destroy();\n }, [createSyncSource]);\n\n return syncSource;\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/lib/use-layout-effect.ts","../src/use-group.ts","../src/use-mention-suggestions.ts","../src/use-sync-source.ts"],"sourcesContent":["/* eslint-disable no-restricted-syntax */\n\nimport { useEffect, useLayoutEffect as useOriginalLayoutEffect } from \"react\";\n\n// On React 18.2.0 and earlier, useLayoutEffect triggers a warning when\n// executed on the server, so this workaround should be used instead.\nexport const useLayoutEffect =\n typeof window !== \"undefined\" ? useOriginalLayoutEffect : useEffect;\n","import {\n type AsyncResult,\n type GroupData,\n kInternal,\n shallow,\n} from \"@liveblocks/core\";\nimport { useCallback, useEffect } from \"react\";\n\nimport { useClient } from \"./contexts\";\nimport type { GroupAsyncResult } from \"./types\";\nimport { useSyncExternalStoreWithSelector } from \"./use-sync-external-store-with-selector\";\n\nfunction selectorFor_useGroup(\n state: AsyncResult<GroupData | undefined> | undefined\n): GroupAsyncResult {\n if (state === undefined || state?.isLoading) {\n return state ?? { isLoading: true };\n }\n\n if (state.error) {\n return state;\n }\n\n return {\n isLoading: false,\n group: state.data,\n };\n}\n\n/** @private - Internal API, do not rely on it. */\nexport function useGroup(groupId: string): GroupAsyncResult {\n const client = useClient();\n const store = client[kInternal].httpClient.groupsStore;\n\n const getGroupState = useCallback(\n () => store.getItemState(groupId),\n [store, groupId]\n );\n\n useEffect(() => {\n void store.enqueue(groupId);\n }, [store, groupId]);\n\n return useSyncExternalStoreWithSelector(\n store.subscribe,\n getGroupState,\n getGroupState,\n selectorFor_useGroup,\n shallow\n );\n}\n","import { type MentionData, stableStringify } from \"@liveblocks/core\";\nimport { useEffect, useRef, useState } from \"react\";\n\nimport {\n useMentionSuggestionsCache,\n useResolveMentionSuggestions,\n} from \"./room\";\n\nconst MENTION_SUGGESTIONS_DEBOUNCE = 500;\n\n/**\n * Normalize mention suggestions as `MentionData[]`.\n *\n * Mention suggestions were previously typed as `string[]`, a list of user IDs,\n * but to support multiple mention kinds (user, group, etc), they're now\n * typed as `MentionData[]`.\n */\nfunction normalizeMentionSuggestions<T extends string[] | MentionData[]>(\n suggestions: T\n): MentionData[] {\n return suggestions.map(\n (suggestion): MentionData =>\n typeof suggestion === \"string\"\n ? { kind: \"user\" as const, id: suggestion }\n : suggestion\n );\n}\n\n/**\n * @private For internal use only. Do not rely on this hook.\n *\n * Simplistic debounced search, we don't need to worry too much about deduping\n * and race conditions as there can only be one search at a time.\n */\nexport function useMentionSuggestions(roomId: string, search?: string) {\n const [mentionSuggestions, setMentionSuggestions] = useState<MentionData[]>();\n const lastInvokedAt = useRef<number>();\n\n const resolveMentionSuggestions = useResolveMentionSuggestions();\n const mentionSuggestionsCache = useMentionSuggestionsCache();\n\n useEffect(() => {\n if (search === undefined || !resolveMentionSuggestions) {\n return;\n }\n\n const resolveMentionSuggestionsArgs = { text: search, roomId };\n const mentionSuggestionsCacheKey = stableStringify(\n resolveMentionSuggestionsArgs\n );\n let debounceTimeout: number | undefined;\n let isCanceled = false;\n\n const getMentionSuggestions = async () => {\n try {\n lastInvokedAt.current = performance.now();\n const rawMentionSuggestions = await resolveMentionSuggestions(\n resolveMentionSuggestionsArgs\n );\n\n if (!isCanceled) {\n const normalizedSuggestions = normalizeMentionSuggestions(\n rawMentionSuggestions\n );\n setMentionSuggestions(normalizedSuggestions);\n mentionSuggestionsCache.set(\n mentionSuggestionsCacheKey,\n normalizedSuggestions\n );\n }\n } catch (error) {\n console.error((error as Error)?.message);\n }\n };\n\n if (mentionSuggestionsCache.has(mentionSuggestionsCacheKey)) {\n // If there are already cached mention suggestions, use them immediately.\n const cachedSuggestions = mentionSuggestionsCache.get(\n mentionSuggestionsCacheKey\n );\n setMentionSuggestions(cachedSuggestions);\n } else if (\n !lastInvokedAt.current ||\n Math.abs(performance.now() - lastInvokedAt.current) >\n MENTION_SUGGESTIONS_DEBOUNCE\n ) {\n // If on the debounce's leading edge (either because it's the first invokation or enough\n // time has passed since the last debounce), get mention suggestions immediately.\n void getMentionSuggestions();\n } else {\n // Otherwise, wait for the debounce delay.\n debounceTimeout = window.setTimeout(() => {\n void getMentionSuggestions();\n }, MENTION_SUGGESTIONS_DEBOUNCE);\n }\n\n return () => {\n isCanceled = true;\n window.clearTimeout(debounceTimeout);\n };\n }, [search, roomId, resolveMentionSuggestions, mentionSuggestionsCache]);\n\n return mentionSuggestions;\n}\n","import type { SyncSource } from \"@liveblocks/core\";\nimport { kInternal } from \"@liveblocks/core\";\nimport { useEffect, useState } from \"react\";\n\nimport { useClient } from \"./contexts\";\n\n/**\n * @private For internal use only. Do not rely on this hook.\n */\nexport function useSyncSource(): SyncSource | undefined {\n const client = useClient();\n const createSyncSource = client[kInternal].createSyncSource;\n const [syncSource, setSyncSource] = useState<SyncSource | undefined>();\n\n useEffect(() => {\n // Create new sync source on mount\n const newSyncSource = createSyncSource();\n setSyncSource(newSyncSource);\n return () => newSyncSource.destroy();\n }, [createSyncSource]);\n\n return syncSource;\n}\n"],"mappings":"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","names":["useEffect","useEffect","useEffect","useEffect","kInternal","useEffect","useState","kInternal","useState","useEffect"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// src/version.ts
|
|
2
2
|
var PKG_NAME = "@liveblocks/react";
|
|
3
|
-
var PKG_VERSION = "3.23.0-
|
|
3
|
+
var PKG_VERSION = "3.23.0-exp4";
|
|
4
4
|
var PKG_FORMAT = "esm";
|
|
5
5
|
|
|
6
6
|
// src/ClientSideSuspense.tsx
|
|
@@ -20,4 +20,4 @@ export {
|
|
|
20
20
|
PKG_FORMAT,
|
|
21
21
|
ClientSideSuspense
|
|
22
22
|
};
|
|
23
|
-
//# sourceMappingURL=chunk-
|
|
23
|
+
//# sourceMappingURL=chunk-75UW76PP.js.map
|
|
@@ -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 = "3.23.0-
|
|
3
|
+
var PKG_VERSION = "3.23.0-exp4";
|
|
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-
|
|
23
|
+
//# sourceMappingURL=chunk-BTFWM6LL.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/liveblocks/liveblocks/packages/liveblocks-react/dist/chunk-
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/liveblocks/liveblocks/packages/liveblocks-react/dist/chunk-BTFWM6LL.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-BTFWM6LL.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"]}
|
|
@@ -3570,6 +3570,7 @@ import {
|
|
|
3570
3570
|
createThreadId,
|
|
3571
3571
|
DefaultMap as DefaultMap3,
|
|
3572
3572
|
errorIf,
|
|
3573
|
+
getLiveFileId,
|
|
3573
3574
|
getSubscriptionKey as getSubscriptionKey3,
|
|
3574
3575
|
hasPermissionAccess,
|
|
3575
3576
|
HttpError as HttpError2,
|
|
@@ -4309,6 +4310,16 @@ function useMutation(callback, deps) {
|
|
|
4309
4310
|
deps
|
|
4310
4311
|
);
|
|
4311
4312
|
}
|
|
4313
|
+
function useUploadFile_withRoomContext(RoomContext) {
|
|
4314
|
+
const room = useRoom_withRoomContext(RoomContext);
|
|
4315
|
+
return useCallback3(
|
|
4316
|
+
(file, options) => room.uploadFile(file, options),
|
|
4317
|
+
[room]
|
|
4318
|
+
);
|
|
4319
|
+
}
|
|
4320
|
+
function useUploadFile() {
|
|
4321
|
+
return useUploadFile_withRoomContext(GlobalRoomContext);
|
|
4322
|
+
}
|
|
4312
4323
|
function useThreads_withRoomContext(RoomContext, options = {}) {
|
|
4313
4324
|
const { scrollOnLoad = true } = options;
|
|
4314
4325
|
const client = useClient();
|
|
@@ -5632,6 +5643,19 @@ function selectorFor_useAttachmentUrl(state) {
|
|
|
5632
5643
|
url: state.data
|
|
5633
5644
|
};
|
|
5634
5645
|
}
|
|
5646
|
+
function selectorFor_useFileUrl(state) {
|
|
5647
|
+
if (state === void 0 || state?.isLoading) {
|
|
5648
|
+
return state ?? { isLoading: true };
|
|
5649
|
+
}
|
|
5650
|
+
if (state.error) {
|
|
5651
|
+
return state;
|
|
5652
|
+
}
|
|
5653
|
+
assert2(state.data !== void 0, "Unexpected missing file URL");
|
|
5654
|
+
return {
|
|
5655
|
+
isLoading: false,
|
|
5656
|
+
url: state.data.url
|
|
5657
|
+
};
|
|
5658
|
+
}
|
|
5635
5659
|
function useAttachmentUrl_withRoomContext(RoomContext, attachmentId) {
|
|
5636
5660
|
const room = useRoom_withRoomContext(RoomContext);
|
|
5637
5661
|
return useRoomAttachmentUrl(attachmentId, room.id);
|
|
@@ -5657,6 +5681,38 @@ function useRoomAttachmentUrl(attachmentId, roomId) {
|
|
|
5657
5681
|
shallow4
|
|
5658
5682
|
);
|
|
5659
5683
|
}
|
|
5684
|
+
function useFileUrl_withRoomContext(RoomContext, file) {
|
|
5685
|
+
const room = useRoom_withRoomContext(RoomContext);
|
|
5686
|
+
return useFileUrl_WithStore(file, room[kInternal4].fileUrlsStore);
|
|
5687
|
+
}
|
|
5688
|
+
function useFileUrl(file) {
|
|
5689
|
+
return useFileUrl_withRoomContext(GlobalRoomContext, file);
|
|
5690
|
+
}
|
|
5691
|
+
function useRoomFileUrl(file, roomId) {
|
|
5692
|
+
const client = useClient();
|
|
5693
|
+
const store = client[kInternal4].httpClient.getOrCreateFileUrlsStore(roomId);
|
|
5694
|
+
return useFileUrl_WithStore(file, store);
|
|
5695
|
+
}
|
|
5696
|
+
function useFileUrl_WithStore(file, store) {
|
|
5697
|
+
const fileId = getLiveFileId(file);
|
|
5698
|
+
const getFileUrlState = useCallback3(
|
|
5699
|
+
() => store.getItemState(fileId),
|
|
5700
|
+
[store, fileId]
|
|
5701
|
+
);
|
|
5702
|
+
const result = useSyncExternalStoreWithSelector(
|
|
5703
|
+
store.subscribe,
|
|
5704
|
+
getFileUrlState,
|
|
5705
|
+
getFileUrlState,
|
|
5706
|
+
selectorFor_useFileUrl,
|
|
5707
|
+
shallow4
|
|
5708
|
+
);
|
|
5709
|
+
useEffect6(() => {
|
|
5710
|
+
if (result.isLoading) {
|
|
5711
|
+
void store.enqueue(fileId);
|
|
5712
|
+
}
|
|
5713
|
+
}, [store, fileId, result.isLoading]);
|
|
5714
|
+
return result;
|
|
5715
|
+
}
|
|
5660
5716
|
function useAttachmentUrlSuspense_withRoomContext(RoomContext, attachmentId) {
|
|
5661
5717
|
const room = useRoom_withRoomContext(RoomContext);
|
|
5662
5718
|
const { attachmentUrlsStore } = room[kInternal4];
|
|
@@ -5691,6 +5747,42 @@ function useAttachmentUrlSuspense(attachmentId) {
|
|
|
5691
5747
|
attachmentId
|
|
5692
5748
|
);
|
|
5693
5749
|
}
|
|
5750
|
+
function useFileUrlSuspense_withRoomContext(RoomContext, file) {
|
|
5751
|
+
const fileId = getLiveFileId(file);
|
|
5752
|
+
const room = useRoom_withRoomContext(RoomContext);
|
|
5753
|
+
const { fileUrlsStore } = room[kInternal4];
|
|
5754
|
+
const getFileUrlState = useCallback3(
|
|
5755
|
+
() => fileUrlsStore.getItemState(fileId),
|
|
5756
|
+
[fileUrlsStore, fileId]
|
|
5757
|
+
);
|
|
5758
|
+
const fileUrlState = getFileUrlState();
|
|
5759
|
+
if (!fileUrlState || fileUrlState.isLoading) {
|
|
5760
|
+
throw fileUrlsStore.enqueue(fileId);
|
|
5761
|
+
}
|
|
5762
|
+
if (fileUrlState.error) {
|
|
5763
|
+
const cacheExpiry$ = fileUrlsStore.waitUntilItemCacheExpires(fileId);
|
|
5764
|
+
if (cacheExpiry$ !== void 0) {
|
|
5765
|
+
throw cacheExpiry$;
|
|
5766
|
+
}
|
|
5767
|
+
throw fileUrlState.error;
|
|
5768
|
+
}
|
|
5769
|
+
const state = useSyncExternalStore3(
|
|
5770
|
+
fileUrlsStore.subscribe,
|
|
5771
|
+
getFileUrlState,
|
|
5772
|
+
getFileUrlState
|
|
5773
|
+
);
|
|
5774
|
+
assert2(state !== void 0, "Unexpected missing state");
|
|
5775
|
+
assert2(!state.isLoading, "Unexpected loading state");
|
|
5776
|
+
assert2(!state.error, "Unexpected error state");
|
|
5777
|
+
return {
|
|
5778
|
+
isLoading: false,
|
|
5779
|
+
url: state.data.url,
|
|
5780
|
+
error: void 0
|
|
5781
|
+
};
|
|
5782
|
+
}
|
|
5783
|
+
function useFileUrlSuspense(file) {
|
|
5784
|
+
return useFileUrlSuspense_withRoomContext(GlobalRoomContext, file);
|
|
5785
|
+
}
|
|
5694
5786
|
function useRoomPermissions(roomId) {
|
|
5695
5787
|
const client = useClient();
|
|
5696
5788
|
const store = getRoomExtrasForClient(client).store;
|
|
@@ -5831,6 +5923,9 @@ function createRoomContext(client) {
|
|
|
5831
5923
|
...args
|
|
5832
5924
|
);
|
|
5833
5925
|
}
|
|
5926
|
+
function useUploadFile_withBoundRoomContext() {
|
|
5927
|
+
return useUploadFile_withRoomContext(BoundRoomContext);
|
|
5928
|
+
}
|
|
5834
5929
|
function useThreads_withBoundRoomContext(...args) {
|
|
5835
5930
|
return useThreads_withRoomContext(BoundRoomContext, ...args);
|
|
5836
5931
|
}
|
|
@@ -5885,9 +5980,15 @@ function createRoomContext(client) {
|
|
|
5885
5980
|
function useAttachmentUrl_withBoundRoomContext(...args) {
|
|
5886
5981
|
return useAttachmentUrl_withRoomContext(BoundRoomContext, ...args);
|
|
5887
5982
|
}
|
|
5983
|
+
function useFileUrl_withBoundRoomContext(...args) {
|
|
5984
|
+
return useFileUrl_withRoomContext(BoundRoomContext, ...args);
|
|
5985
|
+
}
|
|
5888
5986
|
function useAttachmentUrlSuspense_withBoundRoomContext(...args) {
|
|
5889
5987
|
return useAttachmentUrlSuspense_withRoomContext(BoundRoomContext, ...args);
|
|
5890
5988
|
}
|
|
5989
|
+
function useFileUrlSuspense_withBoundRoomContext(...args) {
|
|
5990
|
+
return useFileUrlSuspense_withRoomContext(BoundRoomContext, ...args);
|
|
5991
|
+
}
|
|
5891
5992
|
function useSearchComments_withBoundRoomContext(...args) {
|
|
5892
5993
|
return useSearchComments_withRoomContext(BoundRoomContext, ...args);
|
|
5893
5994
|
}
|
|
@@ -5910,7 +6011,10 @@ function createRoomContext(client) {
|
|
|
5910
6011
|
return useDeleteHistoryVersion_withRoomContext(BoundRoomContext);
|
|
5911
6012
|
}
|
|
5912
6013
|
function useRestoreToStorageVersion_withBoundRoomContext(...args) {
|
|
5913
|
-
return useRestoreToStorageVersion_withRoomContext(
|
|
6014
|
+
return useRestoreToStorageVersion_withRoomContext(
|
|
6015
|
+
BoundRoomContext,
|
|
6016
|
+
...args
|
|
6017
|
+
);
|
|
5914
6018
|
}
|
|
5915
6019
|
function useRoomSubscriptionSettings_withBoundRoomContext() {
|
|
5916
6020
|
return useRoomSubscriptionSettings_withRoomContext(BoundRoomContext);
|
|
@@ -5986,6 +6090,8 @@ function createRoomContext(client) {
|
|
|
5986
6090
|
// prettier-ignore
|
|
5987
6091
|
useMutation: useMutation_withBoundRoomContext,
|
|
5988
6092
|
// prettier-ignore
|
|
6093
|
+
useUploadFile: useUploadFile_withBoundRoomContext,
|
|
6094
|
+
// prettier-ignore
|
|
5989
6095
|
useSelf: useSelf_withBoundRoomContext,
|
|
5990
6096
|
// prettier-ignore
|
|
5991
6097
|
useMyPresence: useMyPresence_withBoundRoomContext,
|
|
@@ -6050,6 +6156,8 @@ function createRoomContext(client) {
|
|
|
6050
6156
|
// prettier-ignore
|
|
6051
6157
|
useAttachmentUrl: useAttachmentUrl_withBoundRoomContext,
|
|
6052
6158
|
// prettier-ignore
|
|
6159
|
+
useFileUrl: useFileUrl_withBoundRoomContext,
|
|
6160
|
+
// prettier-ignore
|
|
6053
6161
|
useSearchComments: useSearchComments_withBoundRoomContext,
|
|
6054
6162
|
// prettier-ignore
|
|
6055
6163
|
useHistoryVersions: useHistoryVersions_withBoundRoomContext,
|
|
@@ -6099,6 +6207,8 @@ function createRoomContext(client) {
|
|
|
6099
6207
|
// prettier-ignore
|
|
6100
6208
|
useMutation: useMutation_withBoundRoomContext,
|
|
6101
6209
|
// prettier-ignore
|
|
6210
|
+
useUploadFile: useUploadFile_withBoundRoomContext,
|
|
6211
|
+
// prettier-ignore
|
|
6102
6212
|
useSelf: useSelfSuspense_withBoundRoomContext,
|
|
6103
6213
|
// prettier-ignore
|
|
6104
6214
|
useMyPresence: useMyPresence_withBoundRoomContext,
|
|
@@ -6163,6 +6273,8 @@ function createRoomContext(client) {
|
|
|
6163
6273
|
// prettier-ignore
|
|
6164
6274
|
useAttachmentUrl: useAttachmentUrlSuspense_withBoundRoomContext,
|
|
6165
6275
|
// prettier-ignore
|
|
6276
|
+
useFileUrl: useFileUrlSuspense_withBoundRoomContext,
|
|
6277
|
+
// prettier-ignore
|
|
6166
6278
|
useHistoryVersions: useHistoryVersionsSuspense_withBoundRoomContext,
|
|
6167
6279
|
// prettier-ignore
|
|
6168
6280
|
useRoomSubscriptionSettings: useRoomSubscriptionSettingsSuspense_withBoundRoomContext,
|
|
@@ -6286,6 +6398,7 @@ export {
|
|
|
6286
6398
|
useCanUndo,
|
|
6287
6399
|
useCanRedo,
|
|
6288
6400
|
useOthersConnectionIds,
|
|
6401
|
+
useUploadFile,
|
|
6289
6402
|
useCreateFeed,
|
|
6290
6403
|
useDeleteFeed,
|
|
6291
6404
|
useUpdateFeedMetadata,
|
|
@@ -6323,7 +6436,10 @@ export {
|
|
|
6323
6436
|
useSuspendUntilStorageReady,
|
|
6324
6437
|
useAttachmentUrl,
|
|
6325
6438
|
useRoomAttachmentUrl,
|
|
6439
|
+
useFileUrl,
|
|
6440
|
+
useRoomFileUrl,
|
|
6326
6441
|
useAttachmentUrlSuspense,
|
|
6442
|
+
useFileUrlSuspense,
|
|
6327
6443
|
useRoomPermissions,
|
|
6328
6444
|
useHasPermissionAccess,
|
|
6329
6445
|
createRoomContext,
|
|
@@ -6366,4 +6482,4 @@ export {
|
|
|
6366
6482
|
_useStorageRoot,
|
|
6367
6483
|
_useUpdateMyPresence
|
|
6368
6484
|
};
|
|
6369
|
-
//# sourceMappingURL=chunk-
|
|
6485
|
+
//# sourceMappingURL=chunk-JMMTB4CU.js.map
|