{"version":3,"file":"VisualEditingComponent3.cjs","sources":["../../src/remix/VisualEditingComponent.tsx"],"sourcesContent":["import {useLocation, useNavigate, useRevalidator} from '@remix-run/react'\nimport {useEffect, useRef, useState} from 'react'\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":["VisualEditingComponent","props","$","_c","components","refresh","zIndex","navigateRemix","useNavigate","navigateRemixRef","useRef","navigate","setNavigate","useState","revalidator","useRevalidator","revalidatorPromise","setRevalidatorPromise","revalidatorLoading","setRevalidatorLoading","t0","t1","current","useEffect","t2","t3","state","t4","t5","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":"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"}