UNPKG

@sanity/visual-editing

Version:

[![npm stat](https://img.shields.io/npm/dm/@sanity/visual-editing.svg?style=flat-square)](https://npm-stat.com/charts.html?package=@sanity/visual-editing) [![npm version](https://img.shields.io/npm/v/@sanity/visual-editing.svg?style=flat-square)](https://

1 lines 5.96 kB
{"version":3,"file":"VisualEditingComponent2.cjs","sources":["../../src/react-router/VisualEditingComponent.tsx"],"sourcesContent":["import {useEffect, useRef, useState} from 'react'\nimport {useLocation, useNavigate, useRevalidator} from 'react-router'\nimport {type HistoryAdapterNavigate, type HistoryRefresh, type VisualEditingOptions} from '../types'\nimport {enableVisualEditing} from '../ui/enableVisualEditing'\n\n/**\n * @public\n */\nexport interface VisualEditingProps extends Omit<VisualEditingOptions, 'history' | 'refresh'> {\n /**\n * @deprecated The history adapter is already implemented\n */\n history?: never\n /**\n * The refresh API allows smarter refresh logic than the default `location.reload()` behavior.\n * You can call the refreshDefault argument to trigger the default refresh behavior so you don't have to reimplement it.\n */\n refresh?: (\n payload: HistoryRefresh,\n refreshDefault: () => false | Promise<void>,\n ) => false | Promise<void>\n}\n\nexport default function VisualEditingComponent(props: VisualEditingProps): null {\n const {components, refresh, zIndex} = props\n\n const navigateRemix = useNavigate()\n const navigateRemixRef = useRef(navigateRemix)\n const [navigate, setNavigate] = useState<HistoryAdapterNavigate | undefined>()\n const revalidator = useRevalidator()\n const [revalidatorPromise, setRevalidatorPromise] = useState<(() => void) | null>(null)\n const [revalidatorLoading, setRevalidatorLoading] = useState(false)\n\n useEffect(() => {\n navigateRemixRef.current = navigateRemix\n }, [navigateRemix])\n useEffect(() => {\n if (revalidatorPromise && revalidator.state === 'loading') {\n setRevalidatorLoading(true)\n } else if (revalidatorPromise && revalidatorLoading && revalidator.state === 'idle') {\n revalidatorPromise()\n setRevalidatorPromise(null)\n setRevalidatorLoading(false)\n }\n }, [revalidatorLoading, revalidator.state, revalidatorPromise])\n useEffect(() => {\n const disable = enableVisualEditing({\n components,\n zIndex,\n refresh: (payload) => {\n function refreshDefault() {\n if (payload.source === 'mutation' && payload.livePreviewEnabled) {\n return false\n }\n return new Promise<void>((resolve) => {\n revalidator.revalidate()\n setRevalidatorPromise(() => resolve)\n })\n }\n return refresh ? refresh(payload, refreshDefault) : refreshDefault()\n },\n history: {\n subscribe: (_navigate) => {\n setNavigate(() => _navigate)\n return () => setNavigate(undefined)\n },\n update: (update) => {\n if (update.type === 'push' || update.type === 'replace') {\n navigateRemixRef.current(update.url, {\n replace: update.type === 'replace',\n })\n } else if (update.type === 'pop') {\n navigateRemixRef.current(-1)\n }\n },\n },\n })\n return () => disable()\n }, [components, refresh, revalidator, zIndex])\n\n const location = useLocation()\n useEffect(() => {\n if (navigate) {\n navigate({\n type: 'push',\n url: `${location.pathname}${location.search}${location.hash}`,\n })\n }\n }, [location.hash, location.pathname, location.search, navigate])\n\n return null\n}\n"],"names":["exports","default","props","$","_c","components","refresh","zIndex","navigateRemix","useNavigate","navigateRemixRef","useRef","navigate","setNavigate","useState","revalidator","useRevalidator","revalidatorPromise","setRevalidatorPromise","revalidatorLoading","setRevalidatorLoading","t0","t1","t2","t3","t4","t5","current","useEffect","state","disable","enableVisualEditing","payload","refreshDefault","source","livePreviewEnabled","Promise","resolve","revalidate","history","subscribe","_navigate","undefined","update","type","url","replace","location","useLocation","t6","t7","hash","pathname","search"],"mappings":"yIAwFmEA,QAAAC,QAjEnE,SAAeC,GAAAC,MAAAA,EAAAC,IAAA,KACbC,WAAAA,EAAAA,QAAAC,EAAAA,OAAAC,GAAsCL,EAEtCM,EAAsBC,EAAAA,cACtBC,EAAyBC,EAAAA,OAAOH,IAChCI,EAAAC,GAAgCC,EAA6CA,WAC7EC,EAAoBC,EAAAA,kBACpBC,EAAAC,GAAoDJ,EAAAA,gBACpDK,EAAAC,GAAoDN,eAAe,IAAAO,EAAAC,EAIhDC,EAAAC,EAS4CC,EAAAC,EAbIvB,OAAAK,GAEzDa,EAAAA,KACRX,EAAgBiB,QAAWnB,CAAAA,EAC1Bc,GAACd,GAAcL,KAAAK,EAAAL,KAAAkB,EAAAlB,KAAAmB,IAAAD,EAAAlB,EAAA,GAAAmB,EAAAnB,EAAA,IAFlByB,YAAUP,EAEPC,GAAgBnB,EAAA,KAAAY,EAAAc,OAAA1B,EAAA,KAAAgB,GAAAhB,EAAA,KAAAc,GACTM,EAAAA,KACJN,GAA4C,YAAtBF,EAAWc,MACnCT,MACSH,GAAsBE,GAA4C,SAAtBJ,EAAWc,QAChEZ,IACAC,QACAE,MAA2B,EAE5BI,GAACL,EAAoBJ,EAAWc,MAAQZ,GAAmBd,EAAA,GAAAY,EAAAc,MAAA1B,KAAAgB,EAAAhB,KAAAc,EAAAd,KAAAoB,EAAApB,KAAAqB,IAAAD,EAAApB,EAAA,GAAAqB,EAAArB,EAAA,IAR9DyB,EAAAA,UAAUL,EAQPC,GAA4DrB,EAAA,KAAAE,GAAAF,EAAAG,KAAAA,GAAAH,EAAAY,MAAAA,GAAAZ,QAAAI,GACrDkB,EAAAA,KACRK,MAAAA,EAAgBC,EAAAA,EAAA,CAAA1B,aAAAE,SAAAD,QAAA0B,IAIZ,MAAAC,aACMD,OAAmB,aAAnBA,EAAOE,SAA0BF,EAAOG,qBAAmBC,IAAAA,SAAAC,IAI7DtB,EAAWuB,aACXpB,GAAqB,IAAOmB,GAAO,GAAC,EAEvC,OACM/B,EAAUA,EAAQ0B,EAASC,GAAkBA,GAAe,EAACM,QAAA,CAAAC,cAIlE3B,GAAW,IAAO4B,IACL5B,IAAAA,OAAW6B,IAAWC,OAAAA,IAGf,SAAVC,EAAAA,MAAoC,YAAhBD,EAAMC,KAClClC,EAAgBiB,QAASgB,EAAME,IAAA,CAAAC,QACJ,YAAhBH,EAAMC,OAEQ,QAAhBD,EAAMC,MACflC,EAAgBiB,SAAW,EAAA,KAIjC,MACWG,IAAAA,GAAQ,EACpBJ,GAACrB,EAAYC,EAASS,EAAaR,GAAOJ,KAAAE,EAAAF,KAAAG,EAAAH,MAAAY,EAAAZ,MAAAI,EAAAJ,MAAAsB,EAAAtB,MAAAuB,IAAAD,EAAAtB,EAAA,IAAAuB,EAAAvB,EAAA,KAjC7CyB,EAAAA,UAAUH,EAiCPC,GAEHqB,MAAAA,EAAiBC,EAAAA,cAAa,IAAAC,EAAAC,EAAA/C,OAAAA,QAAA4C,EAAAI,MAAAhD,QAAA4C,EAAAK,UAAAjD,QAAA4C,EAAAM,QAAAlD,QAAAS,GACpBqC,EAAAA,KACJrC,GACFA,EAAQ,CAAAgC,KACA,OAAMC,IACP,GAAGE,EAAQK,WAAYL,EAAQM,SAAUN,EAAQI,QACvD,EAEFD,EAACH,CAAAA,EAAQI,KAAOJ,EAAQK,SAAWL,EAAQM,OAASzC,GAAST,EAAA,IAAA4C,EAAAI,KAAAhD,EAAA,IAAA4C,EAAAK,SAAAjD,EAAA,IAAA4C,EAAAM,OAAAlD,MAAAS,EAAAT,MAAA8C,EAAA9C,MAAA+C,IAAAD,EAAA9C,EAAA,IAAA+C,EAAA/C,EAAA,KAPhEyB,YAAUqB,EAOPC,GAA8D,IAAA"}