Pull the three open items out of the finished port note
The dynamic-port note went to done/ while its tail still listed three things nobody built: a list of structs, a struct field of kind list, and the unconnected list input. Measured while extracting: inlineInputDef sends list, struct AND object into its number branch, so the last item is wider than the note claimed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
0449218cb6
commit
9d62dfea7b
2 files changed
+37
-3
No files matched your search
@@ -335,9 +335,8 @@ bearbeitete Zeile belebt den alten Wert der ersten wieder.
|
||||
Feld muss die Sektion also neu bauen. Ohne das erscheint die Zeile erst beim nächsten Rebuild —
|
||||
gemessen, genau ein Browser-Check fällt.
|
||||
|
||||
**Weiterhin offen:** „Liste aus Structs" (macht `ListValue`/`StructValue` gegenseitig rekursiv),
|
||||
ein Struct-Feld vom Typ Liste, und der unverbundene `list`-Eingang, der immer noch ein Zahlenfeld
|
||||
zeigt.
|
||||
**Bewusst nicht gebaut:** „Liste aus Structs", ein Struct-Feld vom Typ Liste und der unverbundene
|
||||
`list`-Eingang. Die drei stehen als eigene Notiz in `todo-notes/struct-und-listen-restposten.md`.
|
||||
|
||||
### Der teuerste Fund lag nicht im Struct
|
||||
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
# Restposten aus dynamischen Ports / Structs
|
||||
|
||||
Drei Punkte, die beim Bau von List-Tab und Struct-Variablen bewusst liegen geblieben sind. Sie
|
||||
standen am Ende von `done/nodes-mit-dynamischer-port-zahl.md` und sind hierher gezogen, damit sie
|
||||
nicht mit der erledigten Notiz verschwinden.
|
||||
|
||||
## 1. Der unverbundene Eingang zeigt das falsche Feld
|
||||
|
||||
`inlineInputDef` (`NodeRegistry.ts:131`) kennt nur `boolean`, `string`/`any` und *alles andere* —
|
||||
und "alles andere" wird ein **Zahlenfeld**. Betroffen sind damit **`list`, `struct` und `object`**:
|
||||
ein unverbundener `list`-Eingang bietet heute ein Zahlenfeld an.
|
||||
|
||||
Für `list` gäbe es die Antwort schon: der Knopf `n items` plus List-Tab. Der Weg dorthin ist
|
||||
`listOpener` mit einer Slot-Adresse vom Kind `node` — der Slot existiert bereits. Für `object`
|
||||
ist gar kein Inline-Wert sinnvoll; dort gehört das Feld weggelassen statt ersetzt.
|
||||
|
||||
## 2. Ein Struct-Feld vom Typ Liste
|
||||
|
||||
Ein deklariertes Struct-Feld ist heute ein Primitiv (Zahl, Text, Ja/Nein, Farbe), obwohl
|
||||
`FieldValue` auch Listen zulässt. Ein Listen-Feld bräuchte einen Editor eine Ebene tiefer, also
|
||||
einen **Pfad in der Slot-Adresse** (`ListSlot` in `state.ts` hat bewusst keinen). Die Naht ist die
|
||||
eine Funktion `resolveList` — eine Signaturänderung, kein Umbau.
|
||||
|
||||
## 3. Liste aus Structs
|
||||
|
||||
Der teuerste der drei. `ListValue` ist heute `readonly (number | string | boolean)[]` und
|
||||
`FieldValue` hält fest, dass kein Feld selbst ein Struct ist (`Properties.ts:5-8`); `sameValue`
|
||||
verlässt sich darauf ("recurses exactly one level deep", `Properties.ts:50`), und
|
||||
`LIST_ITEM_KINDS` macht eine Liste homogen.
|
||||
|
||||
Structs in Listen machen `ListValue` und `StructValue` **gegenseitig rekursiv**: beliebige
|
||||
Schachtelungstiefe, echter Deep-Compare, und die Items brauchen eine gemeinsame deklarierte
|
||||
Feldform — die im Typmodell keine Heimat hat, solange sie nur an *einer* Property hängt.
|
||||
|
||||
Setzt Punkt 2 voraus (Pfad in der Adresse).
|
||||
Reference in new issue
Block a user