mirror of https://github.com/sveltejs/svelte
parent
217cd6c741
commit
0bbea065bb
@ -1,71 +0,0 @@
|
||||
<script>
|
||||
import { createEventDispatcher } from 'svelte';
|
||||
import * as fleece from 'golden-fleece';
|
||||
import CodeMirror from '../CodeMirror.svelte';
|
||||
|
||||
const dispatch = createEventDispatcher();
|
||||
|
||||
export let value;
|
||||
|
||||
let error;
|
||||
let code;
|
||||
|
||||
if (value === undefined) {
|
||||
code = 'undefined';
|
||||
} else {
|
||||
code = fleece.stringify(value);
|
||||
console.log({ value, code });
|
||||
}
|
||||
|
||||
$: try {
|
||||
value = fleece.evaluate(code);
|
||||
} catch (e) {
|
||||
error = e;
|
||||
}
|
||||
|
||||
let previous_code;
|
||||
|
||||
function handleChange(event) {
|
||||
try {
|
||||
const value = fleece.evaluate(event.detail.value);
|
||||
code = previous_code = event.detail.value;
|
||||
error = null;
|
||||
dispatch('change', { value });
|
||||
} catch (e) {
|
||||
error = e;
|
||||
}
|
||||
}
|
||||
|
||||
function stringify(value) {
|
||||
if (value === undefined) return '<undefined>';
|
||||
|
||||
const code = previous_code
|
||||
? fleece.patch(previous_code, value)
|
||||
: fleece.stringify(value);
|
||||
|
||||
previous_code = code;
|
||||
return code;
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.prop-editor {
|
||||
border: 1px solid #eee;
|
||||
}
|
||||
|
||||
.error {
|
||||
background-color: rgba(218, 16, 96, 0.1);
|
||||
border: 1px solid #da106e;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="prop-editor" class:error title="{error && error.message || ''}">
|
||||
<CodeMirror
|
||||
mode="json"
|
||||
code={stringify(value)}
|
||||
lineNumbers={false}
|
||||
on:change={handleChange}
|
||||
tab={false}
|
||||
flex
|
||||
/>
|
||||
</div>
|
Loading…
Reference in new issue