Skip to content

Commit

Permalink
fix type issues. again
Browse files Browse the repository at this point in the history
  • Loading branch information
yhattav committed Nov 27, 2024
1 parent 950df0c commit 8adea5c
Show file tree
Hide file tree
Showing 8 changed files with 57 additions and 71 deletions.
11 changes: 3 additions & 8 deletions src/components/GravitySimulator/GravitySimulator.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React, { useState, useCallback, useEffect } from "react";
import { Point2D, GravityPoint, Force } from "../../utils/types/physics";
import { Point2D, GravityPoint } from "../../utils/types/physics";
import { GravityPointComponent } from "../GravityPoint/GravityPoint";
import { ParticleRenderer } from "../ParticleRenderer/ParticleRenderer";
import { StarPalette } from "../StarPalette/StarPalette";
Expand Down Expand Up @@ -45,12 +45,6 @@ interface GravitySimulatorProps {
className?: string;
}

interface SimulationScenario {
settings: typeof physicsConfig;
gravityPoints: GravityPoint[];
particles: Array<Omit<Particle, "trails" | "force">>;
}

export const GravitySimulator: React.FC<GravitySimulatorProps> = ({
gravityRef,
pointerPos,
Expand Down Expand Up @@ -313,7 +307,6 @@ export const GravitySimulator: React.FC<GravitySimulatorProps> = ({
y,
label: template.label,
mass: template.mass,
color: template.color,
},
]);
}
Expand Down Expand Up @@ -348,6 +341,7 @@ export const GravitySimulator: React.FC<GravitySimulatorProps> = ({
settings: physicsConfig,
gravityPoints,
particles: particles.map(
// eslint-disable-next-line @typescript-eslint/no-unused-vars
({ trails, force, ...particle }) => particle
),
},
Expand All @@ -369,6 +363,7 @@ export const GravitySimulator: React.FC<GravitySimulatorProps> = ({
settings: physicsConfig,
gravityPoints,
particles: particles.map(
// eslint-disable-next-line @typescript-eslint/no-unused-vars
({ trails, force, ...particle }) => particle
),
},
Expand Down
20 changes: 13 additions & 7 deletions src/components/SimulatorSettings/SimulatorSettings.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
import React, { useState } from "react";

Check failure on line 1 in src/components/SimulatorSettings/SimulatorSettings.tsx

View workflow job for this annotation

GitHub Actions / build

'useState' is defined but never used
import { motion, AnimatePresence } from "framer-motion";
import { PHYSICS_CONFIG, SETTINGS_METADATA } from "../../constants/physics";
import {
DEFAULT_PHYSICS_CONFIG,
SETTINGS_METADATA,
} from "../../constants/physics";
import { useSettings } from "../../contexts/SettingsContext";

interface SimulatorSettingsProps {
onSettingsChange: (settings: typeof PHYSICS_CONFIG) => void;
onSettingsChange: (settings: typeof DEFAULT_PHYSICS_CONFIG) => void;
isOpen: boolean;
onClose: () => void;
}
Expand Down Expand Up @@ -40,7 +43,7 @@ export const SimulatorSettings: React.FC<SimulatorSettingsProps> = ({
onSettingsChange({ ...settings, ...newSettings });
};

const shouldShowSetting = (key: keyof typeof PHYSICS_CONFIG) => {
const shouldShowSetting = (key: keyof typeof DEFAULT_PHYSICS_CONFIG) => {
const isDevSetting = SETTINGS_METADATA[key].isDev;
return !isDevSetting || (isDevelopment && showDevSettings);
};
Expand Down Expand Up @@ -130,10 +133,13 @@ export const SimulatorSettings: React.FC<SimulatorSettingsProps> = ({
)}

{Object.entries(settings).map(([key, value]) =>
shouldShowSetting(key as keyof typeof PHYSICS_CONFIG) ? (
shouldShowSetting(
key as keyof typeof DEFAULT_PHYSICS_CONFIG
) ? (
<div key={key} style={{ marginBottom: "16px" }}>
{SETTINGS_METADATA[key as keyof typeof PHYSICS_CONFIG]
.type === "boolean" ? (
{SETTINGS_METADATA[
key as keyof typeof DEFAULT_PHYSICS_CONFIG
].type === "boolean" ? (
<label
style={{
display: "flex",
Expand Down Expand Up @@ -228,7 +234,7 @@ export const SimulatorSettings: React.FC<SimulatorSettingsProps> = ({
value={value as number}
onChange={(e) =>
handleSettingChange(
key as keyof typeof PHYSICS_CONFIG,
key as keyof typeof DEFAULT_PHYSICS_CONFIG,
Number(e.target.value)
)
}
Expand Down
18 changes: 15 additions & 3 deletions src/constants/physics.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,20 @@ interface BooleanSettingMetadata {
}

type SettingMetadata = SliderSettingMetadata | BooleanSettingMetadata;

export const PHYSICS_CONFIG = {
export interface PhysicsSettings {
NEW_PARTICLE_MASS: number;
NEW_PARTICLE_ELASTICITY: number;
FRICTION: number;
DELTA_TIME: number;
POINTER_MASS: number;
SHOW_VELOCITY_ARROWS: boolean;
SHOW_FORCE_ARROWS: boolean;
CONSTANT_FORCE_X: number;
CONSTANT_FORCE_Y: number;
SOLID_BOUNDARIES: boolean;
PARTICLES_EXERT_GRAVITY: boolean;
}
export const DEFAULT_PHYSICS_CONFIG: PhysicsSettings = {
NEW_PARTICLE_MASS: 0.1,
NEW_PARTICLE_ELASTICITY: 0.8,
FRICTION: 1,
Expand All @@ -30,7 +42,7 @@ export const PHYSICS_CONFIG = {
} as const;

export const SETTINGS_METADATA: Record<
keyof typeof PHYSICS_CONFIG,
keyof typeof DEFAULT_PHYSICS_CONFIG,
SettingMetadata
> = {
NEW_PARTICLE_MASS: {
Expand Down
31 changes: 17 additions & 14 deletions src/contexts/SettingsContext.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React, { createContext, useContext, useState, useCallback } from "react";
import { PHYSICS_CONFIG } from "../constants/physics";
import { DEFAULT_PHYSICS_CONFIG, PhysicsSettings } from "../constants/physics";
import { Scenario } from "../types/scenario";

const STORAGE_KEYS = {
Expand All @@ -9,10 +9,10 @@ const STORAGE_KEYS = {
} as const;

interface SettingsContextType {
settings: typeof PHYSICS_CONFIG;
settings: PhysicsSettings;
showDevSettings: boolean;
savedScenarios: Scenario[];
updateSettings: (newSettings: Partial<typeof PHYSICS_CONFIG>) => void;
updateSettings: (newSettings: Partial<PhysicsSettings>) => void;
updateShowDevSettings: (show: boolean) => void;
resetSettings: () => void;
saveScenario: (scenario: Scenario) => void;
Expand All @@ -25,20 +25,20 @@ const SettingsContext = createContext<SettingsContextType | null>(null);
export const SettingsProvider: React.FC<{ children: React.ReactNode }> = ({
children,
}) => {
const [settings, setSettings] = useState(() => {
const [settings, setSettings] = useState<PhysicsSettings>(() => {
const savedSettings = localStorage.getItem(STORAGE_KEYS.SETTINGS);
if (savedSettings) {
const parsedSettings = JSON.parse(savedSettings);
const validSettings = Object.keys(parsedSettings).reduce((acc, key) => {
if (key in PHYSICS_CONFIG) {
if (key in DEFAULT_PHYSICS_CONFIG) {
acc[key] = parsedSettings[key];
}
return acc;
}, {} as Partial<typeof PHYSICS_CONFIG>);
}, {} as Partial<PhysicsSettings>);

return { ...PHYSICS_CONFIG, ...validSettings };
return { ...DEFAULT_PHYSICS_CONFIG, ...validSettings };
}
return PHYSICS_CONFIG;
return DEFAULT_PHYSICS_CONFIG;
});

const [showDevSettings, setShowDevSettings] = useState(() => {
Expand All @@ -52,13 +52,13 @@ export const SettingsProvider: React.FC<{ children: React.ReactNode }> = ({
});

const updateSettings = useCallback(
(newSettings: Partial<typeof PHYSICS_CONFIG>) => {
(newSettings: Partial<PhysicsSettings>) => {
const validNewSettings = Object.keys(newSettings).reduce((acc, key) => {
if (key in PHYSICS_CONFIG) {
acc[key] = newSettings[key as keyof typeof PHYSICS_CONFIG];
if (key in DEFAULT_PHYSICS_CONFIG) {
acc[key] = newSettings[key as keyof typeof DEFAULT_PHYSICS_CONFIG];
}
return acc;
}, {} as Partial<typeof PHYSICS_CONFIG>);
}, {} as Partial<PhysicsSettings>);

setSettings((prevSettings) => {
const updatedSettings = { ...prevSettings, ...validNewSettings };
Expand All @@ -78,8 +78,11 @@ export const SettingsProvider: React.FC<{ children: React.ReactNode }> = ({
}, []);

const resetSettings = useCallback(() => {
setSettings(PHYSICS_CONFIG);
localStorage.setItem(STORAGE_KEYS.SETTINGS, JSON.stringify(PHYSICS_CONFIG));
setSettings(DEFAULT_PHYSICS_CONFIG);
localStorage.setItem(
STORAGE_KEYS.SETTINGS,
JSON.stringify(DEFAULT_PHYSICS_CONFIG)
);
}, []);

const saveScenario = useCallback((scenario: Scenario) => {
Expand Down
1 change: 1 addition & 0 deletions src/types/particle.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ export interface ParticleMechanics {
force: Force;
mass: number;
elasticity: number;
trails: TrailPoint[];
}

export interface TrailPoint extends Point2D {
Expand Down
37 changes: 7 additions & 30 deletions src/types/scenario.ts
Original file line number Diff line number Diff line change
@@ -1,34 +1,11 @@
import { GravityPoint } from "../utils/types/physics";
import { Particle } from "./particle";
import { PhysicsSettings } from "../constants/physics";

export interface ScenarioData {
settings: {
NEW_PARTICLE_MASS: number;
NEW_PARTICLE_ELASTICITY: number;
FRICTION: number;
DELTA_TIME: number;
POINTER_MASS: number;
SHOW_VELOCITY_ARROWS: boolean;
SHOW_FORCE_ARROWS: boolean;
CONSTANT_FORCE_X: number;
CONSTANT_FORCE_Y: number;
SOLID_BOUNDARIES: boolean;
PARTICLES_EXERT_GRAVITY: boolean;
};
gravityPoints: Array<{
x: number;
y: number;
label: string;
mass: number;
color: string;
}>;
particles: Array<{
id: string;
position: { x: number; y: number };
velocity: { x: number; y: number };
mass: number;
elasticity: number;
color: string;
size: number;
showVectors: boolean;
}>;
settings: PhysicsSettings;
gravityPoints: Array<GravityPoint>;
particles: Array<Omit<Particle, "trails" | "force">>;
}

export interface Scenario {
Expand Down
8 changes: 0 additions & 8 deletions src/types/star.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,6 @@ export interface StarTemplate {
size: number;
}

export interface GravityPoint {
x: number;
y: number;
label: string;
mass: number;
color: string;
}

export enum StarClass {
BROWN_DWARF = "BROWN_DWARF", // <0.08 solar masses
RED_DWARF = "RED_DWARF", // 0.08-0.45 solar masses
Expand Down
2 changes: 1 addition & 1 deletion src/utils/types/physics.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ export interface Point2D {
export interface GravityPoint extends Point2D {
label: string;
mass: number;
color: string;
id?: string;
}

export interface Force {
Expand Down

0 comments on commit 8adea5c

Please sign in to comment.