UNPKG

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 3.31 kB
{"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;AAAA,QAAAC,IAAAC,EAAA,CAAA,GAGL;AAAA,IAAAC;AAAAA,IAAAC;AAAAA,IAAAC;AAAAA,EAAAA,IAAqDL;AAAK,MAAAM;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,IAAA,CAAA,MAAAI,cAAAJ,SAAAG,wBAESO,KAAAA,MAAA;AAAA,QAEJN;AAAU;AAGd,UAAAQ,UAAgBC,iBAAiBV,qBAAoB,IAAK,CAAC;AAAC,WAAA,MAC/CW,aAAaF,OAAO;AAAA,EAAC,GACjCD,KAAA,CAACP,YAAYD,oBAAoB,GAACH,OAAAI,YAAAJ,OAAAG,sBAAAH,OAAAU,IAAAV,OAAAW,OAAAD,KAAAV,EAAA,CAAA,GAAAW,KAAAX,EAAA,CAAA,IAPrCe,UAAUL,IAOPC,EAAkC;AAAC,MAAAK;AAAA,SAAAhB,EAAA,CAAA,MAAAE,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;"}