{"version":3,"file":"DisplayedDocumentBroadcaster.mjs","sources":["../../src/presentation/loader/DisplayedDocumentBroadcaster.tsx"],"sourcesContent":["/**\n * Report back up the document state being displayed in the document pane,\n * allowing Presentation Tool to patch the live queries with the same state.\n * This makes the Perspective switcher less confusing, as it applies to everything else on the page.\n * It's also why it's possible to select an older revision and see it in the preview,\n * effectively letting you preview a revert action you might be considering to perform.\n */\n\nimport isEqual from 'fast-deep-equal'\nimport {type PropsWithChildren, useCallback, useContext, useEffect} from 'react'\nimport {type SanityDocument} from 'sanity'\nimport {PresentationDisplayedDocumentContext} from 'sanity/_singletons'\n\nimport {type PresentationDisplayedDocumentContextValue} from './types'\n\nexport interface DisplayedDocumentBroadcasterProps extends PropsWithChildren {\n  setDisplayedDocument: React.Dispatch<\n    React.SetStateAction<Partial<SanityDocument> | null | undefined>\n  >\n  documentId: string | null | undefined\n}\n\nexport function DisplayedDocumentBroadcasterProvider(\n  props: DisplayedDocumentBroadcasterProps,\n): React.JSX.Element {\n  const {children, setDisplayedDocument, documentId} = props\n\n  const context = useCallback<PresentationDisplayedDocumentContextValue>(\n    (next) => setDisplayedDocument((prev) => (isEqual(prev, next) ? prev : next)),\n    [setDisplayedDocument],\n  )\n\n  useEffect(() => {\n    // If no document is currently being displayed then reset the state\n    if (documentId) {\n      return undefined\n    }\n    const timeout = setTimeout(() => setDisplayedDocument(null))\n    return () => clearTimeout(timeout)\n  }, [documentId, setDisplayedDocument])\n\n  return (\n    <PresentationDisplayedDocumentContext.Provider value={context}>\n      {children}\n    </PresentationDisplayedDocumentContext.Provider>\n  )\n}\n\nexport function useDisplayedDocumentBroadcaster(): PresentationDisplayedDocumentContextValue | null {\n  return useContext(PresentationDisplayedDocumentContext)\n}\n"],"names":["DisplayedDocumentBroadcasterProvider","props","$","_c","children","setDisplayedDocument","documentId","t0","next","prev","isEqual","context","t1","t2","timeout","setTimeout","clearTimeout","useEffect","t3","useDisplayedDocumentBroadcaster","useContext","PresentationDisplayedDocumentContext"],"mappings":";;;;;AAsBO,SAAAA,qCAAAC,OAAA;AAAAC,QAAAA,IAAAC,EAAA,CAAA,GAGL;AAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,EAAAA,IAAqDL;AAAKM,MAAAA;AAAAL,WAAAG,wBAGxDE,KAAAC,UAAUH,qBAAoBI,CAAAA,SAAYC,QAAQD,MAAMD,IAAI,IAAIC,OAAOD,IAAK,GAACN,OAAAG,sBAAAH,OAAAK,MAAAA,KAAAL,EAAA,CAAA;AAD/E,QAAAS,UAAgBJ;AAGf,MAAAK,IAAAC;AAAAX,IAAAI,CAAAA,MAAAA,cAAAJ,SAAAG,wBAESO,KAAAA,MAAA;AAEJN,QAAAA;AAAU;AAGd,UAAAQ,UAAgBC,iBAAiBV,qBAAoB,IAAK,CAAC;AAC9CW,WAAAA,MAAAA,aAAaF,OAAO;AAAA,EAChCD,GAAAA,KAAA,CAACP,YAAYD,oBAAoB,GAACH,OAAAI,YAAAJ,OAAAG,sBAAAH,OAAAU,IAAAV,OAAAW,OAAAD,KAAAV,EAAA,CAAA,GAAAW,KAAAX,EAAA,CAAA,IAPrCe,UAAUL,IAOPC,EAAkC;AAACK,MAAAA;AAAA,SAAAhB,EAAAE,CAAAA,MAAAA,YAAAF,SAAAS,WAGpCO,KAAA,oBAAA,qCAAA,UAAA,EAAsDP,OAAAA,SACnDP,SAAAA,CACH,GAAgDF,OAAAE,UAAAF,OAAAS,SAAAT,OAAAgB,MAAAA,KAAAhB,EAAA,CAAA,GAFhDgB;AAEgD;AAI7C,SAAAC,kCAAA;AAAA,SACEC,WAAAC,oCAA+C;AAAC;"}