a million fixes
This commit is contained in:
parent
b1696499e5
commit
c294d7fd6a
12 changed files with 140 additions and 168 deletions
|
|
@ -60,7 +60,6 @@ export function runAppCompiled(app: App, canvas: HTMLCanvasElement, rt: any) {
|
|||
handleEvent(e);
|
||||
}
|
||||
}
|
||||
rerender();
|
||||
} catch(error) {
|
||||
console.error('Component event error:', error);
|
||||
}
|
||||
|
|
@ -102,7 +101,7 @@ export function runAppCompiled(app: App, canvas: HTMLCanvasElement, rt: any) {
|
|||
event: { _tag: 'FocusAndClick', _0: fullKey }
|
||||
};
|
||||
}
|
||||
return expandStateful(viewUI, path, renderedKeys);
|
||||
return expandStateful(viewUI, [...path, ui.key], renderedKeys);
|
||||
}
|
||||
|
||||
case 'stack':
|
||||
|
|
@ -186,7 +185,6 @@ export function runAppCompiled(app: App, canvas: HTMLCanvasElement, rt: any) {
|
|||
|
||||
if (event._tag === 'Rebind') {
|
||||
rt.rebind(event._0, event._1, event._2);
|
||||
rerender();
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -198,8 +196,13 @@ export function runAppCompiled(app: App, canvas: HTMLCanvasElement, rt: any) {
|
|||
if (event._tag === 'NoOp')
|
||||
return;
|
||||
|
||||
state = app.update(state)(event);
|
||||
rerender();
|
||||
const result = app.update(state)(event);
|
||||
state = result.state;
|
||||
if (result.emit && Array.isArray(result.emit)) {
|
||||
for (const e of result.emit) {
|
||||
handleEvent(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
canvas.addEventListener('click', (e) => {
|
||||
|
|
@ -221,6 +224,8 @@ export function runAppCompiled(app: App, canvas: HTMLCanvasElement, rt: any) {
|
|||
handleEvent(event);
|
||||
}
|
||||
}
|
||||
|
||||
rerender();
|
||||
});
|
||||
|
||||
window.addEventListener('keydown', (e) => {
|
||||
|
|
@ -236,20 +241,37 @@ export function runAppCompiled(app: App, canvas: HTMLCanvasElement, rt: any) {
|
|||
}
|
||||
};
|
||||
|
||||
// always send to OS first
|
||||
handleEvent(event);
|
||||
console.log("keydown", e)
|
||||
console.log("componentInstances", componentInstances)
|
||||
console.log("focusedComponentKey", focusedComponentKey)
|
||||
|
||||
if (focusedComponentKey) {
|
||||
// send to focused component
|
||||
handleComponentEvent(focusedComponentKey, event);
|
||||
|
||||
// bubble up to ancestors
|
||||
for (const key of componentInstances.keys()) {
|
||||
if (key !== focusedComponentKey && focusedComponentKey.startsWith(key + '.')) {
|
||||
handleComponentEvent(key, event);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// OS root
|
||||
handleEvent(event);
|
||||
|
||||
e.preventDefault();
|
||||
rerender();
|
||||
});
|
||||
|
||||
let resizeRAF = 0;
|
||||
window.addEventListener('resize', () => {
|
||||
setupCanvas();
|
||||
rerender();
|
||||
})
|
||||
cancelAnimationFrame(resizeRAF);
|
||||
resizeRAF = requestAnimationFrame(() => {
|
||||
setupCanvas();
|
||||
rerender();
|
||||
});
|
||||
});
|
||||
|
||||
rerender();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue