foldkit 0.166.0 → 0.167.0-canary.0cc0d50dab9f
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/calendar/calendarDate.d.ts.map +1 -1
- package/dist/calendar/calendarDate.js +1 -1
- package/dist/command/index.d.ts +4 -4
- package/dist/command/index.js +4 -4
- package/dist/dom/index.d.ts +6 -0
- package/dist/dom/index.d.ts.map +1 -1
- package/dist/dom/index.js +3 -0
- package/dist/dom/public.d.ts +2 -2
- package/dist/dom/public.d.ts.map +1 -1
- package/dist/dom/public.js +1 -1
- package/dist/{subscription/fromEvent.d.ts → dom/streamFromEvent.d.ts} +31 -31
- package/dist/dom/streamFromEvent.d.ts.map +1 -0
- package/dist/{subscription/fromEvent.js → dom/streamFromEvent.js} +20 -20
- package/dist/{subscription/keyBindings.d.ts → dom/streamFromKeyBindings.d.ts} +7 -7
- package/dist/dom/streamFromKeyBindings.d.ts.map +1 -0
- package/dist/{subscription/keyBindings.js → dom/streamFromKeyBindings.js} +62 -17
- package/dist/{subscription/fromMediaQuery.d.ts → dom/streamFromMediaQuery.d.ts} +7 -7
- package/dist/dom/streamFromMediaQuery.d.ts.map +1 -0
- package/dist/{subscription/fromMediaQuery.js → dom/streamFromMediaQuery.js} +4 -4
- package/dist/experimental/server/document.d.ts +43 -0
- package/dist/experimental/server/document.d.ts.map +1 -0
- package/dist/experimental/server/document.js +42 -0
- package/dist/experimental/server/entry.d.ts +14 -7
- package/dist/experimental/server/entry.d.ts.map +1 -1
- package/dist/experimental/server/entry.js +8 -6
- package/dist/experimental/server/fetch.d.ts +11 -8
- package/dist/experimental/server/fetch.d.ts.map +1 -1
- package/dist/experimental/server/fetch.js +16 -1
- package/dist/experimental/server/index.d.ts +1 -0
- package/dist/experimental/server/index.d.ts.map +1 -1
- package/dist/experimental/server/index.js +1 -0
- package/dist/experimental/server/public.d.ts +2 -2
- package/dist/experimental/server/public.d.ts.map +1 -1
- package/dist/experimental/server/public.js +1 -1
- package/dist/experimental/server/server.d.ts +1 -1
- package/dist/port/port.d.ts +8 -8
- package/dist/port/port.d.ts.map +1 -1
- package/dist/port/port.js +8 -8
- package/dist/port/public.d.ts +1 -1
- package/dist/port/public.d.ts.map +1 -1
- package/dist/port/public.js +1 -1
- package/dist/runtime/hydrationHandoff.d.ts.map +1 -1
- package/dist/runtime/hydrationHandoff.js +4 -2
- package/dist/runtime/runtime.js +1 -1
- package/dist/subscription/animationFrame.d.ts +4 -4
- package/dist/subscription/animationFrame.d.ts.map +1 -1
- package/dist/subscription/animationFrame.js +3 -3
- package/dist/subscription/public.d.ts +2 -8
- package/dist/subscription/public.d.ts.map +1 -1
- package/dist/subscription/public.js +2 -5
- package/dist/subscription/subscription.d.ts +9 -9
- package/dist/subscription/subscription.d.ts.map +1 -1
- package/dist/subscription/subscription.js +6 -6
- package/dist/update/public.d.ts +2 -2
- package/dist/update/public.d.ts.map +1 -1
- package/dist/update/public.js +1 -1
- package/dist/update/update.d.ts +109 -0
- package/dist/update/update.d.ts.map +1 -1
- package/dist/update/update.js +70 -0
- package/package.json +1 -1
- package/dist/subscription/fromEvent.d.ts.map +0 -1
- package/dist/subscription/fromMediaQuery.d.ts.map +0 -1
- package/dist/subscription/keyBindings.d.ts.map +0 -1
package/dist/update/update.js
CHANGED
|
@@ -141,6 +141,76 @@ export const foldChild = (childFold) => {
|
|
|
141
141
|
const context = makeFoldContext(childFold.toParentMessage);
|
|
142
142
|
return Function.dual(2, (model, input) => runChildFold(childFold, context, model, input));
|
|
143
143
|
};
|
|
144
|
+
/** Folds one Submodel selected by key into the parent update. `readAt` and
|
|
145
|
+
* `writeAt` use the key to find and replace the child Model.
|
|
146
|
+
* `toParentMessage` receives the key when wrapping child Messages. The returned
|
|
147
|
+
* {@link FoldAt} runs data-first as `fold(model, key, input)` and data-last
|
|
148
|
+
* as `fold(key, input)` for {@link combine}.
|
|
149
|
+
*
|
|
150
|
+
* When `readAt` returns `None` for the key, the fold returns `{ model }`.
|
|
151
|
+
*
|
|
152
|
+
* `foldOutMessage` takes the key and a {@link FoldContext} of lifters bound
|
|
153
|
+
* to `toParentMessage`, then returns a matcher that produces a parent Step.
|
|
154
|
+
* Callbacks that do not need the lifters can omit the context parameter.
|
|
155
|
+
* To forward a child OutMessage, `toParentOutMessage` takes the key and
|
|
156
|
+
* returns a matcher that produces a parent OutMessage. Both factories are
|
|
157
|
+
* skipped when the child emits no OutMessage. If the local Step derives a
|
|
158
|
+
* parent OutMessage, that result takes precedence over forwarding.
|
|
159
|
+
*
|
|
160
|
+
* For example, the parent stores Applicant Submodels in an array and uses each
|
|
161
|
+
* entry's stable id as its key:
|
|
162
|
+
*
|
|
163
|
+
* ```ts
|
|
164
|
+
* const foldApplicant = Update.foldChildAt({
|
|
165
|
+
* update: Applicant.update,
|
|
166
|
+
* readAt: (model: Model, entryId: string) =>
|
|
167
|
+
* Option.map(
|
|
168
|
+
* Array.findFirst(
|
|
169
|
+
* model.applicants,
|
|
170
|
+
* applicant => applicant.id === entryId,
|
|
171
|
+
* ),
|
|
172
|
+
* applicant => applicant.entry,
|
|
173
|
+
* ),
|
|
174
|
+
* writeAt: (model, entryId, nextEntry) =>
|
|
175
|
+
* modifyFields(model, {
|
|
176
|
+
* applicants: Array.map(applicant =>
|
|
177
|
+
* applicant.id === entryId
|
|
178
|
+
* ? modifyFields(applicant, { entry: () => nextEntry })
|
|
179
|
+
* : applicant,
|
|
180
|
+
* ),
|
|
181
|
+
* }),
|
|
182
|
+
* toParentMessage: (entryId, message) =>
|
|
183
|
+
* Message.GotApplicantMessage({ entryId, message }),
|
|
184
|
+
* })
|
|
185
|
+
*
|
|
186
|
+
* GotApplicantMessage: ({ entryId, message }) =>
|
|
187
|
+
* foldApplicant(model, entryId, message)
|
|
188
|
+
* ```
|
|
189
|
+
*
|
|
190
|
+
* When only one child is active at a time, store that one Model and an
|
|
191
|
+
* `Option` of its key instead of a collection. */
|
|
192
|
+
export const foldChildAt = (keyedFold) => Function.dual(3, (model, key, input) => {
|
|
193
|
+
const toParentMessage = (message) => keyedFold.toParentMessage(key, message);
|
|
194
|
+
const toParentOutMessage = keyedFold.toParentOutMessage;
|
|
195
|
+
const foldOutMessage = keyedFold.foldOutMessage;
|
|
196
|
+
const childFold = {
|
|
197
|
+
update: keyedFold.update,
|
|
198
|
+
read: parentModel => keyedFold.readAt(parentModel, key),
|
|
199
|
+
write: (parentModel, nextChildModel) => keyedFold.writeAt(parentModel, key, nextChildModel),
|
|
200
|
+
toParentMessage,
|
|
201
|
+
...(toParentOutMessage === undefined
|
|
202
|
+
? {}
|
|
203
|
+
: {
|
|
204
|
+
toParentOutMessage: (outMessage) => toParentOutMessage(key)(outMessage),
|
|
205
|
+
}),
|
|
206
|
+
...(foldOutMessage === undefined
|
|
207
|
+
? {}
|
|
208
|
+
: {
|
|
209
|
+
foldOutMessage: (outMessage, context) => foldOutMessage(key, context)(outMessage),
|
|
210
|
+
}),
|
|
211
|
+
};
|
|
212
|
+
return runChildFold(childFold, makeFoldContext(toParentMessage), model, input);
|
|
213
|
+
});
|
|
144
214
|
const makeFoldContext = (toParentMessage) => ({
|
|
145
215
|
liftCommand: command => mapMessage(command, toParentMessage),
|
|
146
216
|
liftCommands: commands => mapMessages(commands, toParentMessage),
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fromEvent.d.ts","sourceRoot":"","sources":["../../src/subscription/fromEvent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fromMediaQuery.d.ts","sourceRoot":"","sources":["../../src/subscription/fromMediaQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE9C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,oBAAoB,CAAC,MAAM,IAAI,QAAQ,CAAC;IAClD,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,MAAM,CAAA;CAC5C,CAAC,CAAA;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,cAAc,GAAI,MAAM,UAC3B,oBAAoB,CAAC,MAAM,CAAC,KACnC,MAAM,CAAC,MAAM,CAAC,MAAM,CAmBpB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"keyBindings.d.ts","sourceRoot":"","sources":["../../src/subscription/keyBindings.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EAOR,MAAM,EAGP,MAAM,QAAQ,CAAA;AAEf,oFAAoF;AACpF,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,OAAO,CAAA;AAE9C,mEAAmE;AACnE,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AAE/E,KAAK,WAAW,CAAC,MAAM,IAAI,QAAQ,CAAC;IAClC,IAAI,EAAE,WAAW,CAAA;IACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,MAAM,CAAA;IAC1C,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB,CAAC,CAAA;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,UAAU,CAAC,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,GAClD,CACI,QAAQ,CAAC;IACP,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAA;CAClC,CAAC,GACF,QAAQ,CAAC;IACP,IAAI,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAClD,YAAY,CAAC,EAAE,KAAK,CAAA;CACrB,CAAC,CACL,CAAA;AAEH,KAAK,MAAM,GAAG,SAAS,GAAG,MAAM,CAAA;AAEhC,+DAA+D;AAC/D,MAAM,MAAM,iBAAiB,CAAC,MAAM,IAAI,QAAQ,CAAC;IAC/C,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAA;IAC3C,MAAM,CAAC,EAAE,WAAW,GAAG,CAAC,MAAM,WAAW,CAAC,CAAA;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,eAAe,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAA;CACjC,CAAC,CAAA;AA2sBF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0EG;AACH,eAAO,MAAM,WAAW,GAAI,MAAM,UACxB,iBAAiB,CAAC,MAAM,CAAC,KAChC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAuD,CAAA"}
|