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 5.52 kB
{"version":3,"file":"PostMessageRefreshMutations.mjs","sources":["../../src/presentation/editor/PostMessageRefreshMutations.tsx"],"sourcesContent":["import {memo, startTransition, useEffect, useMemo, useState} from 'react'\nimport {getPublishedId, type SanityDocument, useEditState} from 'sanity'\n\nimport {type ConnectionStatus, type VisualEditingConnection} from '../types'\n\nexport interface PostMessageRefreshMutationsProps {\n id: string\n type: string\n comlink: VisualEditingConnection\n previewKitConnection: ConnectionStatus\n loadersConnection: ConnectionStatus\n}\n\nfunction PostMessageRefreshMutations(props: PostMessageRefreshMutationsProps): React.ReactNode {\n const {comlink, type, previewKitConnection, loadersConnection} = props\n const id = useMemo(() => getPublishedId(props.id), [props.id])\n const {draft, published, ready} = useEditState(id, type, 'low')\n const livePreviewEnabled =\n previewKitConnection === 'connected' || loadersConnection === 'connected'\n\n if ((ready && draft) || published) {\n return (\n <PostMessageRefreshMutationsInner\n key={id}\n comlink={comlink}\n draft={draft}\n livePreviewEnabled={livePreviewEnabled}\n published={published}\n />\n )\n }\n\n return null\n}\n\ninterface PostMessageRefreshMutationsInnerProps\n extends Pick<PostMessageRefreshMutationsProps, 'comlink'> {\n livePreviewEnabled: boolean\n draft: SanityDocument | null\n published: SanityDocument | null\n}\nfunction PostMessageRefreshMutationsInner(props: PostMessageRefreshMutationsInnerProps) {\n const {comlink, draft, published, livePreviewEnabled} = props\n const [prevDraft, setPrevDraft] = useState(draft)\n const [prevPublished, setPrevPublished] = useState(published)\n\n useEffect(() => {\n if (prevDraft?._rev !== draft?._rev) {\n startTransition(() => setPrevDraft(draft))\n if (draft) {\n comlink?.post('presentation/refresh', {\n source: 'mutation',\n livePreviewEnabled,\n document: parseDocument(draft),\n })\n }\n }\n if (prevPublished?._rev !== published?._rev) {\n startTransition(() => setPrevPublished(published))\n if (published) {\n comlink?.post('presentation/refresh', {\n source: 'mutation',\n livePreviewEnabled,\n document: parseDocument(published),\n })\n }\n }\n }, [comlink, draft, livePreviewEnabled, prevDraft?._rev, prevPublished?._rev, published])\n\n return null\n}\n\nfunction parseDocument(document: SanityDocument & {slug?: {current?: string | null}}): {\n _id: string\n _type: string\n _rev: string\n slug?: {current?: string | null}\n} {\n const {_id, _type, _rev, slug} = document\n return {_id, _type, _rev, slug}\n}\n\nexport default memo(PostMessageRefreshMutations)\n"],"names":["PostMessageRefreshMutations","props","$","_c","comlink","type","previewKitConnection","loadersConnection","t0","t1","id","getPublishedId","draft","published","ready","useEditState","livePreviewEnabled","t2","PostMessageRefreshMutationsInner","prevDraft","setPrevDraft","useState","prevPublished","setPrevPublished","_rev","startTransition","post","source","document","parseDocument","t3","useEffect","_id","_type","slug","memo"],"mappings":"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"}