sanity
Version:
Sanity is a real-time content infrastructure with a scalable, hosted backend featuring a Graph Oriented Query Language (GROQ), asset pipelines and fast edge caches
1 lines • 6.58 kB
Source Map (JSON)
{"version":3,"file":"PostMessageDocuments.mjs","sources":["../../src/presentation/overlays/PostMessageDocuments.tsx"],"sourcesContent":["import {\n type ClientPerspective,\n type MutationEvent,\n type ReconnectEvent,\n type WelcomeEvent,\n} from '@sanity/client'\nimport {type FunctionComponent, memo, useEffect} from 'react'\nimport {filter, first, merge, shareReplay} from 'rxjs'\nimport {isReleasePerspective, RELEASES_STUDIO_CLIENT_OPTIONS, useClient} from 'sanity'\n\nimport {API_VERSION} from '../constants'\nimport {type VisualEditingConnection} from '../types'\n\ninterface PostMessageDocumentsProps {\n comlink: VisualEditingConnection\n perspective: ClientPerspective\n}\n\nconst PostMessageDocuments: FunctionComponent<PostMessageDocumentsProps> = (props) => {\n const {comlink, perspective} = props\n\n const client = useClient(\n isReleasePerspective(perspective) ? RELEASES_STUDIO_CLIENT_OPTIONS : {apiVersion: API_VERSION},\n )\n\n useEffect(() => {\n const listener = client\n .listen(\n '*[!(_id in path(\"_.**\"))]',\n {},\n {\n effectFormat: 'mendoza',\n events: ['welcome', 'mutation', 'reconnect'],\n includePreviousRevision: false,\n includeResult: false,\n includeAllVersions: true,\n tag: 'presentation-documents',\n visibility: 'transaction',\n },\n )\n .pipe(\n filter(\n (event): event is WelcomeEvent | ReconnectEvent | MutationEvent =>\n event.type === 'welcome' || event.type === 'reconnect' || event.type === 'mutation',\n ),\n )\n\n const welcome = listener.pipe(\n filter((event): event is WelcomeEvent => event.type === 'welcome'),\n shareReplay({bufferSize: 1, refCount: false}),\n )\n\n // When new contexts initialize, they need to explicitly request the welcome\n // event, as we can't rely on emitting it into the void\n const unsubscribe = comlink.on('visual-editing/snapshot-welcome', async () => {\n const event = await new Promise<WelcomeEvent>((resolve) => {\n // eslint-disable-next-line @typescript-eslint/no-shadow\n welcome.pipe(first()).subscribe((event) => {\n resolve(event)\n })\n })\n return {event}\n })\n\n const reconnect = listener.pipe(\n filter((event): event is ReconnectEvent => event.type === 'reconnect'),\n )\n\n const mutations = listener.pipe(\n filter((event): event is MutationEvent => event.type === 'mutation'),\n )\n\n const events = merge(\n /**\n * @deprecated remove 'welcome' here and switch to explict welcome message fetching at next major\n */\n welcome,\n mutations,\n reconnect,\n ).subscribe((event) => {\n comlink.post('presentation/snapshot-event', {event})\n })\n\n return () => {\n unsubscribe()\n events.unsubscribe()\n }\n }, [client, comlink])\n\n useEffect(() => {\n return comlink.on('visual-editing/fetch-snapshot', async (data) => {\n const snapshot = await client.getDocument(data.documentId, {\n tag: 'document.snapshots',\n })\n return {snapshot}\n })\n }, [client, comlink])\n\n useEffect(() => {\n return comlink.on('visual-editing/mutate', async (data) => {\n return client.dataRequest('mutate', data, {\n visibility: 'async',\n returnDocuments: true,\n })\n })\n }, [client, comlink])\n\n return null\n}\n\nexport default memo(PostMessageDocuments)\n"],"names":["PostMessageDocuments","props","$","_c","comlink","perspective","t0","isReleasePerspective","RELEASES_STUDIO_CLIENT_OPTIONS","apiVersion","API_VERSION","client","useClient","t1","t2","listener","listen","effectFormat","events","includePreviousRevision","includeResult","includeAllVersions","tag","visibility","pipe","filter","_temp","welcome","_temp2","shareReplay","bufferSize","refCount","unsubscribe","on","event","Promise","resolve","first","subscribe","event_1","reconnect","_temp3","mutations","_temp4","merge","event_5","post","useEffect","t3","t4","data","snapshot","getDocument","documentId","t5","t6","data_0","dataRequest","returnDocuments","memo","type","event_0","event_3","event_4"],"mappings":"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"}