| 25 | } |
| 26 | |
| 27 | function createRouteMapStore(initial: Record<string, string>): RouteMapStore { |
| 28 | const store: RouteMapStore = { |
| 29 | _routeMap: initial, |
| 30 | _listeners: new Set(), |
| 31 | getSnapshot: () => store._routeMap, |
| 32 | subscribe: (listener: () => void) => { |
| 33 | store._listeners.add(listener); |
| 34 | return () => { store._listeners.delete(listener); }; |
| 35 | }, |
| 36 | set: (map: Record<string, string>) => { |
| 37 | store._routeMap = { ...store._routeMap, ...map }; |
| 38 | store._listeners.forEach((l) => l()); |
| 39 | }, |
| 40 | }; |
| 41 | return store; |
| 42 | } |
| 43 | |
| 44 | export const routeMapStore: RouteMapStore = import.meta.hot?.data?.routeMapStore |
| 45 | ?? createRouteMapStore(injectionData.route_map || {}); |