import App from "./App.svelte" import { location } from "./lib/stores" const publishLocation = (_p?: string) => { let _s: string let _h: string if (_p) { const parts = _p.split("#") _p = parts.shift() _h = parts.join() if (_h) _h = "#" + _h const parts2 = _p.split("?") _p = parts2.shift() _s = parts2.join() if (_s) _s = "?" + _s } const newLocation = { path: _p || (typeof window !== "undefined" && window.location?.pathname), search: _p ? _s : typeof window !== "undefined" && window.location?.search, hash: _p ? _h : typeof window !== "undefined" && window.location?.hash, push: !!_p, pop: !_p, categoryPath: "", } newLocation.categoryPath = newLocation.path.replace(/\/[^_\/]+_[^\/]+$/, "") location.set(newLocation) } if (typeof history !== "undefined") { if (typeof Proxy !== "undefined") { // modern browser const historyApply = (target: (this: any, ...args: readonly any[]) => unknown, thisArg: any, argumentsList: string | readonly any[]) => { publishLocation(argumentsList && argumentsList.length >= 2 && argumentsList[2]) Reflect.apply(target, thisArg, argumentsList) } history.pushState = new Proxy(history.pushState, { apply: historyApply, }) history.replaceState = new Proxy(history.replaceState, { apply: historyApply, }) } else { // ie11 const pushStateFn = history.pushState const replaceStateFn = history.replaceState history.pushState = function (data: any, title: string, url?: string) { publishLocation(url) return pushStateFn.apply(history, arguments) } history.replaceState = function (data: any, title: string, url?: string) { publishLocation(url) return replaceStateFn.apply(history, arguments) } } } // else ssr -> no history handling typeof window !== "undefined" && window.addEventListener("popstate", (event) => { publishLocation() }) let appContainer = document?.getElementById("appContainer") const hydrate = true //import.meta?.env?.MODE !== "development" console.log("Features: ", { hydrate }) const app = new App({ target: appContainer, props: {}, hydrate, }) export default app