foldkit 0.153.0 → 0.154.0

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.
@@ -110,17 +110,17 @@ const applyScopeToLocatorAll = (scope, locatorAll) => Option.match(scope, {
110
110
  });
111
111
  // CAPTURING DISPATCH
112
112
  const createCapturingDispatch = () => {
113
- let capturedMessage;
113
+ let capturedMessages = [];
114
114
  return {
115
115
  dispatch: Dispatch.of({
116
116
  dispatchAsync: () => Effect.void,
117
117
  dispatchSync: (dispatchedMessage) => {
118
- capturedMessage = dispatchedMessage;
118
+ capturedMessages.push(dispatchedMessage);
119
119
  },
120
120
  }),
121
- getCapturedMessage: () => capturedMessage,
121
+ getCapturedMessages: () => capturedMessages,
122
122
  reset: () => {
123
- capturedMessage = undefined;
123
+ capturedMessages = [];
124
124
  },
125
125
  };
126
126
  };
@@ -157,6 +157,8 @@ const EVENT_NAMES = {
157
157
  change: 'OnChange',
158
158
  focus: 'OnFocus',
159
159
  blur: 'OnBlur',
160
+ focusin: 'OnFocusEnter',
161
+ focusout: 'OnFocusLeave',
160
162
  mouseenter: 'OnMouseEnter',
161
163
  mouseover: 'OnMouseOver',
162
164
  keydown: 'OnKeyDown or OnKeyDownPreventDefault',
@@ -174,7 +176,60 @@ const maybeCaptureFromElement = (simulation, element, description, eventName, in
174
176
  internal.capturingDispatch.reset();
175
177
  // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
176
178
  invokeHandler(maybeHandler.value);
177
- return Option.map(Option.fromNullishOr(internal.capturingDispatch.getCapturedMessage()), captured => applyExternalMessage(simulation, captured, 'when an interaction dispatched a new Message'));
179
+ const capturedMessages = internal.capturingDispatch.getCapturedMessages();
180
+ return Array.match(capturedMessages, {
181
+ onEmpty: () => Option.none(),
182
+ onNonEmpty: messages => Option.some(applyExternalMessages(simulation, messages, 'when an interaction dispatched a new Message')),
183
+ });
184
+ };
185
+ const finishCapturedInteraction = (simulation, description, eventName) => {
186
+ const capturedMessages = toInternal(simulation).capturingDispatch.getCapturedMessages();
187
+ return Array.match(capturedMessages, {
188
+ onEmpty: () => advanceInteraction(simulation, Ignored, Option.some({ eventName, description })),
189
+ onNonEmpty: messages => advanceInteraction(applyExternalMessages(simulation, messages, 'when an interaction dispatched a new Message'), Handled, Option.none()),
190
+ });
191
+ };
192
+ const applyMessageWithoutBoundaryChecks = (simulation, message) => {
193
+ const internal = toInternal(simulation);
194
+ /* eslint-disable @typescript-eslint/consistent-type-assertions */
195
+ const messageAsParent = message;
196
+ const messageUpdate = internal.updateFn(internal.model, messageAsParent);
197
+ return {
198
+ ...internal,
199
+ model: messageUpdate.model,
200
+ message: messageAsParent,
201
+ commands: Array.appendAll(internal.commands, messageUpdate.commands ?? []),
202
+ outMessage: messageUpdate.outMessage,
203
+ };
204
+ /* eslint-enable @typescript-eslint/consistent-type-assertions */
205
+ };
206
+ const applyExternalMessages = (simulation, messages, context) => {
207
+ const internal = toInternal(simulation);
208
+ assertNoUnresolvedCommands(internal.commands, context);
209
+ assertNoUnresolvedMounts(internal.mounts, context);
210
+ assertNoUnacknowledgedUnmounts(unacknowledgedEndedMountsOf(internal.mountSlots), context);
211
+ const appliedMessages = Array.reduce(messages, {
212
+ simulation,
213
+ outMessages: Array.empty(),
214
+ }, (current, message) => {
215
+ const nextSimulation = applyMessageWithoutBoundaryChecks(current.simulation, message);
216
+ const nextOutMessage = toInternal(nextSimulation).outMessage;
217
+ return {
218
+ simulation: nextSimulation,
219
+ outMessages: Predicate.isUndefined(nextOutMessage)
220
+ ? current.outMessages
221
+ : Array.append(current.outMessages, nextOutMessage),
222
+ };
223
+ });
224
+ if (Array.isReadonlyArrayNonEmpty(Array.drop(appliedMessages.outMessages, 1))) {
225
+ throw new Error('One interaction emitted multiple OutMessages, but Scene can expose only one OutMessage per step.\n\n' +
226
+ 'Split the DOM handlers into separate interactions, or test this composition at the parent boundary where each OutMessage is folded.');
227
+ }
228
+ /* eslint-disable-next-line @typescript-eslint/consistent-type-assertions */
229
+ return {
230
+ ...toInternal(appliedMessages.simulation),
231
+ outMessage: pipe(appliedMessages.outMessages, Array.head, Option.getOrUndefined),
232
+ };
178
233
  };
179
234
  /** Clears the pending fall-through, marking it acknowledged. Paired with
180
235
  * {@link assertNoUnacknowledgedIgnored}, which is what it silences. */
@@ -227,25 +282,52 @@ const invokeAndCapture = (simulation, target, eventName, invokeHandler) => {
227
282
  }
228
283
  return captureFromElement(simulation, maybeElement.value, description, eventName, invokeHandler);
229
284
  };
230
- const lookupTypeAttribute = (vnode) => {
231
- const fromAttrs = vnode.data?.attrs?.['type'];
232
- const fromProps = vnode.data?.props?.['type'];
233
- return typeof fromAttrs === 'string'
234
- ? fromAttrs
235
- : typeof fromProps === 'string'
236
- ? fromProps
237
- : undefined;
285
+ const lookupStringAttribute = (vnode, name) => {
286
+ const fromAttrs = vnode.data?.attrs?.[name];
287
+ const fromProps = vnode.data?.props?.[name];
288
+ if (Predicate.isString(fromAttrs)) {
289
+ return fromAttrs;
290
+ }
291
+ if (Predicate.isString(fromProps)) {
292
+ return fromProps;
293
+ }
294
+ return undefined;
238
295
  };
239
296
  const isSubmitButton = (element) => {
240
- const type = lookupTypeAttribute(element);
297
+ const maybeType = pipe(lookupStringAttribute(element, 'type'), Option.fromNullishOr, Option.map(String_.toLowerCase));
241
298
  if (element.sel === 'button') {
242
- return type === undefined || type === 'submit';
299
+ return Option.match(maybeType, {
300
+ onNone: () => true,
301
+ onSome: value => value !== 'button' && value !== 'reset',
302
+ });
243
303
  }
244
304
  if (element.sel === 'input') {
245
- return type === 'submit' || type === 'image';
305
+ return Option.exists(maybeType, value => value === 'submit' || value === 'image');
246
306
  }
247
307
  return false;
248
308
  };
309
+ const findElementById = (root, id) => {
310
+ if (lookupStringAttribute(root, 'id') === id) {
311
+ return Option.some(root);
312
+ }
313
+ for (const child of root.children ?? []) {
314
+ if (Predicate.isString(child)) {
315
+ continue;
316
+ }
317
+ const maybeMatch = findElementById(child, id);
318
+ if (Option.isSome(maybeMatch)) {
319
+ return maybeMatch;
320
+ }
321
+ }
322
+ return Option.none();
323
+ };
324
+ const formOwnerOf = (root, submitter) => {
325
+ const formId = lookupStringAttribute(submitter, 'form');
326
+ if (formId !== undefined) {
327
+ return pipe(findElementById(root, formId), Option.filter(element => element.sel === 'form'));
328
+ }
329
+ return pipe(root, ancestorsOf(submitter), Array.findLast(element => element.sel === 'form'));
330
+ };
249
331
  const isElementDisabled = (element) => {
250
332
  const attrDisabled = element.data?.attrs?.['disabled'];
251
333
  const propDisabled = element.data?.props?.['disabled'];
@@ -450,21 +532,7 @@ const expectEndedMountsStep = (...matchers) => (simulation) => {
450
532
  /* eslint-enable @typescript-eslint/consistent-type-assertions */
451
533
  };
452
534
  const applyExternalMessage = (simulation, message, context) => {
453
- const internal = toInternal(simulation);
454
- assertNoUnresolvedCommands(internal.commands, context);
455
- assertNoUnresolvedMounts(internal.mounts, context);
456
- assertNoUnacknowledgedUnmounts(unacknowledgedEndedMountsOf(internal.mountSlots), context);
457
- /* eslint-disable @typescript-eslint/consistent-type-assertions */
458
- const messageAsParent = message;
459
- const messageUpdate = internal.updateFn(internal.model, messageAsParent);
460
- return {
461
- ...internal,
462
- model: messageUpdate.model,
463
- message: messageAsParent,
464
- commands: Array.appendAll(internal.commands, messageUpdate.commands ?? []),
465
- outMessage: messageUpdate.outMessage,
466
- };
467
- /* eslint-enable @typescript-eslint/consistent-type-assertions */
535
+ return applyExternalMessages(simulation, [message], context);
468
536
  };
469
537
  /** Feeds a Message through update as if a Subscription had emitted it,
470
538
  * then re-renders. Use it for Messages whose real cause is a Subscription
@@ -761,14 +829,30 @@ export const inside = (parent, ...steps) => (simulation) => {
761
829
  /* eslint-enable @typescript-eslint/consistent-type-assertions */
762
830
  };
763
831
  const findAncestorWithHandler = (root, element, eventName) => pipe(root, ancestorsOf(element), Array.reverse, Array.findFirst(vnode => vnode.data?.on?.[eventName] !== undefined));
832
+ const createSimulatedClick = () => {
833
+ let isDefaultPrevented = false;
834
+ let isPropagationStopped = false;
835
+ return {
836
+ event: {
837
+ preventDefault: () => {
838
+ isDefaultPrevented = true;
839
+ },
840
+ stopPropagation: () => {
841
+ isPropagationStopped = true;
842
+ },
843
+ },
844
+ isDefaultPrevented: () => isDefaultPrevented,
845
+ isPropagationStopped: () => isPropagationStopped,
846
+ };
847
+ };
764
848
  // INTERACTION STEPS
765
849
  /** Simulates a click on the element matching the target.
766
- * When the element has no click handler, the event bubbles up to the
767
- * nearest ancestor with one, mirroring browser event propagation.
768
- * When the element is a submit button (`<button>` with no type or
769
- * `type="submit"`, `<input type="submit">`, `<input type="image">`) with no
770
- * click handler in its ancestor chain, the click falls through to the
771
- * `submit` handler of the nearest ancestor `<form>`. */
850
+ * Runs click handlers from the target through its ancestors until one stops
851
+ * propagation, mirroring browser event propagation.
852
+ * When the target activates a submit button and no click handler prevents
853
+ * the default, the click falls through to the `submit` handler of its form
854
+ * owner. Scene honors an explicit `form` attribute before looking for the
855
+ * nearest ancestor `<form>`. */
772
856
  export const click = (target) => (simulation) => {
773
857
  const internal = toInternal(simulation);
774
858
  const scopedTarget = applyScopeToTarget(internal.scope, target);
@@ -778,36 +862,54 @@ export const click = (target) => (simulation) => {
778
862
  'Check that your selector matches an element in the current view.');
779
863
  }
780
864
  const { value: element } = maybeElement;
781
- if (isElementDisabled(element)) {
865
+ const propagationPath = [
866
+ element,
867
+ ...pipe(internal.html, ancestorsOf(element), Array.reverse),
868
+ ];
869
+ const activationElement = pipe(propagationPath, Array.findFirst(currentElement => currentElement.sel === 'button'), Option.getOrElse(() => element));
870
+ if (isElementDisabled(activationElement)) {
782
871
  throw new Error(`I found an element matching ${description} but it is disabled.\n\n` +
783
872
  'Disabled elements do not receive click events in the browser. ' +
784
873
  'Assert the state that enables the element before clicking, or ' +
785
874
  'use Scene.expect(locator).not.toBeDisabled() to verify the ' +
786
875
  'element is interactive.');
787
876
  }
788
- const hasClickHandler = element.data?.on?.['click'] !== undefined;
789
- if (hasClickHandler) {
790
- return captureFromElement(simulation, element, description, 'click', handler => {
791
- handler();
792
- });
793
- }
794
- const maybeAncestor = findAncestorWithHandler(internal.html, element, 'click');
795
- if (Option.isSome(maybeAncestor)) {
796
- return captureFromElement(simulation, maybeAncestor.value, `ancestor of ${description}`, 'click', handler => {
797
- handler();
798
- });
877
+ const simulatedClick = createSimulatedClick();
878
+ let isClickHandled = false;
879
+ let isSubmitHandled = false;
880
+ internal.capturingDispatch.reset();
881
+ for (const currentElement of propagationPath) {
882
+ const maybeClickHandler = Option.fromNullishOr(currentElement.data?.on?.['click']);
883
+ if (Option.isNone(maybeClickHandler)) {
884
+ continue;
885
+ }
886
+ isClickHandled = true;
887
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
888
+ const clickHandler = maybeClickHandler.value;
889
+ clickHandler(simulatedClick.event);
890
+ if (simulatedClick.isPropagationStopped()) {
891
+ break;
892
+ }
799
893
  }
800
- if (isSubmitButton(element)) {
801
- const maybeForm = pipe(internal.html, ancestorsOf(element), Array.findLast(vnode => vnode.sel === 'form'));
894
+ if (!simulatedClick.isDefaultPrevented()) {
895
+ const maybeSubmitter = Array.findFirst(propagationPath, isSubmitButton);
896
+ const maybeForm = pipe(maybeSubmitter, Option.flatMap(submitter => formOwnerOf(internal.html, submitter)));
802
897
  if (Option.isSome(maybeForm)) {
803
- return captureFromElement(simulation, maybeForm.value, `form containing ${description}`, 'submit', handler => {
804
- handler({ preventDefault: Function.constVoid });
805
- });
898
+ const maybeSubmitHandler = Option.fromNullishOr(maybeForm.value.data?.on?.['submit']);
899
+ if (Option.isSome(maybeSubmitHandler)) {
900
+ isSubmitHandled = true;
901
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
902
+ const submitHandler = maybeSubmitHandler.value;
903
+ submitHandler({ preventDefault: Function.constVoid });
904
+ }
806
905
  }
807
906
  }
808
- const attributeName = EVENT_NAMES['click'] ?? 'click';
809
- throw new Error(`I found an element matching ${description} but neither it nor any ancestor has a click handler.\n\n` +
810
- `Make sure the element or a parent has an ${attributeName} attribute.`);
907
+ if (!isClickHandled && !isSubmitHandled) {
908
+ const attributeName = EVENT_NAMES['click'] ?? 'click';
909
+ throw new Error(`I found an element matching ${description} but neither it nor any ancestor has a click handler.\n\n` +
910
+ `Make sure the element or a parent has an ${attributeName} attribute.`);
911
+ }
912
+ return finishCapturedInteraction(simulation, description, 'click');
811
913
  };
812
914
  /** Simulates a double-click on the element matching the target.
813
915
  * When the element has no dblclick handler, the event bubbles up to the
@@ -966,6 +1068,14 @@ export const focus = (target) => (simulation) => invokeAndCapture(simulation, ta
966
1068
  export const blur = (target) => (simulation) => invokeAndCapture(simulation, target, 'blur', handler => {
967
1069
  handler({ relatedTarget: null });
968
1070
  });
1071
+ /** Simulates focus entering the subtree of the element matching the target. */
1072
+ export const focusEnter = (target) => (simulation) => invokeAndCapture(simulation, target, 'focusin', handler => {
1073
+ handler({ currentTarget: null, relatedTarget: null });
1074
+ });
1075
+ /** Simulates focus leaving the subtree of the element matching the target. */
1076
+ export const focusLeave = (target) => (simulation) => invokeAndCapture(simulation, target, 'focusout', handler => {
1077
+ handler({ currentTarget: null, relatedTarget: null });
1078
+ });
969
1079
  /** Simulates a change event on the element matching the target.
970
1080
  * Dual: `change(target, value)` or `change(value)` for data-last piping. */
971
1081
  export const change = dual(2, (target, value) => (simulation) => invokeAndCapture(simulation, target, 'change', handler => {
@@ -1,3 +1,3 @@
1
1
  export { combine, foldChild, foldChildStep, refresh, withOutMessage, } from './index.js';
2
- export type { Commands, Return, ReturnWithOutMessage, Step, StepWithOutMessage, Refreshable, ChildFold, ChildFoldWithOutMessage, ChildFoldWithParentOutMessage, ChildStepFold, ChildStepFoldWithOutMessage, ChildStepFoldWithParentOutMessage, FoldContext, Fold, FoldWithOutMessage, } from './index.js';
2
+ export type { Commands, Return, ReturnWithOutMessage, Step, StepWithOutMessage, Refreshable, ChildFold, ChildFoldWithDerivedParentOutMessage, ChildFoldWithOutMessage, ChildFoldWithParentOutMessage, ChildStepFold, ChildStepFoldWithDerivedParentOutMessage, ChildStepFoldWithOutMessage, ChildStepFoldWithParentOutMessage, FoldContext, Fold, FoldWithOutMessage, } from './index.js';
3
3
  //# sourceMappingURL=public.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../src/update/public.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,SAAS,EACT,aAAa,EACb,OAAO,EACP,cAAc,GACf,MAAM,YAAY,CAAA;AAEnB,YAAY,EACV,QAAQ,EACR,MAAM,EACN,oBAAoB,EACpB,IAAI,EACJ,kBAAkB,EAClB,WAAW,EACX,SAAS,EACT,uBAAuB,EACvB,6BAA6B,EAC7B,aAAa,EACb,2BAA2B,EAC3B,iCAAiC,EACjC,WAAW,EACX,IAAI,EACJ,kBAAkB,GACnB,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../src/update/public.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,SAAS,EACT,aAAa,EACb,OAAO,EACP,cAAc,GACf,MAAM,YAAY,CAAA;AAEnB,YAAY,EACV,QAAQ,EACR,MAAM,EACN,oBAAoB,EACpB,IAAI,EACJ,kBAAkB,EAClB,WAAW,EACX,SAAS,EACT,oCAAoC,EACpC,uBAAuB,EACvB,6BAA6B,EAC7B,aAAa,EACb,wCAAwC,EACxC,2BAA2B,EAC3B,iCAAiC,EACjC,WAAW,EACX,IAAI,EACJ,kBAAkB,GACnB,MAAM,YAAY,CAAA"}
@@ -32,9 +32,9 @@ export type Commands<Message, R = never> = ReadonlyArray<Command<Message, never,
32
32
  export type Return<Model, Message, R = never> = Readonly<{
33
33
  model: Model;
34
34
  commands?: Commands<Message, R>;
35
- /** Marks this as a result that cannot emit an OutMessage. TypeScript rejects
36
- * assigning an OutMessage-producing result to this type, so a caller cannot
37
- * accidentally accept the Model and Commands while losing the OutMessage. */
35
+ /** This result emits no OutMessage. The field may be omitted but cannot hold
36
+ * a value. TypeScript therefore rejects a result containing an OutMessage
37
+ * where a caller would keep only the Model and Commands. */
38
38
  outMessage?: never;
39
39
  }>;
40
40
  /** The return shape of an update that can also surface an OutMessage to its
@@ -75,6 +75,10 @@ export declare const withOutMessage: {
75
75
  * function returning a Step
76
76
  * (`(noteId: NoteId) => Update.Step<Model, Message>`). */
77
77
  export type Step<Model, Message, R = never> = (model: Model) => Return<Model, Message, R>;
78
+ /** {@link Step} for an update that also surfaces an OutMessage to its
79
+ * parent: maps a Model to a {@link ReturnWithOutMessage} over the same
80
+ * Model. */
81
+ export type StepWithOutMessage<Model, Message, OutMessage, R = never> = (model: Model) => ReturnWithOutMessage<Model, Message, OutMessage, R>;
78
82
  /** Composes a list of update steps into one. Each step runs against the
79
83
  * Model the previous step produced, and every step's Commands are
80
84
  * concatenated into a single batch, in step order.
@@ -221,6 +225,19 @@ export type ChildFoldWithOutMessage<ParentModel, ParentMessage, ChildModel, Inpu
221
225
  toParentMessage: (message: ChildMessage) => ParentMessage;
222
226
  foldOutMessage: (outMessage: ChildOutMessage, context: FoldContext<ChildMessage, ParentMessage>) => Step<NoInfer<ParentModel>, OutMessageStepMessage, OutMessageStepRequirements>;
223
227
  }>;
228
+ /** {@link ChildFoldWithOutMessage} for a parent that derives its own
229
+ * OutMessage while folding the child's. The returned
230
+ * {@link StepWithOutMessage} receives the parent Model with the child already
231
+ * written back. Use this shape when no child OutMessage is forwarded one to
232
+ * one, so the fold needs no `toParentOutMessage` adapter. */
233
+ export type ChildFoldWithDerivedParentOutMessage<ParentModel, ParentMessage, ChildModel, Input, ChildMessage, ChildOutMessage, ParentOutMessage, ChildRequirements = never, OutMessageStepRequirements = ChildRequirements, OutMessageStepMessage = ParentMessage> = Readonly<{
234
+ update: (childModel: ChildModel, input: Input) => ReturnWithOutMessage<ChildModel, ChildMessage, ChildOutMessage, ChildRequirements>;
235
+ read: (model: ParentModel) => Option.Option<ChildModel>;
236
+ write: (model: ParentModel, nextChildModel: ChildModel) => ParentModel;
237
+ toParentMessage: (message: ChildMessage) => ParentMessage;
238
+ toParentOutMessage?: never;
239
+ foldOutMessage: (outMessage: ChildOutMessage, context: FoldContext<ChildMessage, ParentMessage>) => StepWithOutMessage<NoInfer<ParentModel>, OutMessageStepMessage, ParentOutMessage, OutMessageStepRequirements>;
240
+ }>;
224
241
  /** {@link ChildFoldWithOutMessage} for a parent that is itself a
225
242
  * Submodel, so the fold can return the parent's own OutMessage. Adds:
226
243
  *
@@ -230,26 +247,24 @@ export type ChildFoldWithOutMessage<ParentModel, ParentMessage, ChildModel, Inpu
230
247
  * omits `outMessage`.
231
248
  * - `foldOutMessage` stays available for a parent that also updates
232
249
  * its own state from the child's OutMessage, and is optional here.
233
- *
234
- * Use this shape only when `toParentOutMessage` forwards at least one child
235
- * OutMessage from the current Submodel to its parent. If no child OutMessage
236
- * is forwarded, use {@link ChildFoldWithOutMessage}. Its plain result is
237
- * valid wherever the parent accepts {@link ReturnWithOutMessage}, because
238
- * emitting no OutMessage is valid. Local handling through `foldOutMessage`
239
- * is independent, so a forwarded child OutMessage may also update the
240
- * current parent. */
241
- export type ChildFoldWithParentOutMessage<ParentModel, ParentMessage, ChildModel, Input, ChildMessage, ChildOutMessage, ParentOutMessage, ChildRequirements = never, OutMessageStepRequirements = ChildRequirements, OutMessageStepMessage = ParentMessage> = Readonly<{
250
+ * It may emit a derived parent OutMessage. That OutMessage replaces the
251
+ * one-to-one lift for the dispatch. When the Step emits nothing, the lift
252
+ * runs as usual.
253
+ *
254
+ * Use this shape only when at least one child OutMessage should continue to
255
+ * the current Submodel's parent. If every child OutMessage stops here, use
256
+ * {@link ChildFoldWithDerivedParentOutMessage} when the fold derives its own
257
+ * OutMessage, or {@link ChildFoldWithOutMessage} when it does not. When
258
+ * provided, `foldOutMessage` still handles each variant locally, including
259
+ * variants that continue upward. */
260
+ export type ChildFoldWithParentOutMessage<ParentModel, ParentMessage, ChildModel, Input, ChildMessage, ChildOutMessage, ParentOutMessage, ChildRequirements = never, OutMessageStepRequirements = ChildRequirements, OutMessageStepMessage = ParentMessage, DerivedParentOutMessage = ParentOutMessage> = Readonly<{
242
261
  update: (childModel: ChildModel, input: Input) => ReturnWithOutMessage<ChildModel, ChildMessage, ChildOutMessage, ChildRequirements>;
243
262
  read: (model: ParentModel) => Option.Option<ChildModel>;
244
263
  write: (model: ParentModel, nextChildModel: ChildModel) => ParentModel;
245
264
  toParentMessage: (message: ChildMessage) => ParentMessage;
246
265
  toParentOutMessage: (outMessage: ChildOutMessage) => ParentOutMessage | undefined;
247
- foldOutMessage?: (outMessage: ChildOutMessage, context: FoldContext<ChildMessage, ParentMessage>) => Step<NoInfer<ParentModel>, OutMessageStepMessage, OutMessageStepRequirements>;
266
+ foldOutMessage?: (outMessage: ChildOutMessage, context: FoldContext<ChildMessage, ParentMessage>) => StepWithOutMessage<NoInfer<ParentModel>, OutMessageStepMessage, DerivedParentOutMessage, OutMessageStepRequirements>;
248
267
  }>;
249
- /** {@link Step} for an update that also surfaces an OutMessage to its
250
- * parent: maps a Model to a {@link ReturnWithOutMessage} over the same
251
- * Model. */
252
- export type StepWithOutMessage<Model, Message, OutMessage, R = never> = (model: Model) => ReturnWithOutMessage<Model, Message, OutMessage, R>;
253
268
  /** The dual function {@link foldChild} returns. Data-first runs the
254
269
  * fold now (`fold(model, input)` returns a {@link Return}); data-last
255
270
  * builds a composable {@link Step} (`fold(input)`, for
@@ -298,12 +313,13 @@ export type FoldWithOutMessage<ParentModel, ParentMessage, Input, ParentOutMessa
298
313
  * Command that produces the child's Message, such as an animating
299
314
  * component's overridable leave Command.
300
315
  *
301
- * A parent that is itself a Submodel passes a
302
- * {@link ChildFoldWithParentOutMessage} and receives a
303
- * {@link FoldWithOutMessage}, whose results may include the parent's own
304
- * OutMessage. Add `toParentOutMessage` only when it forwards at least one
305
- * child OutMessage from the current Submodel to its parent. Omit
306
- * `toParentOutMessage` when the local `foldOutMessage` handles every variant.
316
+ * A parent that is itself a Submodel receives a
317
+ * {@link FoldWithOutMessage} when `foldOutMessage` emits a derived parent
318
+ * OutMessage. Add `toParentOutMessage` only when at least one child OutMessage
319
+ * should continue to the current Submodel's parent. When provided,
320
+ * `foldOutMessage` still handles forwarded variants locally. A derived
321
+ * OutMessage replaces the one-to-one lift for the dispatch. When the Step
322
+ * emits nothing, the lift runs as usual.
307
323
  *
308
324
  * An entry point that takes nothing but the child Model, such as
309
325
  * `Dialog.close`, has no input to pass: fold it with
@@ -327,8 +343,9 @@ export type FoldWithOutMessage<ParentModel, ParentMessage, Input, ParentOutMessa
327
343
  * ])
328
344
  * ``` */
329
345
  export declare const foldChild: {
330
- <ParentModel, ParentMessage, ChildModel, Input, ChildMessage, ChildOutMessage, ParentOutMessage, ChildRequirements = never, OutMessageStepRequirements = ChildRequirements, OutMessageStepMessage = ParentMessage>(childFold: ChildFoldWithParentOutMessage<ParentModel, ParentMessage, ChildModel, Input, ChildMessage, ChildOutMessage, ParentOutMessage, ChildRequirements, OutMessageStepRequirements, OutMessageStepMessage>): FoldWithOutMessage<ParentModel, ParentMessage | OutMessageStepMessage, Input, ParentOutMessage, ChildRequirements | OutMessageStepRequirements>;
346
+ <ParentModel, ParentMessage, ChildModel, Input, ChildMessage, ChildOutMessage, ParentOutMessage, ChildRequirements = never, OutMessageStepRequirements = ChildRequirements, OutMessageStepMessage = ParentMessage, DerivedParentOutMessage = ParentOutMessage>(childFold: ChildFoldWithParentOutMessage<ParentModel, ParentMessage, ChildModel, Input, ChildMessage, ChildOutMessage, ParentOutMessage, ChildRequirements, OutMessageStepRequirements, OutMessageStepMessage, DerivedParentOutMessage>): FoldWithOutMessage<ParentModel, ParentMessage | OutMessageStepMessage, Input, ParentOutMessage | DerivedParentOutMessage, ChildRequirements | OutMessageStepRequirements>;
331
347
  <ParentModel, ParentMessage, ChildModel, Input, ChildMessage, ChildOutMessage, ChildRequirements = never, OutMessageStepRequirements = ChildRequirements, OutMessageStepMessage = ParentMessage>(childFold: ChildFoldWithOutMessage<ParentModel, ParentMessage, ChildModel, Input, ChildMessage, ChildOutMessage, ChildRequirements, OutMessageStepRequirements, OutMessageStepMessage>): Fold<ParentModel, ParentMessage | OutMessageStepMessage, Input, ChildRequirements | OutMessageStepRequirements>;
348
+ <ParentModel, ParentMessage, ChildModel, Input, ChildMessage, ChildOutMessage, ParentOutMessage, ChildRequirements = never, OutMessageStepRequirements = ChildRequirements, OutMessageStepMessage = ParentMessage>(childFold: ChildFoldWithDerivedParentOutMessage<ParentModel, ParentMessage, ChildModel, Input, ChildMessage, ChildOutMessage, ParentOutMessage, ChildRequirements, OutMessageStepRequirements, OutMessageStepMessage>): FoldWithOutMessage<ParentModel, ParentMessage | OutMessageStepMessage, Input, ParentOutMessage, ChildRequirements | OutMessageStepRequirements>;
332
349
  <ParentModel, ParentMessage, ChildModel, Input, ChildMessage, R = never>(childFold: ChildFold<ParentModel, ParentMessage, ChildModel, Input, ChildMessage, R>): Fold<ParentModel, ParentMessage, Input, R>;
333
350
  };
334
351
  /** {@link ChildFold} for an entry point that takes nothing but the child
@@ -354,24 +371,38 @@ export type ChildStepFoldWithOutMessage<ParentModel, ParentMessage, ChildModel,
354
371
  toParentMessage: (message: ChildMessage) => ParentMessage;
355
372
  foldOutMessage: (outMessage: ChildOutMessage, context: FoldContext<ChildMessage, ParentMessage>) => Step<NoInfer<ParentModel>, OutMessageStepMessage, OutMessageStepRequirements>;
356
373
  }>;
374
+ /** {@link ChildStepFoldWithOutMessage} for a parent that derives its own
375
+ * OutMessage while folding the child's. This is the no-argument counterpart
376
+ * to {@link ChildFoldWithDerivedParentOutMessage}. */
377
+ export type ChildStepFoldWithDerivedParentOutMessage<ParentModel, ParentMessage, ChildModel, ChildMessage, ChildOutMessage, ParentOutMessage, ChildRequirements = never, OutMessageStepRequirements = ChildRequirements, OutMessageStepMessage = ParentMessage> = Readonly<{
378
+ update: (childModel: ChildModel) => ReturnWithOutMessage<ChildModel, ChildMessage, ChildOutMessage, ChildRequirements>;
379
+ read: (model: ParentModel) => Option.Option<ChildModel>;
380
+ write: (model: ParentModel, nextChildModel: ChildModel) => ParentModel;
381
+ toParentMessage: (message: ChildMessage) => ParentMessage;
382
+ toParentOutMessage?: never;
383
+ foldOutMessage: (outMessage: ChildOutMessage, context: FoldContext<ChildMessage, ParentMessage>) => StepWithOutMessage<NoInfer<ParentModel>, OutMessageStepMessage, ParentOutMessage, OutMessageStepRequirements>;
384
+ }>;
357
385
  /** {@link ChildStepFoldWithOutMessage} for a parent that is itself a
358
386
  * Submodel. `toParentOutMessage` turns the child's OutMessage into the
359
387
  * parent's OutMessage. Return `undefined` for a named child variant that
360
388
  * stops at this parent. `foldOutMessage` remains available when the parent
361
- * also updates its own state from the child's OutMessage.
362
- *
363
- * Use this shape only when `toParentOutMessage` forwards at least one child
364
- * OutMessage from the current Submodel to its parent. If no child OutMessage
365
- * is forwarded, use {@link ChildStepFoldWithOutMessage}. Local handling
366
- * through `foldOutMessage` is independent, so a forwarded child OutMessage
367
- * may also update the current parent. */
368
- export type ChildStepFoldWithParentOutMessage<ParentModel, ParentMessage, ChildModel, ChildMessage, ChildOutMessage, ParentOutMessage, ChildRequirements = never, OutMessageStepRequirements = ChildRequirements, OutMessageStepMessage = ParentMessage> = Readonly<{
389
+ * also updates its own state from the child's OutMessage. A derived
390
+ * OutMessage from that Step replaces the one-to-one lift for the dispatch.
391
+ * When the Step emits nothing, the lift runs as usual.
392
+ *
393
+ * Use this shape only when at least one child OutMessage should continue to
394
+ * the current Submodel's parent. If every child OutMessage stops here, use
395
+ * {@link ChildStepFoldWithDerivedParentOutMessage} when the fold derives its
396
+ * own OutMessage, or {@link ChildStepFoldWithOutMessage} when it does not.
397
+ * When provided, `foldOutMessage` still handles each variant locally,
398
+ * including variants that continue upward. */
399
+ export type ChildStepFoldWithParentOutMessage<ParentModel, ParentMessage, ChildModel, ChildMessage, ChildOutMessage, ParentOutMessage, ChildRequirements = never, OutMessageStepRequirements = ChildRequirements, OutMessageStepMessage = ParentMessage, DerivedParentOutMessage = ParentOutMessage> = Readonly<{
369
400
  update: (childModel: ChildModel) => ReturnWithOutMessage<ChildModel, ChildMessage, ChildOutMessage, ChildRequirements>;
370
401
  read: (model: ParentModel) => Option.Option<ChildModel>;
371
402
  write: (model: ParentModel, nextChildModel: ChildModel) => ParentModel;
372
403
  toParentMessage: (message: ChildMessage) => ParentMessage;
373
404
  toParentOutMessage: (outMessage: ChildOutMessage) => ParentOutMessage | undefined;
374
- foldOutMessage?: (outMessage: ChildOutMessage, context: FoldContext<ChildMessage, ParentMessage>) => Step<NoInfer<ParentModel>, OutMessageStepMessage, OutMessageStepRequirements>;
405
+ foldOutMessage?: (outMessage: ChildOutMessage, context: FoldContext<ChildMessage, ParentMessage>) => StepWithOutMessage<NoInfer<ParentModel>, OutMessageStepMessage, DerivedParentOutMessage, OutMessageStepRequirements>;
375
406
  }>;
376
407
  /** Folds a child entry point that takes nothing but the child Model, and
377
408
  * returns the {@link Step} directly. Everything else matches
@@ -402,15 +433,17 @@ export type ChildStepFoldWithParentOutMessage<ParentModel, ParentMessage, ChildM
402
433
  * `liftCommands` bound to this config's `toParentMessage`, for a Command the
403
434
  * Step returns whose result is the child's Message.
404
435
  *
405
- * A parent that is itself a Submodel adds `toParentOutMessage` when it
406
- * forwards at least one child OutMessage to its own parent and receives a
407
- * {@link StepWithOutMessage}, just as the input-taking {@link foldChild}
408
- * returns a {@link FoldWithOutMessage}. When no child OutMessage is
409
- * forwarded, omit the lift and use the plain Step directly. Local handling
410
- * through `foldOutMessage` is independent of forwarding. */
436
+ * A parent that is itself a Submodel receives a
437
+ * {@link StepWithOutMessage} when `foldOutMessage` emits a derived parent
438
+ * OutMessage. Add `toParentOutMessage` only when at least one child OutMessage
439
+ * should continue to the current Submodel's parent. When provided,
440
+ * `foldOutMessage` still handles forwarded variants locally. A derived
441
+ * OutMessage replaces the one-to-one lift for the dispatch. When the Step
442
+ * emits nothing, the lift runs as usual. */
411
443
  export declare const foldChildStep: {
412
- <ParentModel, ParentMessage, ChildModel, ChildMessage, ChildOutMessage, ParentOutMessage, ChildRequirements = never, OutMessageStepRequirements = ChildRequirements, OutMessageStepMessage = ParentMessage>(childFold: ChildStepFoldWithParentOutMessage<ParentModel, ParentMessage, ChildModel, ChildMessage, ChildOutMessage, ParentOutMessage, ChildRequirements, OutMessageStepRequirements, OutMessageStepMessage>): StepWithOutMessage<ParentModel, ParentMessage | OutMessageStepMessage, ParentOutMessage, ChildRequirements | OutMessageStepRequirements>;
444
+ <ParentModel, ParentMessage, ChildModel, ChildMessage, ChildOutMessage, ParentOutMessage, ChildRequirements = never, OutMessageStepRequirements = ChildRequirements, OutMessageStepMessage = ParentMessage, DerivedParentOutMessage = ParentOutMessage>(childFold: ChildStepFoldWithParentOutMessage<ParentModel, ParentMessage, ChildModel, ChildMessage, ChildOutMessage, ParentOutMessage, ChildRequirements, OutMessageStepRequirements, OutMessageStepMessage, DerivedParentOutMessage>): StepWithOutMessage<ParentModel, ParentMessage | OutMessageStepMessage, ParentOutMessage | DerivedParentOutMessage, ChildRequirements | OutMessageStepRequirements>;
413
445
  <ParentModel, ParentMessage, ChildModel, ChildMessage, ChildOutMessage, ChildRequirements = never, OutMessageStepRequirements = ChildRequirements, OutMessageStepMessage = ParentMessage>(childFold: ChildStepFoldWithOutMessage<ParentModel, ParentMessage, ChildModel, ChildMessage, ChildOutMessage, ChildRequirements, OutMessageStepRequirements, OutMessageStepMessage>): Step<ParentModel, ParentMessage | OutMessageStepMessage, ChildRequirements | OutMessageStepRequirements>;
446
+ <ParentModel, ParentMessage, ChildModel, ChildMessage, ChildOutMessage, ParentOutMessage, ChildRequirements = never, OutMessageStepRequirements = ChildRequirements, OutMessageStepMessage = ParentMessage>(childFold: ChildStepFoldWithDerivedParentOutMessage<ParentModel, ParentMessage, ChildModel, ChildMessage, ChildOutMessage, ParentOutMessage, ChildRequirements, OutMessageStepRequirements, OutMessageStepMessage>): StepWithOutMessage<ParentModel, ParentMessage | OutMessageStepMessage, ParentOutMessage, ChildRequirements | OutMessageStepRequirements>;
414
447
  <ParentModel, ParentMessage, ChildModel, ChildMessage, R = never>(childFold: ChildStepFold<ParentModel, ParentMessage, ChildModel, ChildMessage, R>): Step<ParentModel, ParentMessage, R>;
415
448
  };
416
449
  //# sourceMappingURL=update.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/update/update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/update/update.ts"],"names":[],"mappings":"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"}