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 6.25 kB
{"version":3,"file":"VisualEditingComponent.cjs","sources":["../../src/next-pages-router/VisualEditingComponent.tsx"],"sourcesContent":["import {useRouter} from 'next/router.js'\nimport {useEffect, useState} from 'react'\nimport {useEffectEvent} from 'use-effect-event'\nimport type {\n HistoryAdapterNavigate,\n HistoryRefresh,\n HistoryUpdate,\n VisualEditingOptions,\n} from '../types'\nimport {enableVisualEditing} from '../ui/enableVisualEditing'\n\n/**\n * @public\n */\nexport interface VisualEditingProps extends Omit<VisualEditingOptions, 'history'> {\n /**\n * @deprecated The history adapter is already implemented\n */\n history?: never\n}\n\nexport default function VisualEditingComponent(props: VisualEditingProps): null {\n const {components, refresh: refreshProp, zIndex} = props\n\n const router = useRouter()\n const [navigate, setNavigate] = useState<HistoryAdapterNavigate | undefined>()\n\n const refresh = useEffectEvent((payload: HistoryRefresh): false | Promise<void> => {\n if (refreshProp) {\n return refreshProp(payload)\n }\n async function routerRefresh() {\n // Using the pattern used in the next.js codebase: https://github.com/vercel/next.js/blob/ac2b8ebfb2068661e91ae0fce5039a2e528eb25e/test/integration/prerender-preview/pages/index.js#L31\n await router.replace(router.asPath, undefined, {scroll: false, shallow: false})\n }\n const skipRefresh = (): false => {\n // eslint-disable-next-line no-console\n console.debug(\n 'Live preview is setup, mutation is skipped assuming its handled by the live preview',\n )\n return false\n }\n const mutationRefresh = () => {\n // eslint-disable-next-line no-console\n console.debug('No loaders in live mode detected, reloading server props')\n return routerRefresh()\n }\n\n switch (payload.source) {\n case 'manual':\n return routerRefresh()\n case 'mutation':\n return payload.livePreviewEnabled ? skipRefresh() : mutationRefresh()\n default:\n throw new Error('Unknown refresh source', {cause: payload})\n }\n })\n const update = useEffectEvent((event: HistoryUpdate) => {\n switch (event.type) {\n case 'push':\n return router.push(event.url)\n case 'pop':\n return router.back()\n case 'replace':\n return router.replace(event.url)\n default:\n throw new Error(`Unknown event type: ${event.type}`)\n }\n })\n useEffect(() => {\n const disable = enableVisualEditing({\n components,\n zIndex,\n refresh,\n history: {\n subscribe: (_navigate) => {\n setNavigate(() => _navigate)\n return () => setNavigate(undefined)\n },\n update,\n },\n })\n return () => disable()\n }, [components, zIndex])\n\n const {asPath, basePath, locale, isReady} = useRouter()\n useEffect(() => {\n if (navigate && isReady) {\n const url =\n basePath || locale\n ? `${basePath}${locale ? `/${locale}` : ''}${asPath === '/' ? '' : asPath}`\n : asPath\n navigate({type: 'push', url})\n }\n }, [asPath, basePath, isReady, locale, navigate])\n\n return null\n}\n"],"names":["VisualEditingComponent","props","$","_c","components","refresh","refreshProp","zIndex","router","useRouter","navigate","setNavigate","useState","t0","payload","routerRefresh","replace","asPath","undefined","scroll","shallow","skipRefresh","_temp","mutationRefresh","console","debug","source","livePreviewEnabled","Error","cause","useEffectEvent","t1","event","type","push","url","back","update","t2","disable","enableVisualEditing","history","subscribe","_navigate","t3","useEffect","basePath","locale","isReady","t4","t5"],"mappings":"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"}