diff --git a/packages/embed/README.md b/packages/embed/README.md new file mode 100644 index 00000000..c3b7f3ee --- /dev/null +++ b/packages/embed/README.md @@ -0,0 +1,27 @@ +# @strudel.cycles/embed + +This package contains a embeddable web component for the Strudel REPL. + +## Usage + +Either install with `npm i @strudel.cycles/embed` or just use a cdn to import the script: + +```html + + + + +``` + +Note that the Code is placed inside HTML comments to prevent the browser from treating it as HTML. diff --git a/packages/embed/embed.js b/packages/embed/embed.js new file mode 100644 index 00000000..0661e229 --- /dev/null +++ b/packages/embed/embed.js @@ -0,0 +1,17 @@ +class Strudel extends HTMLElement { + constructor() { + super(); + } + connectedCallback() { + setTimeout(() => { + const code = (this.innerHTML + '').replace('', '').trim(); + const iframe = document.createElement('iframe'); + const src = `https://strudel.tidalcycles.org/#${encodeURIComponent(btoa(code))}`; + iframe.setAttribute('src', src); + iframe.setAttribute('width', '600'); + iframe.setAttribute('height', '400'); + this.appendChild(iframe); + }); + } +} +customElements.define('strudel-repl', Strudel); diff --git a/packages/embed/example.html b/packages/embed/example.html new file mode 100644 index 00000000..f4ef6d31 --- /dev/null +++ b/packages/embed/example.html @@ -0,0 +1,15 @@ + + + + diff --git a/packages/embed/package.json b/packages/embed/package.json new file mode 100644 index 00000000..5a15bdec --- /dev/null +++ b/packages/embed/package.json @@ -0,0 +1,25 @@ +{ + "name": "@strudel.cycles/embed", + "version": "0.0.2", + "description": "Embeddable Web Component to load a Strudel REPL into an iframe", + "main": "embed.js", + "type": "module", + "repository": { + "type": "git", + "url": "git+https://github.com/tidalcycles/strudel.git" + }, + "keywords": [ + "tidalcycles", + "strudel", + "pattern", + "livecoding", + "algorave" + ], + "author": "Felix Roos ", + "license": "AGPL-3.0-or-later", + "bugs": { + "url": "https://github.com/tidalcycles/strudel/issues" + }, + "homepage": "https://github.com/tidalcycles/strudel#readme", + "dependencies": {} +}