@expofp/floorplan
Version:
Interactive floor plan library for expos and events
2 lines (1 loc) • 980 B
JavaScript
import{splitPlatformParams as s}from"@expofp/config";import{createBrowserHistory as d}from"history";import y from"../tools/logger";const t=d(),a=window.location.pathname,l=[];let i="",r=!1,c=!1,u=0,p=()=>{},h;export function getLocationHistory(){return l}function m(e){if(!i)return a+e;const o=s(e).search,n=o==="?"?"":o;return a+(n?`${n}&${i}`:`?${i}`)}export function currentSearch(){return s(t.location.search).search}export function pushQuery(e){!r&&!c&&t.push(m(e))}export function replaceQuery(e){return r||c?!1:(t.replace(m(e)),!0)}export function disableUrlWrites(){r=!0}export function initUrlSync(e){r||=e.offHistory,p=e.onNavigate,i=s(t.location.search).platform,!r&&!t.location.search&&l.push(a),h=t.listen((o,n)=>{f(),!r&&(l.push(a+o.search),y.log("history",n,o),n==="POP"&&p())})}export function destroyUrlSync(){r=!1,i="",f(),h?.()}function f(){c=!1,window.clearTimeout(u)}export function goBack(){c=!0,window.clearTimeout(u),u=window.setTimeout(f,1e3),t.goBack()}