Skip to content

Commit 4f2d3b1

Browse files
authored
Merge pull request #50 from milafrerichs/feat/add-modes
Feat/add modes
2 parents 2a91329 + 947f0de commit 4f2d3b1

4 files changed

Lines changed: 46 additions & 19 deletions

File tree

Changelog.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
# v0.3.0
2+
## Added
3+
New `mode` prop
4+
previous `viewOnly` can now be replicated using `view` mode
5+
6+
## Removed
7+
- viewOnly prop is remove
8+
19
# v0.0.10
210
## Added
311
- active state for the switcher

Readme.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,17 @@ I tried observable which is great for d3 and you can for the code and try it out
1010
That's why I built the prototype in a day to test it out.
1111

1212

13+
## Usage outside a svelte app
14+
15+
```
16+
new JavascriptRepl({
17+
target: document.querySelector('#code-example'),
18+
props: {
19+
files: [{name: 'index.js', content: code, type: 'js' }]
20+
}
21+
});
22+
```
23+
1324
### Example how it looks like
1425
![](docs/example.png)
1526

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "javascript-repl",
33
"svelte": "src/Repl.svelte",
44
"module": "index.mjs",
5-
"version": "0.2.5",
5+
"version": "0.3.0",
66
"description": "",
77
"main": "index.js",
88
"author": "Mila Frerichs <mila.frerichs@gmail.com>",

src/Repl.svelte

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
let currentContent = '';
1313
let code = '';
1414
let html = '';
15-
export let viewOnly = false;
15+
export let mode = 'normal';
1616
export let changedCode = () => {};
1717
export let files = [];
1818
export let injectedLibraries = [];
@@ -82,6 +82,10 @@
8282
8383
}
8484
85+
$: showEditor = (mode === 'normal' || mode === 'minimal')
86+
$: showTabs = (mode === 'normal' || mode === 'view')
87+
$: showFiles = (mode === 'normal' || mode === 'view')
88+
8589
$: currentFile = files[currentFileIndex]
8690
8791
$: if(editor && currentFile) {
@@ -129,27 +133,31 @@
129133

130134
<div class="{cssStyles.container}" >
131135
<div class="result-container {cssStyles.resultContainer}">
132-
{#if !viewOnly }
133-
<div class:hidden="{viewOnly}" class="{cssStyles.editor}">
134-
<div class="{cssStyles.editorActions.container}">
135-
{#each files as { name }, i}
136-
<div class="{cssStyles.editorActions.tabItem}">
137-
<a class:active="{currentFileIndex == i}" class="{cssStyles.editorActions.link}" on:click="{() => showFile(i)}">{name}</a>
138-
</div>
139-
{/each}
140-
</div>
136+
{#if showEditor}
137+
<div class:hidden="{!showEditor}" class="{cssStyles.editor}">
138+
{#if showFiles}
139+
<div class="{cssStyles.editorActions.container}">
140+
{#each files as { name }, i}
141+
<div class="{cssStyles.editorActions.tabItem}">
142+
<a class:active="{currentFileIndex == i}" class="{cssStyles.editorActions.link}" on:click="{() => showFile(i)}">{name}</a>
143+
</div>
144+
{/each}
145+
</div>
146+
{/if}
141147
<Editor bind:this={editor} on:change={debounceChangeCode}/>
142148
</div>
143149
{/if}
144-
<div class:view-only="{viewOnly}" class="{cssStyles.viewerContainer}">
145-
<div class="{cssStyles.viewerActions.container}">
146-
<div class="{cssStyles.viewerActions.tabItem}">
147-
<a class:active="{tab == 'viewer'}" class="{cssStyles.viewerActions.link}" on:click="{() => showResult()}">Result</a>
148-
</div>
149-
<div class="{cssStyles.viewerActions.tabItem}">
150-
<a class:active="{tab == 'console'}" class="{cssStyles.viewerActions.link}" on:click="{() => showConsole()}">Console</a>
150+
<div class:view-only="{!showEditor}" class="{cssStyles.viewerContainer}">
151+
{#if showTabs}
152+
<div class="{cssStyles.viewerActions.container}">
153+
<div class="{cssStyles.viewerActions.tabItem}">
154+
<a class:active="{tab == 'viewer'}" class="{cssStyles.viewerActions.link}" on:click="{() => showResult()}">Result</a>
155+
</div>
156+
<div class="{cssStyles.viewerActions.tabItem}">
157+
<a class:active="{tab == 'console'}" class="{cssStyles.viewerActions.link}" on:click="{() => showConsole()}">Console</a>
158+
</div>
151159
</div>
152-
</div>
160+
{/if}
153161
<div class="{cssStyles.viewerConsoleContainer}">
154162
<div class:hidden="{tab != 'viewer'}" class="{cssStyles.viewer}">
155163
<Viewer bind:ready={ready} {code} {injectedLibraries} {html} {injectedJS} />

0 commit comments

Comments
 (0)