Fix findUsages/undo/node-lookup bugs, split Viewport and Editor, share command and inspector helpers

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
rootandClaude Opus 5 committed 2026-09-08 09:22:49 +02:00
1 parent 1eb28314cf
commit f140c2fd77
58 files changed
+1969 -1171

No files matched your search

+1 -3
View File
@@ -16,8 +16,6 @@ export type PropertyDef =
/** A keyboard key name (`KeyboardEvent.key`), captured by pressing it. */
| { key: string; label: string; kind: 'key'; default: string };
export type PropertyKind = PropertyDef['kind'];
export type PropertySchema = readonly PropertyDef[];
/** Kinds a behavior variable may have (what the node graph can compute with). */
@@ -40,7 +38,7 @@ export function isCommonProp(key: string): boolean {
}
/** Property schema per asset type. Position is deliberately absent: it belongs to scene objects. */
export const ASSET_SCHEMAS: Record<AssetType, PropertySchema> = {
const ASSET_SCHEMAS: Record<AssetType, PropertySchema> = {
scene: [{ key: 'backgroundColor', label: 'Background', kind: 'color', default: 0x2a2d34 }],
camera: [
{ key: 'width', label: 'View width', kind: 'number', default: 640, min: 16, step: 1 },
+2 -5
View File
@@ -5,6 +5,7 @@
* what makes a container usable as a screen: switch it on to show it, off to hide it.
*/
import type { PropertyBag } from '../model/Properties';
import { parentChain } from '../model/walk';
/** A missing value counts as on. */
function propsEnabled(props: PropertyBag): boolean {
@@ -16,10 +17,6 @@ function propsEnabled(props: PropertyBag): boolean {
* model (scene objects), the viewport (draw items) and the runtime (entities) share one rule.
*/
export function enabledAlongChain<T>(start: T, propsOf: (item: T) => PropertyBag, parentOf: (item: T) => T | null): boolean {
const seen = new Set<T>();
for (let current: T | null = start; current && !seen.has(current); current = parentOf(current)) {
if (!propsEnabled(propsOf(current))) return false;
seen.add(current);
}
for (const item of parentChain(start, parentOf)) if (!propsEnabled(propsOf(item))) return false;
return true;
}