@redocly/asyncapi-docs
Version:
Async API docs for Redocly Realm
2 lines (1 loc) • 887 B
JavaScript
import{useEffect as r}from"react";import{useLocation as s}from"react-router-dom";import{IS_BROWSER as a,useActiveSectionId as l}from"@redocly/theme";import{tryDecodeURIComponent as d}from"../utils";let c=!0;function S(e){const t=s(),o=l(t,!0);r(()=>{m({location:t,routingBasePath:e})},[t,e]),r(()=>{if(o&&c){c=!1;return}a&&window.location.pathname!==o&&window.history.replaceState({},"",o)},[o,e])}function m({location:e,routingBasePath:t}){if(e.pathname===t&&e.hash===""){window.scrollTo(0,0);return}const o=e.pathname,n=u(e.hash),i=f(n)||document.querySelector(`[data-section-id="${o}"]`);i?setTimeout(()=>{i.scrollIntoView()},0):window.scrollTo(0,0)}function u(e){const t=e.replace("#","").toLowerCase();if(!t.includes("&m="))return t;const[o,n]=t.split("&m=");return n.includes("&")||n.includes("/")?t:o}function f(e){return document.getElementById(d(e))}export{S as useAutoScroll};