@liveblocks/react 3.22.0-file1 → 3.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_private.cjs +7 -9
- 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 +1 -3
- package/dist/_private.js.map +1 -1
- package/dist/{chunk-CMU4CSPN.js → chunk-AIWIX5H4.js} +2 -2
- package/dist/{chunk-NDJ7FOCQ.cjs → chunk-DAXUX747.cjs} +2 -2
- package/dist/{chunk-NDJ7FOCQ.cjs.map → chunk-DAXUX747.cjs.map} +1 -1
- package/dist/{chunk-L4ZABYCR.js → chunk-HJZWAVCC.js} +81 -89
- package/dist/chunk-HJZWAVCC.js.map +1 -0
- package/dist/{chunk-TWH7P3HK.cjs → chunk-IMWZEHKF.cjs} +81 -89
- package/dist/chunk-IMWZEHKF.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 +8 -4
- package/dist/index.js.map +1 -1
- package/dist/{room-C0arh8HO.d.cts → room-Qo6boT5Q.d.cts} +52 -14
- package/dist/{room-C0arh8HO.d.ts → room-Qo6boT5Q.d.ts} +52 -14
- package/dist/suspense.cjs +4 -6
- 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 +2 -4
- package/dist/suspense.js.map +1 -1
- package/package.json +3 -3
- package/dist/chunk-L4ZABYCR.js.map +0 -1
- package/dist/chunk-TWH7P3HK.cjs.map +0 -1
- /package/dist/{chunk-CMU4CSPN.js.map → chunk-AIWIX5H4.js.map} +0 -0
package/dist/_private.cjs
CHANGED
|
@@ -29,8 +29,7 @@
|
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
var _chunkTWH7P3HKcjs = require('./chunk-TWH7P3HK.cjs');
|
|
32
|
+
var _chunkIMWZEHKFcjs = require('./chunk-IMWZEHKF.cjs');
|
|
34
33
|
|
|
35
34
|
// src/lib/use-layout-effect.ts
|
|
36
35
|
var _react = require('react');
|
|
@@ -55,7 +54,7 @@ function selectorFor_useGroup(state) {
|
|
|
55
54
|
};
|
|
56
55
|
}
|
|
57
56
|
function useGroup(groupId) {
|
|
58
|
-
const client =
|
|
57
|
+
const client = _chunkIMWZEHKFcjs.useClient.call(void 0, );
|
|
59
58
|
const store = client[_core.kInternal].httpClient.groupsStore;
|
|
60
59
|
const getGroupState = _react.useCallback.call(void 0,
|
|
61
60
|
() => store.getItemState(groupId),
|
|
@@ -64,7 +63,7 @@ function useGroup(groupId) {
|
|
|
64
63
|
_react.useEffect.call(void 0, () => {
|
|
65
64
|
void store.enqueue(groupId);
|
|
66
65
|
}, [store, groupId]);
|
|
67
|
-
return
|
|
66
|
+
return _chunkIMWZEHKFcjs.useSyncExternalStoreWithSelector.call(void 0,
|
|
68
67
|
store.subscribe,
|
|
69
68
|
getGroupState,
|
|
70
69
|
getGroupState,
|
|
@@ -85,8 +84,8 @@ function normalizeMentionSuggestions(suggestions) {
|
|
|
85
84
|
function useMentionSuggestions(roomId, search) {
|
|
86
85
|
const [mentionSuggestions, setMentionSuggestions] = _react.useState.call(void 0, );
|
|
87
86
|
const lastInvokedAt = _react.useRef.call(void 0, );
|
|
88
|
-
const resolveMentionSuggestions =
|
|
89
|
-
const mentionSuggestionsCache =
|
|
87
|
+
const resolveMentionSuggestions = _chunkIMWZEHKFcjs.useResolveMentionSuggestions.call(void 0, );
|
|
88
|
+
const mentionSuggestionsCache = _chunkIMWZEHKFcjs.useMentionSuggestionsCache.call(void 0, );
|
|
90
89
|
_react.useEffect.call(void 0, () => {
|
|
91
90
|
if (search === void 0 || !resolveMentionSuggestions) {
|
|
92
91
|
return;
|
|
@@ -141,7 +140,7 @@ function useMentionSuggestions(roomId, search) {
|
|
|
141
140
|
|
|
142
141
|
|
|
143
142
|
function useSyncSource() {
|
|
144
|
-
const client =
|
|
143
|
+
const client = _chunkIMWZEHKFcjs.useClient.call(void 0, );
|
|
145
144
|
const createSyncSource = client[_core.kInternal].createSyncSource;
|
|
146
145
|
const [syncSource, setSyncSource] = _react.useState.call(void 0, );
|
|
147
146
|
_react.useEffect.call(void 0, () => {
|
|
@@ -185,6 +184,5 @@ function useSyncSource() {
|
|
|
185
184
|
|
|
186
185
|
|
|
187
186
|
|
|
188
|
-
|
|
189
|
-
exports.getUmbrellaStoreForClient = _chunkTWH7P3HKcjs.getUmbrellaStoreForClient; exports.useAddRoomCommentReaction = _chunkTWH7P3HKcjs.useAddRoomCommentReaction; exports.useClientOrNull = _chunkTWH7P3HKcjs.useClientOrNull; exports.useCreateRoomComment = _chunkTWH7P3HKcjs.useCreateRoomComment; exports.useCreateRoomThread = _chunkTWH7P3HKcjs.useCreateRoomThread; exports.useCreateTextMention = _chunkTWH7P3HKcjs.useCreateTextMention; exports.useDeleteRoomComment = _chunkTWH7P3HKcjs.useDeleteRoomComment; exports.useDeleteRoomThread = _chunkTWH7P3HKcjs.useDeleteRoomThread; exports.useDeleteTextMention = _chunkTWH7P3HKcjs.useDeleteTextMention; exports.useEditRoomComment = _chunkTWH7P3HKcjs.useEditRoomComment; exports.useEditRoomThreadMetadata = _chunkTWH7P3HKcjs.useEditRoomThreadMetadata; exports.useGroup = useGroup; exports.useHasPermissionAccess = _chunkTWH7P3HKcjs.useHasPermissionAccess; exports.useInitial = _chunkTWH7P3HKcjs.useInitial; exports.useLatest = _chunkTWH7P3HKcjs.useLatest; exports.useLayoutEffect = useLayoutEffect; exports.useMarkRoomThreadAsRead = _chunkTWH7P3HKcjs.useMarkRoomThreadAsRead; exports.useMarkRoomThreadAsResolved = _chunkTWH7P3HKcjs.useMarkRoomThreadAsResolved; exports.useMarkRoomThreadAsUnresolved = _chunkTWH7P3HKcjs.useMarkRoomThreadAsUnresolved; exports.useMentionSuggestions = useMentionSuggestions; exports.useMentionSuggestionsCache = _chunkTWH7P3HKcjs.useMentionSuggestionsCache; exports.useRemoveRoomCommentReaction = _chunkTWH7P3HKcjs.useRemoveRoomCommentReaction; exports.useReportTextEditor = _chunkTWH7P3HKcjs.useReportTextEditor; exports.useResolveMentionSuggestions = _chunkTWH7P3HKcjs.useResolveMentionSuggestions; exports.useRoomAttachmentUrl = _chunkTWH7P3HKcjs.useRoomAttachmentUrl; exports.useRoomFileUrl = _chunkTWH7P3HKcjs.useRoomFileUrl; exports.useRoomPermissions = _chunkTWH7P3HKcjs.useRoomPermissions; exports.useRoomThreadSubscription = _chunkTWH7P3HKcjs.useRoomThreadSubscription; exports.useSignal = _chunkTWH7P3HKcjs.useSignal; exports.useSuspendUntilPresenceReady = _chunkTWH7P3HKcjs.useSuspendUntilPresenceReady; exports.useSuspendUntilStorageReady = _chunkTWH7P3HKcjs.useSuspendUntilStorageReady; exports.useSyncExternalStoreWithSelector = _chunkTWH7P3HKcjs.useSyncExternalStoreWithSelector; exports.useSyncSource = useSyncSource; exports.useYjsProvider = _chunkTWH7P3HKcjs.useYjsProvider;
|
|
187
|
+
exports.getUmbrellaStoreForClient = _chunkIMWZEHKFcjs.getUmbrellaStoreForClient; exports.useAddRoomCommentReaction = _chunkIMWZEHKFcjs.useAddRoomCommentReaction; exports.useClientOrNull = _chunkIMWZEHKFcjs.useClientOrNull; exports.useCreateRoomComment = _chunkIMWZEHKFcjs.useCreateRoomComment; exports.useCreateRoomThread = _chunkIMWZEHKFcjs.useCreateRoomThread; exports.useCreateTextMention = _chunkIMWZEHKFcjs.useCreateTextMention; exports.useDeleteRoomComment = _chunkIMWZEHKFcjs.useDeleteRoomComment; exports.useDeleteRoomThread = _chunkIMWZEHKFcjs.useDeleteRoomThread; exports.useDeleteTextMention = _chunkIMWZEHKFcjs.useDeleteTextMention; exports.useEditRoomComment = _chunkIMWZEHKFcjs.useEditRoomComment; exports.useEditRoomThreadMetadata = _chunkIMWZEHKFcjs.useEditRoomThreadMetadata; exports.useGroup = useGroup; exports.useHasPermissionAccess = _chunkIMWZEHKFcjs.useHasPermissionAccess; exports.useInitial = _chunkIMWZEHKFcjs.useInitial; exports.useLatest = _chunkIMWZEHKFcjs.useLatest; exports.useLayoutEffect = useLayoutEffect; exports.useMarkRoomThreadAsRead = _chunkIMWZEHKFcjs.useMarkRoomThreadAsRead; exports.useMarkRoomThreadAsResolved = _chunkIMWZEHKFcjs.useMarkRoomThreadAsResolved; exports.useMarkRoomThreadAsUnresolved = _chunkIMWZEHKFcjs.useMarkRoomThreadAsUnresolved; exports.useMentionSuggestions = useMentionSuggestions; exports.useMentionSuggestionsCache = _chunkIMWZEHKFcjs.useMentionSuggestionsCache; exports.useRemoveRoomCommentReaction = _chunkIMWZEHKFcjs.useRemoveRoomCommentReaction; exports.useReportTextEditor = _chunkIMWZEHKFcjs.useReportTextEditor; exports.useResolveMentionSuggestions = _chunkIMWZEHKFcjs.useResolveMentionSuggestions; exports.useRoomAttachmentUrl = _chunkIMWZEHKFcjs.useRoomAttachmentUrl; exports.useRoomPermissions = _chunkIMWZEHKFcjs.useRoomPermissions; exports.useRoomThreadSubscription = _chunkIMWZEHKFcjs.useRoomThreadSubscription; exports.useSignal = _chunkIMWZEHKFcjs.useSignal; exports.useSuspendUntilPresenceReady = _chunkIMWZEHKFcjs.useSuspendUntilPresenceReady; exports.useSuspendUntilStorageReady = _chunkIMWZEHKFcjs.useSuspendUntilStorageReady; exports.useSyncExternalStoreWithSelector = _chunkIMWZEHKFcjs.useSyncExternalStoreWithSelector; exports.useSyncSource = useSyncSource; exports.useYjsProvider = _chunkIMWZEHKFcjs.useYjsProvider;
|
|
190
188
|
//# 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-Qo6boT5Q.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 useRoomPermissions, v as useRoomThreadSubscription, w as useSuspendUntilPresenceReady, x as useSuspendUntilStorageReady, y as useYjsProvider } from './room-Qo6boT5Q.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-Qo6boT5Q.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 useRoomPermissions, v as useRoomThreadSubscription, w as useSuspendUntilPresenceReady, x as useSuspendUntilStorageReady, y as useYjsProvider } from './room-Qo6boT5Q.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,7 +22,6 @@ import {
|
|
|
22
22
|
useReportTextEditor,
|
|
23
23
|
useResolveMentionSuggestions,
|
|
24
24
|
useRoomAttachmentUrl,
|
|
25
|
-
useRoomFileUrl,
|
|
26
25
|
useRoomPermissions,
|
|
27
26
|
useRoomThreadSubscription,
|
|
28
27
|
useSignal,
|
|
@@ -30,7 +29,7 @@ import {
|
|
|
30
29
|
useSuspendUntilStorageReady,
|
|
31
30
|
useSyncExternalStoreWithSelector,
|
|
32
31
|
useYjsProvider
|
|
33
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-HJZWAVCC.js";
|
|
34
33
|
|
|
35
34
|
// src/lib/use-layout-effect.ts
|
|
36
35
|
import { useEffect, useLayoutEffect as useOriginalLayoutEffect } from "react";
|
|
@@ -177,7 +176,6 @@ export {
|
|
|
177
176
|
useReportTextEditor,
|
|
178
177
|
useResolveMentionSuggestions,
|
|
179
178
|
useRoomAttachmentUrl,
|
|
180
|
-
useRoomFileUrl,
|
|
181
179
|
useRoomPermissions,
|
|
182
180
|
useRoomThreadSubscription,
|
|
183
181
|
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.22.0
|
|
3
|
+
var PKG_VERSION = "3.22.0";
|
|
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-AIWIX5H4.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.22.0
|
|
3
|
+
var PKG_VERSION = "3.22.0";
|
|
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-DAXUX747.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-DAXUX747.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-DAXUX747.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"]}
|
|
@@ -5330,6 +5330,41 @@ function useRoomSubscriptionSettingsSuspense_withRoomContext(RoomContext) {
|
|
|
5330
5330
|
function useRoomSubscriptionSettingsSuspense() {
|
|
5331
5331
|
return useRoomSubscriptionSettingsSuspense_withRoomContext(GlobalRoomContext);
|
|
5332
5332
|
}
|
|
5333
|
+
function parseStorageVersionNodes(ndjson) {
|
|
5334
|
+
return ndjson.split("\n").filter((line) => line.length > 0).map((line) => JSON.parse(line));
|
|
5335
|
+
}
|
|
5336
|
+
function useHistoryVersionStorageData_withRoomContext(RoomContext, versionId) {
|
|
5337
|
+
const [state, setState] = useState3({
|
|
5338
|
+
isLoading: true
|
|
5339
|
+
});
|
|
5340
|
+
const room = useRoom_withRoomContext(RoomContext);
|
|
5341
|
+
useEffect6(() => {
|
|
5342
|
+
setState({ isLoading: true });
|
|
5343
|
+
const load = async () => {
|
|
5344
|
+
try {
|
|
5345
|
+
const response = await room[kInternal4].fetchStorageHistoryVersion(versionId);
|
|
5346
|
+
const nodes = parseStorageVersionNodes(await response.text());
|
|
5347
|
+
const data = room[kInternal4].liveObjectFromNodeStream(nodes);
|
|
5348
|
+
setState({ isLoading: false, data });
|
|
5349
|
+
} catch (error) {
|
|
5350
|
+
setState({
|
|
5351
|
+
isLoading: false,
|
|
5352
|
+
error: error instanceof Error ? error : new Error(
|
|
5353
|
+
"An unknown error occurred while loading this version"
|
|
5354
|
+
)
|
|
5355
|
+
});
|
|
5356
|
+
}
|
|
5357
|
+
};
|
|
5358
|
+
void load();
|
|
5359
|
+
}, [room, versionId]);
|
|
5360
|
+
return state;
|
|
5361
|
+
}
|
|
5362
|
+
function useHistoryVersionStorageData(versionId) {
|
|
5363
|
+
return useHistoryVersionStorageData_withRoomContext(
|
|
5364
|
+
GlobalRoomContext,
|
|
5365
|
+
versionId
|
|
5366
|
+
);
|
|
5367
|
+
}
|
|
5333
5368
|
function useHistoryVersionYjsData_withRoomContext(RoomContext, versionId) {
|
|
5334
5369
|
const [state, setState] = useState3({
|
|
5335
5370
|
isLoading: true
|
|
@@ -5339,7 +5374,7 @@ function useHistoryVersionYjsData_withRoomContext(RoomContext, versionId) {
|
|
|
5339
5374
|
setState({ isLoading: true });
|
|
5340
5375
|
const load = async () => {
|
|
5341
5376
|
try {
|
|
5342
|
-
const response = await room[kInternal4].
|
|
5377
|
+
const response = await room[kInternal4].fetchYjsHistoryVersion(versionId);
|
|
5343
5378
|
const buffer = await response.arrayBuffer();
|
|
5344
5379
|
const data = new Uint8Array(buffer);
|
|
5345
5380
|
setState({
|
|
@@ -5388,6 +5423,30 @@ function useHistoryVersions_withRoomContext(RoomContext) {
|
|
|
5388
5423
|
);
|
|
5389
5424
|
return useSignal(store.outputs.versionsByRoomId.getOrCreate(room.id).signal);
|
|
5390
5425
|
}
|
|
5426
|
+
function useDeleteHistoryVersion_withRoomContext(RoomContext) {
|
|
5427
|
+
const room = useRoom_withRoomContext(RoomContext);
|
|
5428
|
+
return useCallback3(
|
|
5429
|
+
(versionId) => room[kInternal4].deleteHistoryVersion(versionId),
|
|
5430
|
+
[room]
|
|
5431
|
+
);
|
|
5432
|
+
}
|
|
5433
|
+
function useDeleteHistoryVersion() {
|
|
5434
|
+
return useDeleteHistoryVersion_withRoomContext(GlobalRoomContext);
|
|
5435
|
+
}
|
|
5436
|
+
function useRestoreToStorageVersion_withRoomContext(RoomContext, versionId) {
|
|
5437
|
+
const room = useRoom_withRoomContext(RoomContext);
|
|
5438
|
+
return useCallback3(async () => {
|
|
5439
|
+
const response = await room[kInternal4].fetchStorageHistoryVersion(versionId);
|
|
5440
|
+
const nodes = parseStorageVersionNodes(await response.text());
|
|
5441
|
+
room[kInternal4].reconcileStorageWithNodes(nodes);
|
|
5442
|
+
}, [room, versionId]);
|
|
5443
|
+
}
|
|
5444
|
+
function useRestoreToStorageVersion(versionId) {
|
|
5445
|
+
return useRestoreToStorageVersion_withRoomContext(
|
|
5446
|
+
GlobalRoomContext,
|
|
5447
|
+
versionId
|
|
5448
|
+
);
|
|
5449
|
+
}
|
|
5391
5450
|
function useHistoryVersions() {
|
|
5392
5451
|
return useHistoryVersions_withRoomContext(GlobalRoomContext);
|
|
5393
5452
|
}
|
|
@@ -5573,22 +5632,6 @@ function selectorFor_useAttachmentUrl(state) {
|
|
|
5573
5632
|
url: state.data
|
|
5574
5633
|
};
|
|
5575
5634
|
}
|
|
5576
|
-
function getLiveFileId(file) {
|
|
5577
|
-
return typeof file === "string" ? file : file.id;
|
|
5578
|
-
}
|
|
5579
|
-
function selectorFor_useFileUrl(state) {
|
|
5580
|
-
if (state === void 0 || state?.isLoading) {
|
|
5581
|
-
return state ?? { isLoading: true };
|
|
5582
|
-
}
|
|
5583
|
-
if (state.error) {
|
|
5584
|
-
return state;
|
|
5585
|
-
}
|
|
5586
|
-
assert2(state.data !== void 0, "Unexpected missing file URL");
|
|
5587
|
-
return {
|
|
5588
|
-
isLoading: false,
|
|
5589
|
-
url: state.data
|
|
5590
|
-
};
|
|
5591
|
-
}
|
|
5592
5635
|
function useAttachmentUrl_withRoomContext(RoomContext, attachmentId) {
|
|
5593
5636
|
const room = useRoom_withRoomContext(RoomContext);
|
|
5594
5637
|
return useRoomAttachmentUrl(attachmentId, room.id);
|
|
@@ -5614,32 +5657,6 @@ function useRoomAttachmentUrl(attachmentId, roomId) {
|
|
|
5614
5657
|
shallow4
|
|
5615
5658
|
);
|
|
5616
5659
|
}
|
|
5617
|
-
function useFileUrl_withRoomContext(RoomContext, file) {
|
|
5618
|
-
const room = useRoom_withRoomContext(RoomContext);
|
|
5619
|
-
return useRoomFileUrl(file, room.id);
|
|
5620
|
-
}
|
|
5621
|
-
function useFileUrl(file) {
|
|
5622
|
-
return useFileUrl_withRoomContext(GlobalRoomContext, file);
|
|
5623
|
-
}
|
|
5624
|
-
function useRoomFileUrl(file, roomId) {
|
|
5625
|
-
const fileId = getLiveFileId(file);
|
|
5626
|
-
const client = useClient();
|
|
5627
|
-
const store = client[kInternal4].httpClient.getOrCreateFileUrlsStore(roomId);
|
|
5628
|
-
const getFileUrlState = useCallback3(
|
|
5629
|
-
() => store.getItemState(fileId),
|
|
5630
|
-
[store, fileId]
|
|
5631
|
-
);
|
|
5632
|
-
useEffect6(() => {
|
|
5633
|
-
void store.enqueue(fileId);
|
|
5634
|
-
}, [store, fileId]);
|
|
5635
|
-
return useSyncExternalStoreWithSelector(
|
|
5636
|
-
store.subscribe,
|
|
5637
|
-
getFileUrlState,
|
|
5638
|
-
getFileUrlState,
|
|
5639
|
-
selectorFor_useFileUrl,
|
|
5640
|
-
shallow4
|
|
5641
|
-
);
|
|
5642
|
-
}
|
|
5643
5660
|
function useAttachmentUrlSuspense_withRoomContext(RoomContext, attachmentId) {
|
|
5644
5661
|
const room = useRoom_withRoomContext(RoomContext);
|
|
5645
5662
|
const { attachmentUrlsStore } = room[kInternal4];
|
|
@@ -5674,38 +5691,6 @@ function useAttachmentUrlSuspense(attachmentId) {
|
|
|
5674
5691
|
attachmentId
|
|
5675
5692
|
);
|
|
5676
5693
|
}
|
|
5677
|
-
function useFileUrlSuspense_withRoomContext(RoomContext, file) {
|
|
5678
|
-
const fileId = getLiveFileId(file);
|
|
5679
|
-
const room = useRoom_withRoomContext(RoomContext);
|
|
5680
|
-
const { fileUrlsStore } = room[kInternal4];
|
|
5681
|
-
const getFileUrlState = useCallback3(
|
|
5682
|
-
() => fileUrlsStore.getItemState(fileId),
|
|
5683
|
-
[fileUrlsStore, fileId]
|
|
5684
|
-
);
|
|
5685
|
-
const fileUrlState = getFileUrlState();
|
|
5686
|
-
if (!fileUrlState || fileUrlState.isLoading) {
|
|
5687
|
-
throw fileUrlsStore.enqueue(fileId);
|
|
5688
|
-
}
|
|
5689
|
-
if (fileUrlState.error) {
|
|
5690
|
-
throw fileUrlState.error;
|
|
5691
|
-
}
|
|
5692
|
-
const state = useSyncExternalStore3(
|
|
5693
|
-
fileUrlsStore.subscribe,
|
|
5694
|
-
getFileUrlState,
|
|
5695
|
-
getFileUrlState
|
|
5696
|
-
);
|
|
5697
|
-
assert2(state !== void 0, "Unexpected missing state");
|
|
5698
|
-
assert2(!state.isLoading, "Unexpected loading state");
|
|
5699
|
-
assert2(!state.error, "Unexpected error state");
|
|
5700
|
-
return {
|
|
5701
|
-
isLoading: false,
|
|
5702
|
-
url: state.data,
|
|
5703
|
-
error: void 0
|
|
5704
|
-
};
|
|
5705
|
-
}
|
|
5706
|
-
function useFileUrlSuspense(file) {
|
|
5707
|
-
return useFileUrlSuspense_withRoomContext(GlobalRoomContext, file);
|
|
5708
|
-
}
|
|
5709
5694
|
function useRoomPermissions(roomId) {
|
|
5710
5695
|
const client = useClient();
|
|
5711
5696
|
const store = getRoomExtrasForClient(client).store;
|
|
@@ -5900,15 +5885,9 @@ function createRoomContext(client) {
|
|
|
5900
5885
|
function useAttachmentUrl_withBoundRoomContext(...args) {
|
|
5901
5886
|
return useAttachmentUrl_withRoomContext(BoundRoomContext, ...args);
|
|
5902
5887
|
}
|
|
5903
|
-
function useFileUrl_withBoundRoomContext(...args) {
|
|
5904
|
-
return useFileUrl_withRoomContext(BoundRoomContext, ...args);
|
|
5905
|
-
}
|
|
5906
5888
|
function useAttachmentUrlSuspense_withBoundRoomContext(...args) {
|
|
5907
5889
|
return useAttachmentUrlSuspense_withRoomContext(BoundRoomContext, ...args);
|
|
5908
5890
|
}
|
|
5909
|
-
function useFileUrlSuspense_withBoundRoomContext(...args) {
|
|
5910
|
-
return useFileUrlSuspense_withRoomContext(BoundRoomContext, ...args);
|
|
5911
|
-
}
|
|
5912
5891
|
function useSearchComments_withBoundRoomContext(...args) {
|
|
5913
5892
|
return useSearchComments_withRoomContext(BoundRoomContext, ...args);
|
|
5914
5893
|
}
|
|
@@ -5918,9 +5897,21 @@ function createRoomContext(client) {
|
|
|
5918
5897
|
function useHistoryVersionsSuspense_withBoundRoomContext() {
|
|
5919
5898
|
return useHistoryVersionsSuspense_withRoomContext(BoundRoomContext);
|
|
5920
5899
|
}
|
|
5900
|
+
function useHistoryVersionStorageData_withBoundRoomContext(...args) {
|
|
5901
|
+
return useHistoryVersionStorageData_withRoomContext(
|
|
5902
|
+
BoundRoomContext,
|
|
5903
|
+
...args
|
|
5904
|
+
);
|
|
5905
|
+
}
|
|
5921
5906
|
function useHistoryVersionYjsData_withBoundRoomContext(...args) {
|
|
5922
5907
|
return useHistoryVersionYjsData_withRoomContext(BoundRoomContext, ...args);
|
|
5923
5908
|
}
|
|
5909
|
+
function useDeleteHistoryVersion_withBoundRoomContext() {
|
|
5910
|
+
return useDeleteHistoryVersion_withRoomContext(BoundRoomContext);
|
|
5911
|
+
}
|
|
5912
|
+
function useRestoreToStorageVersion_withBoundRoomContext(...args) {
|
|
5913
|
+
return useRestoreToStorageVersion_withRoomContext(BoundRoomContext, ...args);
|
|
5914
|
+
}
|
|
5924
5915
|
function useRoomSubscriptionSettings_withBoundRoomContext() {
|
|
5925
5916
|
return useRoomSubscriptionSettings_withRoomContext(BoundRoomContext);
|
|
5926
5917
|
}
|
|
@@ -6059,16 +6050,19 @@ function createRoomContext(client) {
|
|
|
6059
6050
|
// prettier-ignore
|
|
6060
6051
|
useAttachmentUrl: useAttachmentUrl_withBoundRoomContext,
|
|
6061
6052
|
// prettier-ignore
|
|
6062
|
-
useFileUrl: useFileUrl_withBoundRoomContext,
|
|
6063
|
-
// prettier-ignore
|
|
6064
6053
|
useSearchComments: useSearchComments_withBoundRoomContext,
|
|
6065
6054
|
// prettier-ignore
|
|
6066
6055
|
useHistoryVersions: useHistoryVersions_withBoundRoomContext,
|
|
6067
6056
|
// prettier-ignore
|
|
6068
6057
|
useHistoryVersionData: useHistoryVersionYjsData_withBoundRoomContext,
|
|
6069
6058
|
// prettier-ignore
|
|
6059
|
+
useHistoryVersionStorageData: useHistoryVersionStorageData_withBoundRoomContext,
|
|
6070
6060
|
useHistoryVersionYjsData: useHistoryVersionYjsData_withBoundRoomContext,
|
|
6071
6061
|
// prettier-ignore
|
|
6062
|
+
useDeleteHistoryVersion: useDeleteHistoryVersion_withBoundRoomContext,
|
|
6063
|
+
// prettier-ignore
|
|
6064
|
+
useRestoreToStorageVersion: useRestoreToStorageVersion_withBoundRoomContext,
|
|
6065
|
+
// prettier-ignore
|
|
6072
6066
|
useRoomSubscriptionSettings: useRoomSubscriptionSettings_withBoundRoomContext,
|
|
6073
6067
|
// prettier-ignore
|
|
6074
6068
|
useUpdateRoomSubscriptionSettings: useUpdateRoomSubscriptionSettings_withBoundRoomContext,
|
|
@@ -6169,8 +6163,6 @@ function createRoomContext(client) {
|
|
|
6169
6163
|
// prettier-ignore
|
|
6170
6164
|
useAttachmentUrl: useAttachmentUrlSuspense_withBoundRoomContext,
|
|
6171
6165
|
// prettier-ignore
|
|
6172
|
-
useFileUrl: useFileUrlSuspense_withBoundRoomContext,
|
|
6173
|
-
// prettier-ignore
|
|
6174
6166
|
useHistoryVersions: useHistoryVersionsSuspense_withBoundRoomContext,
|
|
6175
6167
|
// prettier-ignore
|
|
6176
6168
|
useRoomSubscriptionSettings: useRoomSubscriptionSettingsSuspense_withBoundRoomContext,
|
|
@@ -6320,18 +6312,18 @@ export {
|
|
|
6320
6312
|
useUnsubscribeFromThread,
|
|
6321
6313
|
useThreadSubscription,
|
|
6322
6314
|
useRoomThreadSubscription,
|
|
6315
|
+
useHistoryVersionStorageData,
|
|
6323
6316
|
useHistoryVersionData,
|
|
6324
6317
|
useHistoryVersionYjsData,
|
|
6318
|
+
useDeleteHistoryVersion,
|
|
6319
|
+
useRestoreToStorageVersion,
|
|
6325
6320
|
useUpdateRoomSubscriptionSettings,
|
|
6326
6321
|
useSuspendUntilPresenceReady,
|
|
6327
6322
|
useOthersConnectionIdsSuspense,
|
|
6328
6323
|
useSuspendUntilStorageReady,
|
|
6329
6324
|
useAttachmentUrl,
|
|
6330
6325
|
useRoomAttachmentUrl,
|
|
6331
|
-
useFileUrl,
|
|
6332
|
-
useRoomFileUrl,
|
|
6333
6326
|
useAttachmentUrlSuspense,
|
|
6334
|
-
useFileUrlSuspense,
|
|
6335
6327
|
useRoomPermissions,
|
|
6336
6328
|
useHasPermissionAccess,
|
|
6337
6329
|
createRoomContext,
|
|
@@ -6374,4 +6366,4 @@ export {
|
|
|
6374
6366
|
_useStorageRoot,
|
|
6375
6367
|
_useUpdateMyPresence
|
|
6376
6368
|
};
|
|
6377
|
-
//# sourceMappingURL=chunk-
|
|
6369
|
+
//# sourceMappingURL=chunk-HJZWAVCC.js.map
|