@jsenv/navi 0.29.92 → 0.29.94
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/jsenv_navi.js +54 -9
- package/dist/jsenv_navi.js.map +4 -4
- package/docs/AI_INSTRUCTIONS.md +3 -2
- package/docs/control_object.md +13 -0
- package/package.json +1 -1
package/docs/AI_INSTRUCTIONS.md
CHANGED
|
@@ -146,8 +146,9 @@ consistency across the app, not from any single call site.
|
|
|
146
146
|
`canSendWhileUnchanged` because a submit "does nothing".
|
|
147
147
|
- `distributeChildStates` on a group — the way down asked once for ALL the
|
|
148
148
|
children, when they cannot be placed one at a time (four seats where who sits
|
|
149
|
-
down decides who moves)
|
|
150
|
-
|
|
149
|
+
down decides who moves), and asked again whenever one of them speaks, so the
|
|
150
|
+
other views of the same answer follow. The mirror of `aggregateChildStates`;
|
|
151
|
+
see control_object.md. Read it before writing a `uiAction` whose only job is to
|
|
151
152
|
translate. Two neighbouring questions have answers already: a yes/no shown as
|
|
152
153
|
two rows needs no translation (`List.Item value={true}` beside
|
|
153
154
|
`value={false}` IS a boolean control), and a cross that means "back to the
|
package/docs/control_object.md
CHANGED
|
@@ -164,6 +164,19 @@ distributeChildStates: (groupValue, children) => new Map([[child, state], …])
|
|
|
164
164
|
the mirror of `aggregateChildStates`, which already sees every child. A child
|
|
165
165
|
the Map does not name is left where it is. Given both, the plural one wins.
|
|
166
166
|
|
|
167
|
+
**It closes the loop, which the per-child one does not.** A group with a plural
|
|
168
|
+
distribute holds ONE answer its children are views OF — a list saying who plays,
|
|
169
|
+
four seats saying who sits where — rather than a value that IS what they said.
|
|
170
|
+
So when one view speaks, the answer moves and **the other views are placed
|
|
171
|
+
again**; the one that just acted is left where the user put it. Without that, a
|
|
172
|
+
seat keeps showing somebody the list no longer holds, and nothing says so.
|
|
173
|
+
|
|
174
|
+
This is the same rule as "a child arriving after the value did is placed from
|
|
175
|
+
what the group holds", for a child that was there when the value moved without
|
|
176
|
+
it. It matters most inside a picker's popup, where nothing else would bring the
|
|
177
|
+
value back down: a picker's value IS what the control in its popup holds, so the
|
|
178
|
+
façade never echoes it back.
|
|
179
|
+
|
|
167
180
|
A group with an `aggregateChildStates` of its own is outside all of this: what
|
|
168
181
|
it returns is taken as the truth, `undefined` included. That is the one way such
|
|
169
182
|
a group says **"I have nothing to say yet"** — return `undefined` while the
|