// Shared signal that asks the sidebar calculator to open and load a ship // class. The ship-classes table (row activation, "new" button) and the // mobile bottom-tabs entry publish a request here; the in-game layout // watches it to flip the sidebar to the calculator tab, and the // calculator watches it to load the requested class. A module singleton // keeps these siblings decoupled, mirroring `reach.svelte`. // // `token` increments on every request so a repeat request for the same // class still re-triggers the watchers; each watcher records the last // token it handled to act exactly once per request. class CalculatorLoadRequest { /** The class name to load, or null to start a fresh design. */ name: string | null = $state(null); token = $state(0); request(name: string | null): void { this.name = name; this.token += 1; } } export const calculatorLoadRequest = new CalculatorLoadRequest();