Skip to content

Commit

Permalink
Json editor (#86)
Browse files Browse the repository at this point in the history
* working panel. still buggy

* more accurate validations

* use zod

* Use zod source of truth accross app

* adjust default json
  • Loading branch information
yhattav authored Jan 15, 2025
1 parent 111427a commit 510f71d
Show file tree
Hide file tree
Showing 11 changed files with 493 additions and 101 deletions.
103 changes: 102 additions & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 4 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
},
"dependencies": {
"@ant-design/icons": "^5.3.0",
"@monaco-editor/react": "^4.6.0",
"@types/d3": "^7.4.3",
"@types/html2canvas": "^0.5.35",
"@types/lz-string": "^1.5.0",
Expand All @@ -40,7 +41,9 @@
"react-dom": "^18.2.0",
"react-icons": "^5.3.0",
"react-router-dom": "^7.0.1",
"tone": "^15.0.4"
"tone": "^15.0.4",
"zod": "^3.24.1",
"zod-validation-error": "^3.4.0"
},
"devDependencies": {
"@chromatic-com/storybook": "^3.2.2",
Expand Down
14 changes: 14 additions & 0 deletions src/components/GravitySimulator/GravitySimulator.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ import { useInteractionHandlers } from "../../hooks/useInteractionHandlers";
import { useSimulatorState } from "../../hooks/useSimulatorState";
import { useParticleSystem } from "../../hooks/useParticleSystem";
import { useScreenshot } from "../../hooks/useScreenshot";
import { JsonScenarioPanel } from "../JsonScenarioPanel/JsonScenarioPanel";

export interface GravitySimulatorProps {
gravityRef: React.RefObject<HTMLDivElement>;
Expand Down Expand Up @@ -315,6 +316,12 @@ export const GravitySimulator: React.FC<GravitySimulatorProps> = ({
saveScenario,
});

const [isJsonPanelOpen, setIsJsonPanelOpen] = useState(false);

const handleJsonPanelToggle = useCallback(() => {
setIsJsonPanelOpen((prev) => !prev);
}, []);

// Audio files definition
const audioFiles = useMemo(
() => [
Expand Down Expand Up @@ -546,6 +553,7 @@ export const GravitySimulator: React.FC<GravitySimulatorProps> = ({
onScreenshot={handleScreenshot}
onScenarioPanel={handleScenarioPanelToggle}
onSettingsPanel={handleSettingsPanelToggle}
onJsonPanel={handleJsonPanelToggle}
isPaused={isPaused}
isFullscreen={isFullscreen}
isAudioPlaying={isAudioPlaying}
Expand Down Expand Up @@ -599,6 +607,12 @@ export const GravitySimulator: React.FC<GravitySimulatorProps> = ({
onSelectScenario={onSelectScenario}
/>

<JsonScenarioPanel
isOpen={isJsonPanelOpen}
onClose={() => setIsJsonPanelOpen(false)}
onApplyScenario={handleSelectScenario}
/>

<SaveScenarioModal
isOpen={isSaveModalOpen}
onClose={() => setIsSaveModalOpen(false)}
Expand Down
Loading

0 comments on commit 510f71d

Please sign in to comment.