foldkit 0.100.0 → 0.101.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.
- package/README.md +38 -36
- package/dist/devTools/overlay.d.ts.map +1 -1
- package/dist/devTools/overlay.js +25 -40
- package/dist/devTools/store.d.ts.map +1 -1
- package/dist/devTools/store.js +50 -49
- package/dist/runtime/runtime.d.ts +10 -10
- package/dist/runtime/runtime.d.ts.map +1 -1
- package/dist/runtime/runtime.js +3 -2
- package/dist/runtime/subscription.d.ts +139 -19
- package/dist/runtime/subscription.d.ts.map +1 -1
- package/dist/runtime/subscription.js +90 -9
- package/dist/subscription/animationFrame.d.ts +23 -26
- package/dist/subscription/animationFrame.d.ts.map +1 -1
- package/dist/subscription/animationFrame.js +17 -18
- package/dist/subscription/public.d.ts +2 -2
- package/dist/subscription/public.d.ts.map +1 -1
- package/dist/subscription/public.js +1 -1
- package/dist/test/apps/bubbling.d.ts.map +1 -1
- package/dist/test/apps/bubbling.js +7 -5
- package/dist/test/apps/counter.d.ts.map +1 -1
- package/dist/test/apps/counter.js +8 -6
- package/dist/test/apps/disabledButton.d.ts.map +1 -1
- package/dist/test/apps/disabledButton.js +32 -21
- package/dist/test/apps/fileUpload.d.ts.map +1 -1
- package/dist/test/apps/fileUpload.js +18 -16
- package/dist/test/apps/interactions.d.ts.map +1 -1
- package/dist/test/apps/interactions.js +21 -19
- package/dist/test/apps/keypress.d.ts.map +1 -1
- package/dist/test/apps/keypress.js +12 -10
- package/dist/test/apps/login.d.ts.map +1 -1
- package/dist/test/apps/login.js +38 -36
- package/dist/test/apps/logoutButton.d.ts.map +1 -1
- package/dist/test/apps/logoutButton.js +4 -2
- package/dist/test/apps/mountPanel.d.ts.map +1 -1
- package/dist/test/apps/mountPanel.js +29 -21
- package/dist/test/apps/multiRole.d.ts.map +1 -1
- package/dist/test/apps/multiRole.js +6 -4
- package/dist/test/apps/pointer.d.ts.map +1 -1
- package/dist/test/apps/pointer.js +15 -13
- package/dist/test/apps/resumeUpload.d.ts.map +1 -1
- package/dist/test/apps/resumeUpload.js +20 -15
- package/dist/ui/dragAndDrop/index.d.ts +383 -101
- package/dist/ui/dragAndDrop/index.d.ts.map +1 -1
- package/dist/ui/dragAndDrop/index.js +19 -24
- package/dist/ui/dragAndDrop/public.d.ts +1 -1
- package/dist/ui/dragAndDrop/public.d.ts.map +1 -1
- package/dist/ui/dragAndDrop/public.js +1 -1
- package/dist/ui/slider/index.d.ts +193 -87
- package/dist/ui/slider/index.d.ts.map +1 -1
- package/dist/ui/slider/index.js +12 -19
- package/dist/ui/slider/public.d.ts +1 -1
- package/dist/ui/slider/public.d.ts.map +1 -1
- package/dist/ui/slider/public.js +1 -1
- package/dist/ui/virtualList/index.d.ts +45 -39
- package/dist/ui/virtualList/index.d.ts.map +1 -1
- package/dist/ui/virtualList/index.js +5 -12
- package/dist/ui/virtualList/public.d.ts +1 -1
- package/dist/ui/virtualList/public.d.ts.map +1 -1
- package/dist/ui/virtualList/public.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -31,7 +31,7 @@ It's not incremental. There's no React interop, no escape hatch from Effect, no
|
|
|
31
31
|
|
|
32
32
|
## Built on Effect
|
|
33
33
|
|
|
34
|
-
Every Foldkit application is an [Effect](https://effect.website/) program. Your Model is a [Schema](https://effect.website/docs/schema/introduction/). Side effects are values you return
|
|
34
|
+
Every Foldkit application is an [Effect](https://effect.website/) program. Your Model is a [Schema](https://effect.website/docs/schema/introduction/). Side effects are values you return as Commands to the runtime, not callbacks you fire. If you already know Effect, Foldkit feels natural. If you're new to Effect, Foldkit is a great way to immerse yourself in it.
|
|
35
35
|
|
|
36
36
|
## Coming from React?
|
|
37
37
|
|
|
@@ -102,41 +102,43 @@ export const init: Runtime.ProgramInit<Model, Message> = () => [
|
|
|
102
102
|
|
|
103
103
|
// VIEW
|
|
104
104
|
|
|
105
|
-
const
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
105
|
+
export const view = (model: Model): Document => {
|
|
106
|
+
const h = html<Message>()
|
|
107
|
+
|
|
108
|
+
return {
|
|
109
|
+
title: `Counter: ${model.count}`,
|
|
110
|
+
body: h.div(
|
|
111
|
+
[
|
|
112
|
+
h.Class(
|
|
113
|
+
'min-h-screen bg-white flex flex-col items-center justify-center gap-6 p-6',
|
|
114
|
+
),
|
|
115
|
+
],
|
|
116
|
+
[
|
|
117
|
+
h.div(
|
|
118
|
+
[h.Class('text-6xl font-bold text-gray-800')],
|
|
119
|
+
[model.count.toString()],
|
|
120
|
+
),
|
|
121
|
+
h.div(
|
|
122
|
+
[h.Class('flex flex-wrap justify-center gap-4')],
|
|
123
|
+
[
|
|
124
|
+
h.button(
|
|
125
|
+
[h.OnClick(ClickedDecrement()), h.Class(buttonStyle)],
|
|
126
|
+
['-'],
|
|
127
|
+
),
|
|
128
|
+
h.button(
|
|
129
|
+
[h.OnClick(ClickedReset()), h.Class(buttonStyle)],
|
|
130
|
+
['Reset'],
|
|
131
|
+
),
|
|
132
|
+
h.button(
|
|
133
|
+
[h.OnClick(ClickedIncrement()), h.Class(buttonStyle)],
|
|
134
|
+
['+'],
|
|
135
|
+
),
|
|
136
|
+
],
|
|
137
|
+
),
|
|
138
|
+
],
|
|
139
|
+
),
|
|
140
|
+
}
|
|
141
|
+
}
|
|
140
142
|
|
|
141
143
|
// STYLE
|
|
142
144
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../../src/devTools/overlay.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,OAAO,EACP,MAAM,EAGN,OAAO,EAGP,MAAM,EAKN,MAAM,IAAI,CAAC,EAGX,eAAe,EAEhB,MAAM,QAAQ,CAAA;AAEf,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAA;AAa9C,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAQ3E,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,aAAa,EAElB,KAAK,WAAW,EAChB,KAAK,UAAU,EAChB,MAAM,YAAY,CAAA;;
|
|
1
|
+
{"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../../src/devTools/overlay.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,OAAO,EACP,MAAM,EAGN,OAAO,EAGP,MAAM,EAKN,MAAM,IAAI,CAAC,EAGX,eAAe,EAEhB,MAAM,QAAQ,CAAA;AAEf,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAA;AAa9C,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAQ3E,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,aAAa,EAElB,KAAK,WAAW,EAChB,KAAK,UAAU,EAChB,MAAM,YAAY,CAAA;;oFAiasC,CAAC;;;;;;;;;;;;;;AAhI1D,cAAM,YAAa,SAAQ,iBAE1B;CAAG;;AAEJ,cAAM,iBAAkB,SAAQ,sBAGC;CAAG;AAEpC,eAAO,MAAM,UAAU;;iBAGsB,CAAA;AAE7C,eAAO,MAAM,YAAY;;iBAGwB,CAAA;AAWjD,eAAO,MAAM,MAAM;;;;wBAUlB,CAAA;AAED,eAAO,MAAM,YAAY;;;;;;;;wBAIqB,CAAA;AAE9C,eAAO,MAAM,aAAa;;;;;;wBAYzB,CAAA;AAED,eAAO,MAAM,MAAM;;wBASlB,CAAA;AAED,eAAO,MAAM,KAAK;;wBASjB,CAAA;AAED,eAAO,MAAM,WAAW;;6BAYvB,CAAA;AAwqDD,eAAO,MAAM,aAAa,GACxB,OAAO,aAAa,EACpB,UAAU,gBAAgB,EAC1B,MAAM,YAAY,EAClB,aAAa,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,sCAmEhC,CAAA"}
|
package/dist/devTools/overlay.js
CHANGED
|
@@ -6,7 +6,7 @@ import { OptionExt } from '../effectExtensions/index.js';
|
|
|
6
6
|
import { DEVTOOLS_HOST_ID, createKeyedLazy, createLazy, html, } from '../html/index.js';
|
|
7
7
|
import { m } from '../message/index.js';
|
|
8
8
|
import { makeProgram } from '../runtime/runtime.js';
|
|
9
|
-
import
|
|
9
|
+
import * as Subscription from '../runtime/subscription.js';
|
|
10
10
|
import { evo } from '../struct/index.js';
|
|
11
11
|
import * as Listbox from '../ui/listbox/public.js';
|
|
12
12
|
import * as Slider from '../ui/slider/public.js';
|
|
@@ -457,47 +457,27 @@ const makeUpdate = (store, shadow, mode) => {
|
|
|
457
457
|
}), M.tag('CompletedJump', 'CompletedResume', 'CompletedClear', 'LockedScroll', 'UnlockedScroll', 'ScrolledToTop', () => [model, []]), M.exhaustive);
|
|
458
458
|
};
|
|
459
459
|
// SUBSCRIPTION
|
|
460
|
-
const ScrubberDragActivity = S.Literals(['Idle', 'Active']);
|
|
461
|
-
const SubscriptionDependencies = S.Struct({
|
|
462
|
-
storeUpdates: S.Boolean,
|
|
463
|
-
mobileBreakpoint: S.Null,
|
|
464
|
-
scrubberPointer: S.Struct({
|
|
465
|
-
dragActivity: ScrubberDragActivity,
|
|
466
|
-
id: S.String,
|
|
467
|
-
min: S.Number,
|
|
468
|
-
max: S.Number,
|
|
469
|
-
}),
|
|
470
|
-
scrubberEscape: S.Struct({
|
|
471
|
-
dragActivity: ScrubberDragActivity,
|
|
472
|
-
}),
|
|
473
|
-
});
|
|
474
460
|
const makeOverlaySubscriptions = (store, shadow) => {
|
|
475
461
|
const sliderSubscriptions = Slider.subscriptionsForRoot(() => shadow);
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
modelToDependencies: () => null,
|
|
483
|
-
dependenciesToStream: () => Stream.callback(queue => Effect.acquireRelease(Effect.sync(() => {
|
|
484
|
-
const mediaQuery = window.matchMedia(MOBILE_BREAKPOINT_QUERY);
|
|
485
|
-
const handler = (event) => {
|
|
486
|
-
Queue.offerUnsafe(queue, CrossedMobileBreakpoint({ isMobile: event.matches }));
|
|
487
|
-
};
|
|
488
|
-
mediaQuery.addEventListener('change', handler);
|
|
489
|
-
return { mediaQuery, handler };
|
|
490
|
-
}), ({ mediaQuery, handler }) => Effect.sync(() => mediaQuery.removeEventListener('change', handler))).pipe(Effect.flatMap(() => Effect.never))),
|
|
491
|
-
},
|
|
492
|
-
scrubberPointer: {
|
|
493
|
-
modelToDependencies: model => sliderSubscriptions.dragPointer.modelToDependencies(model.scrubberSlider),
|
|
494
|
-
dependenciesToStream: (deps, readDeps) => Stream.map(sliderSubscriptions.dragPointer.dependenciesToStream(deps, readDeps), message => GotScrubberSliderMessage({ message })),
|
|
495
|
-
},
|
|
496
|
-
scrubberEscape: {
|
|
497
|
-
modelToDependencies: model => sliderSubscriptions.dragEscape.modelToDependencies(model.scrubberSlider),
|
|
498
|
-
dependenciesToStream: (deps, readDeps) => Stream.map(sliderSubscriptions.dragEscape.dependenciesToStream(deps, readDeps), message => GotScrubberSliderMessage({ message })),
|
|
499
|
-
},
|
|
462
|
+
const scrubberSubscriptions = Subscription.lift({
|
|
463
|
+
scrubberPointer: sliderSubscriptions.dragPointer,
|
|
464
|
+
scrubberEscape: sliderSubscriptions.dragEscape,
|
|
465
|
+
})({
|
|
466
|
+
toChildModel: model => model.scrubberSlider,
|
|
467
|
+
toParentMessage: message => GotScrubberSliderMessage({ message }),
|
|
500
468
|
});
|
|
469
|
+
const ownSubscriptions = Subscription.make()(_entry => ({
|
|
470
|
+
storeUpdates: Subscription.persistent(Stream.concat(Stream.fromEffect(SubscriptionRef.get(store.stateRef).pipe(Effect.map(state => ReceivedStoreUpdate(toDisplayState(state))))), Stream.map(SubscriptionRef.changes(store.stateRef), state => ReceivedStoreUpdate(toDisplayState(state))))),
|
|
471
|
+
mobileBreakpoint: Subscription.persistent(Stream.callback(queue => Effect.acquireRelease(Effect.sync(() => {
|
|
472
|
+
const mediaQuery = window.matchMedia(MOBILE_BREAKPOINT_QUERY);
|
|
473
|
+
const handler = (event) => {
|
|
474
|
+
Queue.offerUnsafe(queue, CrossedMobileBreakpoint({ isMobile: event.matches }));
|
|
475
|
+
};
|
|
476
|
+
mediaQuery.addEventListener('change', handler);
|
|
477
|
+
return { mediaQuery, handler };
|
|
478
|
+
}), ({ mediaQuery, handler }) => Effect.sync(() => mediaQuery.removeEventListener('change', handler))).pipe(Effect.flatMap(() => Effect.never)))),
|
|
479
|
+
}));
|
|
480
|
+
return Subscription.aggregate()(ownSubscriptions, scrubberSubscriptions);
|
|
501
481
|
};
|
|
502
482
|
// VIEW
|
|
503
483
|
const indexClass = 'text-2xs text-dt-muted font-mono min-w-5';
|
|
@@ -1001,7 +981,12 @@ const makeView = (position, mode, shadow, maybeBanner) => {
|
|
|
1001
981
|
]),
|
|
1002
982
|
maybeAction: OptionExt.when(!model.isFollowingLatest, h.button([h.Class(actionButtonClass), h.OnClick(ClickedFollowLatest())], ['Follow Latest →'])),
|
|
1003
983
|
})), M.exhaustive);
|
|
1004
|
-
|
|
984
|
+
const maybeClearHistoryButton = OptionExt.when(!model.isPaused, clearHistoryButton);
|
|
985
|
+
return h.header([h.Class(headerClass)], [
|
|
986
|
+
status,
|
|
987
|
+
...Option.toArray(maybeAction),
|
|
988
|
+
...Option.toArray(maybeClearHistoryButton),
|
|
989
|
+
]);
|
|
1005
990
|
};
|
|
1006
991
|
const initRowView = (isSelected, isPausedHere) => h.keyed('li')('init', [
|
|
1007
992
|
h.Class(clsx(ROW_BASE, { selected: isSelected })),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/devTools/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,MAAM,EACN,OAAO,EACP,OAAO,EAEP,MAAM,EAIN,eAAe,EAEhB,MAAM,QAAQ,CAAA;AAIf,eAAO,MAAM,UAAU,KAAK,CAAA;AAM5B,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC;IAChC,YAAY,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IACrC,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;CACvC,CAAC,CAAA;AAEF,eAAO,MAAM,SAAS,EAAE,UAGvB,CAAA;AAID,eAAO,MAAM,WAAW,GACtB,UAAU,OAAO,EACjB,SAAS,OAAO,KACf,UA6EF,CAAA;AAID,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC/B,CAAC,CAAA;AAEF,MAAM,MAAM,WAAW,GAAG,QAAQ,CAAC;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC/B,CAAC,CAAA;AAEF,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC;IAClC,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,aAAa,CAAC,aAAa,CAAC,CAAA;IACtC,WAAW,EAAE,aAAa,CAAC,WAAW,CAAC,CAAA;IACvC,SAAS,EAAE,aAAa,CAAC,WAAW,CAAC,CAAA;IACrC,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,OAAO,CAAA;IACvB,IAAI,EAAE,UAAU,CAAA;CACjB,CAAC,CAAA;AAEF,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC;IAChC,OAAO,EAAE,aAAa,CAAC,YAAY,CAAC,CAAA;IACpC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC3C,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACtC,YAAY,EAAE,aAAa,CAAC,aAAa,CAAC,CAAA;IAC1C,eAAe,EAAE,aAAa,CAAC,WAAW,CAAC,CAAA;IAC3C,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,OAAO,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;CACzC,CAAC,CAAA;AAEF,MAAM,MAAM,MAAM,GAAG,QAAQ,CAAC;IAC5B,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAA;IACrD,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC/C,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;CACvC,CAAC,CAAA;AAcF;;;;;GAKG;AACH,MAAM,MAAM,0BAA0B,GAAG,QAAQ,CAAC;IAChD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B,CAAC,CAAA;AAEF,eAAO,MAAM,mBAAmB,GAC9B,QAAQ,MAAM,EACd,UAAS,0BAA+B,KACvC,MAAM,CAAC,MAAM,CAAC,aAAa,
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/devTools/store.ts"],"names":[],"mappings":"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"}
|
package/dist/devTools/store.js
CHANGED
|
@@ -97,28 +97,26 @@ export const createDevToolsStore = (bridge, options = {}) => Effect.gen(function
|
|
|
97
97
|
: state.startIndex;
|
|
98
98
|
return pipe(state.keyframes, HashMap.get(keyframeIndex), Option.map(keyframeModel => pipe(state.entries, Array.drop(keyframeIndex - state.startIndex), Array.take(index - keyframeIndex + 1), Array.reduce(keyframeModel, (model, entry) => bridge.replay(model, entry.message)))), Option.getOrThrow);
|
|
99
99
|
};
|
|
100
|
-
const addKeyframeIfNeeded = (
|
|
100
|
+
const addKeyframeIfNeeded = (nextAbsoluteIndex, modelAfterUpdate) => (keyframes) => nextAbsoluteIndex % keyframeInterval === 0
|
|
101
101
|
? HashMap.set(keyframes, nextAbsoluteIndex, modelAfterUpdate)
|
|
102
102
|
: keyframes;
|
|
103
103
|
const evictOldestSegment = (state) => {
|
|
104
104
|
const nextStartIndex = state.startIndex + keyframeInterval;
|
|
105
105
|
const isPausedAtRetainedIndex = state.pausedAtIndex >= nextStartIndex ||
|
|
106
106
|
state.pausedAtIndex === INIT_INDEX;
|
|
107
|
-
return {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
};
|
|
107
|
+
return evo(state, {
|
|
108
|
+
entries: Array.drop(keyframeInterval),
|
|
109
|
+
keyframes: HashMap.remove(state.startIndex),
|
|
110
|
+
startIndex: () => nextStartIndex,
|
|
111
|
+
isPaused: isPaused => isPaused && isPausedAtRetainedIndex,
|
|
112
|
+
});
|
|
114
113
|
};
|
|
115
|
-
const recordInit = (model, commands, mountStarts = []) => SubscriptionRef.update(stateRef, state => ({
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
maybeLatestModel: Option.some(model),
|
|
114
|
+
const recordInit = (model, commands, mountStarts = []) => SubscriptionRef.update(stateRef, state => evo(state, {
|
|
115
|
+
maybeInitModel: () => Option.some(model),
|
|
116
|
+
initCommands: () => commands,
|
|
117
|
+
initMountStarts: () => mountStarts,
|
|
118
|
+
keyframes: HashMap.set(0, model),
|
|
119
|
+
maybeLatestModel: () => Option.some(model),
|
|
122
120
|
}));
|
|
123
121
|
const recordMessage = (message, modelBeforeUpdate, modelAfterUpdate, commands, isModelChanged) => SubscriptionRef.update(stateRef, state => {
|
|
124
122
|
const absoluteIndex = state.startIndex + state.entries.length;
|
|
@@ -126,9 +124,8 @@ export const createDevToolsStore = (bridge, options = {}) => Effect.gen(function
|
|
|
126
124
|
? computeDiff(modelBeforeUpdate, modelAfterUpdate)
|
|
127
125
|
: emptyDiff;
|
|
128
126
|
const hasChangedFields = HashSet.size(diff.changedPaths) > 0;
|
|
129
|
-
const nextState = {
|
|
130
|
-
|
|
131
|
-
entries: Array.append(state.entries, {
|
|
127
|
+
const nextState = evo(state, {
|
|
128
|
+
entries: Array.append({
|
|
132
129
|
tag: message._tag,
|
|
133
130
|
message,
|
|
134
131
|
commands,
|
|
@@ -138,9 +135,9 @@ export const createDevToolsStore = (bridge, options = {}) => Effect.gen(function
|
|
|
138
135
|
isModelChanged: hasChangedFields,
|
|
139
136
|
diff,
|
|
140
137
|
}),
|
|
141
|
-
keyframes: addKeyframeIfNeeded(
|
|
142
|
-
maybeLatestModel: Option.some(modelAfterUpdate),
|
|
143
|
-
};
|
|
138
|
+
keyframes: addKeyframeIfNeeded(absoluteIndex + 1, modelAfterUpdate),
|
|
139
|
+
maybeLatestModel: () => Option.some(modelAfterUpdate),
|
|
140
|
+
});
|
|
144
141
|
return nextState.entries.length > maxEntries
|
|
145
142
|
? evictOldestSegment(nextState)
|
|
146
143
|
: nextState;
|
|
@@ -161,16 +158,13 @@ export const createDevToolsStore = (bridge, options = {}) => Effect.gen(function
|
|
|
161
158
|
return state;
|
|
162
159
|
}
|
|
163
160
|
return Array.match(state.entries, {
|
|
164
|
-
onEmpty: () => ({
|
|
165
|
-
|
|
166
|
-
initMountStarts: Array.appendAll(state.initMountStarts, mountStarts),
|
|
161
|
+
onEmpty: () => evo(state, {
|
|
162
|
+
initMountStarts: Array.appendAll(mountStarts),
|
|
167
163
|
}),
|
|
168
|
-
onNonEmpty: entries => ({
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
mountStarts: Array.appendAll(last.mountStarts, mountStarts),
|
|
173
|
-
mountEnds: Array.appendAll(last.mountEnds, mountEnds),
|
|
164
|
+
onNonEmpty: entries => evo(state, {
|
|
165
|
+
entries: () => Array.modifyLastNonEmpty(entries, last => evo(last, {
|
|
166
|
+
mountStarts: Array.appendAll(mountStarts),
|
|
167
|
+
mountEnds: Array.appendAll(mountEnds),
|
|
174
168
|
})),
|
|
175
169
|
}),
|
|
176
170
|
});
|
|
@@ -194,30 +188,37 @@ export const createDevToolsStore = (bridge, options = {}) => Effect.gen(function
|
|
|
194
188
|
const jumpTo = (index) => Effect.gen(function* () {
|
|
195
189
|
const state = yield* SubscriptionRef.get(stateRef);
|
|
196
190
|
yield* bridge.render(resolveModel(state, index));
|
|
197
|
-
yield* SubscriptionRef.set(stateRef, {
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
});
|
|
191
|
+
yield* SubscriptionRef.set(stateRef, evo(state, {
|
|
192
|
+
isPaused: () => true,
|
|
193
|
+
pausedAtIndex: () => index,
|
|
194
|
+
}));
|
|
202
195
|
});
|
|
203
196
|
const resume = Effect.gen(function* () {
|
|
204
|
-
yield* SubscriptionRef.update(stateRef, state => ({
|
|
205
|
-
|
|
206
|
-
isPaused: false,
|
|
197
|
+
yield* SubscriptionRef.update(stateRef, state => evo(state, {
|
|
198
|
+
isPaused: () => false,
|
|
207
199
|
}));
|
|
208
200
|
yield* bridge.markRenderPending;
|
|
209
201
|
});
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
202
|
+
// NOTE: the paused snapshot is replayed off the entries array, so wiping
|
|
203
|
+
// entries while paused strands the runtime on a historical state with no
|
|
204
|
+
// path back to live. Refuse the write until resume.
|
|
205
|
+
const clear = SubscriptionRef.update(stateRef, state => {
|
|
206
|
+
if (state.isPaused) {
|
|
207
|
+
return state;
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
return evo(state, {
|
|
211
|
+
entries: () => [],
|
|
212
|
+
startIndex: () => 0,
|
|
213
|
+
pausedAtIndex: () => 0,
|
|
214
|
+
keyframes: () => Option.match(state.maybeInitModel, {
|
|
215
|
+
onNone: () => HashMap.empty(),
|
|
216
|
+
onSome: model => HashMap.make([0, model]),
|
|
217
|
+
}),
|
|
218
|
+
maybeLatestModel: () => state.maybeInitModel,
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
});
|
|
221
222
|
const getDiffAtIndex = (index) => Effect.gen(function* () {
|
|
222
223
|
if (index === INIT_INDEX) {
|
|
223
224
|
return emptyDiff;
|
|
@@ -99,14 +99,14 @@ export type CrashConfig<Model, Message> = Readonly<{
|
|
|
99
99
|
view?: (context: CrashContext<Model, Message>) => Document;
|
|
100
100
|
report?: (context: CrashContext<Model, Message>) => void;
|
|
101
101
|
}>;
|
|
102
|
-
type BaseProgramConfig<Model, Message,
|
|
102
|
+
type BaseProgramConfig<Model, Message, Resources = never, ManagedResourceServices = never> = Readonly<{
|
|
103
103
|
Model: Schema.Codec<Model, any, unknown, unknown>;
|
|
104
104
|
update: (model: Model, message: Message) => readonly [
|
|
105
105
|
Model,
|
|
106
106
|
ReadonlyArray<Command<Message, never, Resources | ManagedResourceServices>>
|
|
107
107
|
];
|
|
108
108
|
view: (model: Model) => Document;
|
|
109
|
-
subscriptions?: Subscriptions<Model, Message,
|
|
109
|
+
subscriptions?: Subscriptions<Model, Message, Resources | ManagedResourceServices>;
|
|
110
110
|
container: HTMLElement | null;
|
|
111
111
|
crash?: CrashConfig<Model, Message>;
|
|
112
112
|
slowView?: SlowViewConfig<Model, Message>;
|
|
@@ -116,7 +116,7 @@ type BaseProgramConfig<Model, Message, StreamDepsMap extends Schema.Struct<Schem
|
|
|
116
116
|
devTools?: DevToolsConfig;
|
|
117
117
|
}>;
|
|
118
118
|
/** Configuration for `makeProgram` with flags and URL routing. */
|
|
119
|
-
export type RoutingProgramConfigWithFlags<Model, Message,
|
|
119
|
+
export type RoutingProgramConfigWithFlags<Model, Message, Flags, Resources = never, ManagedResourceServices = never> = BaseProgramConfig<Model, Message, Resources, ManagedResourceServices> & Readonly<{
|
|
120
120
|
Flags: Schema.Codec<Flags, any, unknown, unknown>;
|
|
121
121
|
flags: Effect.Effect<Flags>;
|
|
122
122
|
routing: RoutingConfig<Message>;
|
|
@@ -126,7 +126,7 @@ export type RoutingProgramConfigWithFlags<Model, Message, StreamDepsMap extends
|
|
|
126
126
|
];
|
|
127
127
|
}>;
|
|
128
128
|
/** Configuration for `makeProgram` with URL routing but no flags. */
|
|
129
|
-
export type RoutingProgramConfig<Model, Message,
|
|
129
|
+
export type RoutingProgramConfig<Model, Message, Resources = never, ManagedResourceServices = never> = BaseProgramConfig<Model, Message, Resources, ManagedResourceServices> & Readonly<{
|
|
130
130
|
routing: RoutingConfig<Message>;
|
|
131
131
|
init: (url: Url) => readonly [
|
|
132
132
|
Model,
|
|
@@ -134,7 +134,7 @@ export type RoutingProgramConfig<Model, Message, StreamDepsMap extends Schema.St
|
|
|
134
134
|
];
|
|
135
135
|
}>;
|
|
136
136
|
/** Configuration for `makeProgram` with flags but no URL routing. */
|
|
137
|
-
export type ProgramConfigWithFlags<Model, Message,
|
|
137
|
+
export type ProgramConfigWithFlags<Model, Message, Flags, Resources = never, ManagedResourceServices = never> = BaseProgramConfig<Model, Message, Resources, ManagedResourceServices> & Readonly<{
|
|
138
138
|
Flags: Schema.Codec<Flags, any, unknown, unknown>;
|
|
139
139
|
flags: Effect.Effect<Flags>;
|
|
140
140
|
init: (flags: Flags) => readonly [
|
|
@@ -143,7 +143,7 @@ export type ProgramConfigWithFlags<Model, Message, StreamDepsMap extends Schema.
|
|
|
143
143
|
];
|
|
144
144
|
}>;
|
|
145
145
|
/** Configuration for `makeProgram` without flags or URL routing. */
|
|
146
|
-
export type ProgramConfig<Model, Message,
|
|
146
|
+
export type ProgramConfig<Model, Message, Resources = never, ManagedResourceServices = never> = BaseProgramConfig<Model, Message, Resources, ManagedResourceServices> & Readonly<{
|
|
147
147
|
init: () => readonly [
|
|
148
148
|
Model,
|
|
149
149
|
ReadonlyArray<Command<Message, never, Resources | ManagedResourceServices>>
|
|
@@ -173,16 +173,16 @@ export type MakeRuntimeReturn = Readonly<{
|
|
|
173
173
|
/** Creates a Foldkit program and returns a runtime that can be passed to `run`. Add a `routing` config for URL routing. */
|
|
174
174
|
export declare function makeProgram<Model, Message extends {
|
|
175
175
|
_tag: string;
|
|
176
|
-
},
|
|
176
|
+
}, Flags, Resources = never, ManagedResourceServices = never>(config: RoutingProgramConfigWithFlags<Model, Message, Flags, Resources, ManagedResourceServices>): MakeRuntimeReturn;
|
|
177
177
|
export declare function makeProgram<Model, Message extends {
|
|
178
178
|
_tag: string;
|
|
179
|
-
},
|
|
179
|
+
}, Resources = never, ManagedResourceServices = never>(config: RoutingProgramConfig<Model, Message, Resources, ManagedResourceServices>): MakeRuntimeReturn;
|
|
180
180
|
export declare function makeProgram<Model, Message extends {
|
|
181
181
|
_tag: string;
|
|
182
|
-
},
|
|
182
|
+
}, Flags, Resources = never, ManagedResourceServices = never>(config: ProgramConfigWithFlags<Model, Message, Flags, Resources, ManagedResourceServices>): MakeRuntimeReturn;
|
|
183
183
|
export declare function makeProgram<Model, Message extends {
|
|
184
184
|
_tag: string;
|
|
185
|
-
},
|
|
185
|
+
}, Resources = never, ManagedResourceServices = never>(config: ProgramConfig<Model, Message, Resources, ManagedResourceServices>): MakeRuntimeReturn;
|
|
186
186
|
/** Starts a Foldkit runtime, with HMR support for development. */
|
|
187
187
|
export declare const run: (program: MakeRuntimeReturn) => void;
|
|
188
188
|
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/runtime/runtime.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/runtime/runtime.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime/runtime.js
CHANGED
|
@@ -385,9 +385,10 @@ const makeRuntime = ({ Model, flags: resolveFlags, init, update, view, subscript
|
|
|
385
385
|
yield* Effect.forkDetach(renderLoop);
|
|
386
386
|
addBfcacheRestoreListener();
|
|
387
387
|
if (subscriptions) {
|
|
388
|
-
yield* pipe(subscriptions, Record.toEntries, Effect.forEach(([_key, {
|
|
388
|
+
yield* pipe(subscriptions, Record.toEntries, Effect.forEach(([_key, { dependenciesSchema, modelToDependencies, keepAliveEquivalence, dependenciesToStream, },]) => Effect.gen(function* () {
|
|
389
389
|
const latestDependenciesRef = yield* Ref.make(modelToDependencies(initModel));
|
|
390
|
-
const equivalence =
|
|
390
|
+
const equivalence = keepAliveEquivalence ??
|
|
391
|
+
Schema.toEquivalence(dependenciesSchema);
|
|
391
392
|
const modelStream = Stream.concat(Stream.make(initModel), Stream.fromPubSub(modelPubSub));
|
|
392
393
|
yield* Effect.forkDetach(modelStream.pipe(
|
|
393
394
|
// NOTE: Ref.set runs upstream of Stream.changesWith on
|