@jsenv/navi 0.29.96 → 0.29.97

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.
@@ -177,7 +177,7 @@ it. It matters most inside a picker's popup, where nothing else would bring the
177
177
  value back down: a picker's value IS what the control in its popup holds, so the
178
178
  façade never echoes it back.
179
179
 
180
- Four things follow, and each of them was paid for twice before being written
180
+ Five things follow, and each of them was paid for twice before being written
181
181
  here:
182
182
 
183
183
  - **the group's value has to be the view that carries the MOST.** Four seats say
@@ -212,6 +212,25 @@ here:
212
212
  Wrapping the two writes in a signal `batch()` does NOT help: the group
213
213
  aggregates on each child's change, not on the render that follows.
214
214
 
215
+ - **and when the in-between cannot be avoided, the aggregate says so.** Two
216
+ people swapping seats means one leaves before the other arrives, whichever
217
+ order the writes take. What is avoidable is PUBLISHING that half-state: an
218
+ aggregate that returns **what the group already holds** says "not yet, ask me
219
+ again" — nothing is placed, nothing is handed to the row above, and the next
220
+ assembly publishes the whole answer. Returning `undefined` says the opposite
221
+ ("there is no answer"), and wipes the row.
222
+
223
+ ```js
224
+ // "not yet": the moving person is picked and seated nowhere, and it is not
225
+ // somebody who was just ticked — so this is a gesture in flight
226
+ const midMove = picked.some(
227
+ (id) => !seatedNow.includes(id) && lastAnswer.includes(id),
228
+ );
229
+ if (midMove) {
230
+ return lastAnswer; // what the group already holds
231
+ }
232
+ ```
233
+
215
234
  ```jsx
216
235
  // the seats are found by name, never as "everything that is not the list"
217
236
  const seatChildren = (children) =>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jsenv/navi",
3
- "version": "0.29.96",
3
+ "version": "0.29.97",
4
4
  "type": "module",
5
5
  "description": "Library of components including navigation to create frontend applications",
6
6
  "repository": {