Something went wrong. Try again.
Starship Simulator Controls thoriumsim.com
Something went wrong. Try again.
1.2 kB · 61 lines
TSX
at develop
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162import { type ReactNode, createContext, useContext, useState } from "react";import { create } from "zustand";
function createCircleGridStore({ zoomMin = 0.01, zoomMax = 10000, zoom = 100,}: { zoomMin?: number; zoomMax?: number; zoom?: number;}) { return create<{ zoom: number; zoomMin: number; zoomMax: number; tilt: number; width: number; height: number; }>(() => ({ zoom, zoomMin, zoomMax, tilt: 0, width: 0, height: 0, }));}
export const CircleGirdStoreContext = createContext<ReturnType< typeof createCircleGridStore> | null>(null);
export function CircleGridStoreProvider({ zoomMin = 0.01, zoomMax = 10000, defaultZoom = 100, children,}: { zoomMin?: number; zoomMax?: number; defaultZoom?: number; children: ReactNode;}) { const [useCircleGridStore] = useState(() => createCircleGridStore({ zoomMin, zoomMax, zoom: defaultZoom }), ); return ( <CircleGirdStoreContext.Provider value={useCircleGridStore}> {children} </CircleGirdStoreContext.Provider> );}
export function useCircleGridStore() { const store = useContext(CircleGirdStoreContext); if (!store) { throw new Error("useCircleGridStore must be used within a CircleGridStoreProvider"); } return store;}