An open API service indexing awesome lists of open source software.

https://github.com/ff6347/p5-code-sandbox

Experimental p5.js code sandbox powered by Monaco editor for testing sketches with live feedback
https://github.com/ff6347/p5-code-sandbox

monaco-editor p5js

Last synced: 3 months ago
JSON representation

Experimental p5.js code sandbox powered by Monaco editor for testing sketches with live feedback

Awesome Lists containing this project

README

          

# P5 Code Sandbox

[![All Contributors](https://img.shields.io/badge/all_contributors-1-orange.svg?style=flat-square)](#contributors-)

![](docs/assets/p5-code-sandbox.png)

Experiment to have a code sandbox powered by Monaco editor for testing p5.js code. Based on [this blog](https://joyofcode.xyz/create-a-coding-sandbox) post "Create a JavaScript Code Sandbox" by Matija.
The idea is to be able to build a documentation page for sketches produced during seminars, like in my seminar [gestalten-in-code](https://interface.fh-potsdam.de/gestalten-in-code/) but have all the sketches editable in the sandbox.

**See a demo over at [p5.inpyjamas.dev](https://p5.inpyjamas.dev/)**

## Features

Current feature set is limited but it can:

- Save changes to local storage
- Control via component prop if changes should be saved to local storage
- Control via URL SearchParameters if the local storage should be disabled
- Format using Prettier
- All the great features Monaco has.

See [@ff6347 p5js code sandbox project for planned features](https://github.com/users/ff6347/projects/2/views/1)

## Development

```bash
npm ci
npm run dev
```

## πŸš€ Project Structure

Inside of your Astro project, you'll see the following folders and files:

```text
/
β”œβ”€β”€ public/
β”‚ └── favicon.svg
β”œβ”€β”€ src/
β”‚ β”œβ”€β”€ components/
β”‚ β”‚ └── sandbox.css // the components css
β”‚ β”‚ └── Sandbox.tsx // the component to load in pages
β”‚ β”œβ”€β”€ hooks/
β”‚ β”‚ └── local-storage.ts // the local storage customHook
β”‚ β”œβ”€β”€ hooks/
β”‚ β”‚ └── iframe-source.ts // the html for the iframe
β”‚ β”œβ”€β”€ layouts/
β”‚ β”‚ └── Layout.astro
β”‚ └── pages/
β”‚ └── index.astro
└── package.json
```

## Astro Docs

Astro looks for `.astro` or `.md` files in the `src/pages/` directory. Each page is exposed as a route based on its file name.

There's nothing special about `src/components/`, but that's where we like to put any Astro/React/Vue/Svelte/Preact components.

Any static assets, like images, can be placed in the `public/` directory.

## 🧞 Commands

All commands are run from the root of the project, from a terminal:

| Command | Action |
| :------------------------ | :----------------------------------------------- |
| `npm install` | Installs dependencies |
| `npm run dev` | Starts local dev server at `localhost:4321` |
| `npm run build` | Build your production site to `./dist/` |
| `npm run preview` | Preview your build locally, before deploying |
| `npm run astro ...` | Run CLI commands like `astro add`, `astro check` |
| `npm run astro -- --help` | Get help using the Astro CLI |

## πŸ‘€ Want to learn more?

Feel free to check [our documentation](https://docs.astro.build) or jump into our [Discord server](https://astro.build/chat).

## Contributors ✨

Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):



Fabian MorΓ³n Zirfas
Fabian MorΓ³n Zirfas

πŸ’» 🎨 πŸ€” πŸš‡

This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!