{"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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"}