Ability to delete from store

master
Dustin Swan 13 hours ago
parent 3267d5bc39
commit 15f6124173
Signed by: dustinswan
GPG Key ID: 30D46587E2100467

@ -1,4 +1,6 @@
import { render, hitTest, scrollHitTest } from './ui'; import { render, hitTest, scrollHitTest } from './ui';
import { syncToAst, saveDefinitions } from './runtime-js';
import { definitions } from './compiler';
type UIValue = any; type UIValue = any;
@ -217,6 +219,28 @@ export function runAppCompiled(canvas: HTMLCanvasElement, store: any) {
return; return;
} }
if (event._tag === 'DeleteAt') {
const path = event._0;
const name = path[0];
if (path.length === 1) {
delete store[name];
definitions.delete(name);
saveDefinitions();
} else {
let obj = store[name];
for (let i = 1; i < path.length - 1; i++) {
if (obj === undefined || obj === null) return;
obj = obj[path[i]];
}
if (obj !== undefined && obj !== null) {
delete obj[path[path.length - 1]];
}
}
syncToAst(name);
return;
}
if (event._tag === 'Focus') { if (event._tag === 'Focus') {
setFocus(event._0); setFocus(event._0);
return; return;

@ -160,6 +160,9 @@ export const _rt = {
return { _tag: 'Rebind', _0: name, _1: rest, _2: value }; return { _tag: 'Rebind', _0: name, _1: rest, _2: value };
}, },
deleteAt: (path: any[]) => {
return { _tag: 'DeleteAt', _0: path };
},
"undefine!": (name: string) => { "undefine!": (name: string) => {
delete store[name]; delete store[name];
definitions.delete(name); definitions.delete(name);

Loading…
Cancel
Save