foldkit 0.168.0 → 0.169.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/dist/dom/inert.d.ts +7 -3
- package/dist/dom/inert.d.ts.map +1 -1
- package/dist/dom/inert.js +19 -9
- package/dist/dom/streamFromKeyBindings.d.ts +5 -3
- package/dist/dom/streamFromKeyBindings.d.ts.map +1 -1
- package/dist/dom/streamFromKeyBindings.js +7 -4
- package/dist/experimental/server/fragment.d.ts +15 -0
- package/dist/experimental/server/fragment.d.ts.map +1 -0
- package/dist/experimental/server/fragment.js +14 -0
- package/dist/experimental/server/server.d.ts +3 -2
- package/dist/experimental/server/server.d.ts.map +1 -1
- package/dist/experimental/server/server.js +20 -23
- package/dist/experimental/server/template.d.ts.map +1 -1
- package/dist/experimental/server/template.js +20 -19
- package/dist/html/boundary.d.ts +17 -16
- package/dist/html/boundary.d.ts.map +1 -1
- package/dist/html/boundary.js +9 -9
- package/dist/html/childAttribute.d.ts +5 -5
- package/dist/html/index.d.ts.map +1 -1
- package/dist/html/index.js +24 -17
- package/dist/html/lazy.d.ts +130 -0
- package/dist/html/lazy.d.ts.map +1 -1
- package/dist/html/lazy.js +54 -6
- package/dist/html/runtimeSingleton.d.ts +2 -2
- package/dist/html/runtimeSingleton.d.ts.map +1 -1
- package/dist/html/runtimeSingleton.js +2 -2
- package/dist/html/submodel.d.ts.map +1 -1
- package/dist/html/submodel.js +20 -11
- package/dist/imeComposition.d.ts +3 -0
- package/dist/imeComposition.d.ts.map +1 -0
- package/dist/imeComposition.js +6 -0
- package/dist/mount/index.d.ts +6 -5
- package/dist/mount/index.d.ts.map +1 -1
- package/dist/route/transition.d.ts +50 -0
- package/dist/route/transition.d.ts.map +1 -1
- package/dist/route/transition.js +48 -0
- package/dist/runtime/messageQueue.d.ts +1 -0
- package/dist/runtime/messageQueue.d.ts.map +1 -1
- package/dist/runtime/messageQueue.js +2 -0
- package/dist/runtime/renderer.d.ts.map +1 -1
- package/dist/runtime/renderer.js +18 -3
- package/dist/snabbdom/hooks.d.ts +2 -0
- package/dist/snabbdom/hooks.d.ts.map +1 -1
- package/dist/snabbdom/init.d.ts.map +1 -1
- package/dist/snabbdom/init.js +42 -12
- package/dist/test/internal.d.ts.map +1 -1
- package/dist/test/internal.js +9 -2
- package/dist/test/lazy.d.ts +26 -0
- package/dist/test/lazy.d.ts.map +1 -0
- package/dist/test/lazy.js +103 -0
- package/dist/test/public.d.ts +1 -0
- package/dist/test/public.d.ts.map +1 -1
- package/dist/test/public.js +1 -0
- package/package.json +1 -1
package/dist/html/lazy.js
CHANGED
|
@@ -1,7 +1,22 @@
|
|
|
1
|
-
import { Predicate } from 'effect';
|
|
1
|
+
import { Array, Data, Predicate, Result } from 'effect';
|
|
2
2
|
import { dedupeMemoizedResult, memoizedVNodes } from '../vdom.js';
|
|
3
3
|
import { beginLazyTracking, endLazyTracking, registerBoundaryWrapTransactionRollback, restoreBoundaryWrapsForLazyHit, } from './boundary.js';
|
|
4
4
|
import { requireBoundary, requireDispatch, requireMountDispatch, requireMountRenderOwner, } from './runtimeSingleton.js';
|
|
5
|
+
/** @internal Constructors and matching for lazy cache miss reasons. */
|
|
6
|
+
export const LazyMissReason = Data.taggedEnum();
|
|
7
|
+
let resolutionObserver;
|
|
8
|
+
/** @internal Reports lazy cache hits and misses while `run` executes.
|
|
9
|
+
* Restores the previous observer when `run` returns or throws. */
|
|
10
|
+
export const observeLazyResolutions = (observer, run) => {
|
|
11
|
+
const previousObserver = resolutionObserver;
|
|
12
|
+
resolutionObserver = observer;
|
|
13
|
+
try {
|
|
14
|
+
return run();
|
|
15
|
+
}
|
|
16
|
+
finally {
|
|
17
|
+
resolutionObserver = previousObserver;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
5
20
|
const argsEqual = (previous, current) => {
|
|
6
21
|
if (previous.length !== current.length) {
|
|
7
22
|
return false;
|
|
@@ -13,7 +28,28 @@ const argsEqual = (previous, current) => {
|
|
|
13
28
|
}
|
|
14
29
|
return true;
|
|
15
30
|
};
|
|
16
|
-
const
|
|
31
|
+
const findMissReason = (previousEntry, fn, args, dispatch, mountDispatch, mountRenderOwner) => {
|
|
32
|
+
if (previousEntry === undefined) {
|
|
33
|
+
return LazyMissReason.NoCachedEntry();
|
|
34
|
+
}
|
|
35
|
+
if (previousEntry.fn !== fn) {
|
|
36
|
+
return LazyMissReason.FunctionChanged();
|
|
37
|
+
}
|
|
38
|
+
if (previousEntry.dispatch !== dispatch ||
|
|
39
|
+
previousEntry.mountDispatch !== mountDispatch ||
|
|
40
|
+
previousEntry.mountRenderOwner !== mountRenderOwner) {
|
|
41
|
+
return LazyMissReason.FrameChanged();
|
|
42
|
+
}
|
|
43
|
+
if (previousEntry.args.length !== args.length) {
|
|
44
|
+
return LazyMissReason.ArgumentCountChanged({
|
|
45
|
+
previousCount: previousEntry.args.length,
|
|
46
|
+
currentCount: args.length,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
const indices = Array.filterMap(Array.zip(previousEntry.args, args), ([previousArg, arg], index) => previousArg === arg ? Result.failVoid : Result.succeed(index));
|
|
50
|
+
return LazyMissReason.ArgumentsChanged({ indices });
|
|
51
|
+
};
|
|
52
|
+
const resolveOrCache = (slot, key, previousEntry, fn, args, onCache) => {
|
|
17
53
|
const dispatch = requireDispatch();
|
|
18
54
|
const mountDispatch = requireMountDispatch();
|
|
19
55
|
const mountRenderOwner = requireMountRenderOwner();
|
|
@@ -26,12 +62,22 @@ const resolveOrCache = (previousEntry, fn, args, onCache) => {
|
|
|
26
62
|
// future renderer that separates them from retaining stale handler or Mount
|
|
27
63
|
// lifecycle closures. Custom renderers can also use one dispatcher for both
|
|
28
64
|
// owners, so the owner remains a separate key member.
|
|
29
|
-
|
|
65
|
+
const isHit = Predicate.isNotUndefined(previousEntry) &&
|
|
30
66
|
previousEntry.fn === fn &&
|
|
31
67
|
previousEntry.dispatch === dispatch &&
|
|
32
68
|
previousEntry.mountDispatch === mountDispatch &&
|
|
33
69
|
previousEntry.mountRenderOwner === mountRenderOwner &&
|
|
34
|
-
argsEqual(previousEntry.args, args)
|
|
70
|
+
argsEqual(previousEntry.args, args);
|
|
71
|
+
if (resolutionObserver !== undefined) {
|
|
72
|
+
resolutionObserver({
|
|
73
|
+
slot,
|
|
74
|
+
key,
|
|
75
|
+
missReason: isHit
|
|
76
|
+
? undefined
|
|
77
|
+
: findMissReason(previousEntry, fn, args, dispatch, mountDispatch, mountRenderOwner),
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
if (isHit) {
|
|
35
81
|
restoreBoundaryWrapsForLazyHit(registry, previousEntry.trackedBoundaries);
|
|
36
82
|
return previousEntry.vnode;
|
|
37
83
|
}
|
|
@@ -85,7 +131,8 @@ const resolveOrCache = (previousEntry, fn, args, onCache) => {
|
|
|
85
131
|
* create one slot per position. */
|
|
86
132
|
export const createLazy = () => {
|
|
87
133
|
let cached;
|
|
88
|
-
|
|
134
|
+
const slot = {};
|
|
135
|
+
return (fn, args) => resolveOrCache(slot, undefined, cached, fn, args, entry => {
|
|
89
136
|
cached = entry;
|
|
90
137
|
});
|
|
91
138
|
};
|
|
@@ -114,7 +161,8 @@ export const createLazy = () => {
|
|
|
114
161
|
* positions, give each position its own key. */
|
|
115
162
|
export const createKeyedLazy = () => {
|
|
116
163
|
const cache = new Map();
|
|
117
|
-
|
|
164
|
+
const slot = {};
|
|
165
|
+
return (key, fn, args) => resolveOrCache(slot, key, cache.get(key), fn, args, entry => {
|
|
118
166
|
if (entry === undefined) {
|
|
119
167
|
cache.delete(key);
|
|
120
168
|
}
|
|
@@ -73,8 +73,8 @@ export declare const requireMountRenderOwner: () => MountRenderOwner;
|
|
|
73
73
|
export type UnmountResolver = (message: unknown) => () => void;
|
|
74
74
|
/** Returns an {@link UnmountResolver} bound to the current frame's boundary.
|
|
75
75
|
* `OnUnmount` calls the resolver at build time (boundary alive) to capture a
|
|
76
|
-
* dispatch thunk that
|
|
77
|
-
*
|
|
76
|
+
* dispatch thunk that does not depend on what the registry holds when the
|
|
77
|
+
* element is torn down. Throws when called outside of a runtime frame. */
|
|
78
78
|
export declare const requireUnmountResolver: () => UnmountResolver;
|
|
79
79
|
/** Returns the current frame's Submodel wrapping chain (innermost first), or an
|
|
80
80
|
* empty array at the root boundary. `OnMount` records this build-time snapshot
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtimeSingleton.d.ts","sourceRoot":"","sources":["../../src/html/runtimeSingleton.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAErC,OAAO,EACL,KAAK,UAAU,EACf,KAAK,gBAAgB,EAOtB,MAAM,eAAe,CAAA;AAEtB,iFAAiF;AACjF,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;AAErD,wDAAwD;AACxD,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,QAAQ,CAAA;AAEhD,0EAA0E;AAC1E,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAAC;IAC3C,KAAK,EAAE,gBAAgB,CAAA;IACvB,OAAO,EAAE,MAAM,YAAY,CAAA;CAC5B,CAAC,CAAA;AAEF,MAAM,MAAM,KAAK,GAAG,QAAQ,CAAC;IAC3B,aAAa,EAAE,YAAY,CAAA;IAC3B,kBAAkB,EAAE,YAAY,CAAA;IAChC,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACtC,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,UAAU,EAAE,UAAU,CAAA;CACvB,CAAC,CAAA;AAiBF;;;;;;;;;;gBAUgB;AAChB,eAAO,MAAM,UAAU,aACX,YAAY,kBACN,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,qBACpB,gBAAgB,qBAChB,gBAAgB,KACjC,IASF,CAAA;AAED;;;4BAG4B;AAC5B,eAAO,MAAM,YAAY,eAAgB,UAAU,KAAG,IAerD,CAAA;AAED;;;;;;;;;;;0DAW0D;AAC1D,eAAO,MAAM,SAAS,UAAW,KAAK,KAAG,IAExC,CAAA;AAED;;;;;;;6BAO6B;AAC7B,eAAO,MAAM,YAAY,QAAO,IAU/B,CAAA;AAED;;;sEAGsE;AACtE,eAAO,MAAM,eAAe,QAAO,YAOlC,CAAA;AAED;;6CAE6C;AAC7C,eAAO,MAAM,oBAAoB,QAAO,YAEvC,CAAA;AAED,gFAAgF;AAChF,eAAO,MAAM,uBAAuB,QAAO,gBAE1C,CAAA;AAED;;sCAEsC;AACtC,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,IAAI,CAAA;AAE9D;;;
|
|
1
|
+
{"version":3,"file":"runtimeSingleton.d.ts","sourceRoot":"","sources":["../../src/html/runtimeSingleton.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAErC,OAAO,EACL,KAAK,UAAU,EACf,KAAK,gBAAgB,EAOtB,MAAM,eAAe,CAAA;AAEtB,iFAAiF;AACjF,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;AAErD,wDAAwD;AACxD,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,QAAQ,CAAA;AAEhD,0EAA0E;AAC1E,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAAC;IAC3C,KAAK,EAAE,gBAAgB,CAAA;IACvB,OAAO,EAAE,MAAM,YAAY,CAAA;CAC5B,CAAC,CAAA;AAEF,MAAM,MAAM,KAAK,GAAG,QAAQ,CAAC;IAC3B,aAAa,EAAE,YAAY,CAAA;IAC3B,kBAAkB,EAAE,YAAY,CAAA;IAChC,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IACtC,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,UAAU,EAAE,UAAU,CAAA;CACvB,CAAC,CAAA;AAiBF;;;;;;;;;;gBAUgB;AAChB,eAAO,MAAM,UAAU,aACX,YAAY,kBACN,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,qBACpB,gBAAgB,qBAChB,gBAAgB,KACjC,IASF,CAAA;AAED;;;4BAG4B;AAC5B,eAAO,MAAM,YAAY,eAAgB,UAAU,KAAG,IAerD,CAAA;AAED;;;;;;;;;;;0DAW0D;AAC1D,eAAO,MAAM,SAAS,UAAW,KAAK,KAAG,IAExC,CAAA;AAED;;;;;;;6BAO6B;AAC7B,eAAO,MAAM,YAAY,QAAO,IAU/B,CAAA;AAED;;;sEAGsE;AACtE,eAAO,MAAM,eAAe,QAAO,YAOlC,CAAA;AAED;;6CAE6C;AAC7C,eAAO,MAAM,oBAAoB,QAAO,YAEvC,CAAA;AAED,gFAAgF;AAChF,eAAO,MAAM,uBAAuB,QAAO,gBAE1C,CAAA;AAED;;sCAEsC;AACtC,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,IAAI,CAAA;AAE9D;;;2EAG2E;AAC3E,eAAO,MAAM,sBAAsB,QAAO,eASzC,CAAA;AAED;;;;;gDAKgD;AAChD,eAAO,MAAM,sBAAsB,QAAO,aAAa,CACrD,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAO9B,CAAA;AAED;;;;+BAI+B;AAC/B,eAAO,MAAM,4BAA4B,QAAO,qBAW/C,CAAA;AAED;6EAC6E;AAC7E,eAAO,MAAM,qBAAqB,QAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAE7D,CAAA;AAED;;mEAEmE;AACnE,eAAO,MAAM,eAAe,QAAO,QAAQ,CAAC;IAC1C,QAAQ,EAAE,gBAAgB,CAAA;IAC1B,UAAU,EAAE,UAAU,CAAA;CACvB,CAQA,CAAA;AAED;;;;;8CAK8C;AAC9C,eAAO,MAAM,eAAe,QAAO,KAQlC,CAAA"}
|
|
@@ -101,8 +101,8 @@ export const requireMountRenderOwner = () => {
|
|
|
101
101
|
};
|
|
102
102
|
/** Returns an {@link UnmountResolver} bound to the current frame's boundary.
|
|
103
103
|
* `OnUnmount` calls the resolver at build time (boundary alive) to capture a
|
|
104
|
-
* dispatch thunk that
|
|
105
|
-
*
|
|
104
|
+
* dispatch thunk that does not depend on what the registry holds when the
|
|
105
|
+
* element is torn down. Throws when called outside of a runtime frame. */
|
|
106
106
|
export const requireUnmountResolver = () => {
|
|
107
107
|
const frame = requireFrame();
|
|
108
108
|
return message => resolveBoundaryDispatchThunk(frame.boundaryRegistry, frame.outerDispatch, frame.boundaryId, message);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"submodel.d.ts","sourceRoot":"","sources":["../../src/html/submodel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAkB,MAAM,YAAY,CAAA;AAYvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAa7C,QAAA,MAAM,sBAAsB,sBAAsB,CAAA;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCA4BgC;AAChC,MAAM,MAAM,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI,IAAI,CAAC;IAC7D,UAAU;CACX,SAAS,CAAC,IAAI,CAAC,GACZ,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,KAAK,GAAG,IAAI,GACvD,CACE,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,UAAU,EACtB,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,KACpB,KAAK,GAAG,IAAI,CAAC,GAAG;IACvB,QAAQ,CAAC,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAA;CAC3C,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;mDAsBmD;AACnD,eAAO,MAAM,UAAU,GAAI,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,UAAU,GAAG,IAAI,MAC9D,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,GAC3B,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,KAAK,GAAG,IAAI,GACvD,CACE,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,UAAU,EACtB,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,KACpB,KAAK,GAAG,IAAI,KACpB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,CAOM,CAAA;AAEhD;;;;kBAIkB;AAClB,MAAM,MAAM,eAAe,GAAG,CAAC,CAC7B,GAAG,IAAI,EAAE,aAAa,CAAC,GAAG,CAAC,KACxB,KAAK,GAAG,IAAI,CAAC,GAAG;IACnB,QAAQ,CAAC,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAA;CAC3C,CAAA;AAED,KAAK,WAAW,CAAC,IAAI,SAAS,eAAe,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AAEpE,KAAK,YAAY,CAAC,IAAI,SAAS,eAAe,IAC5C,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,UAAU,EAAE,OAAO,CAAC,GACzD,UAAU,GACV,IAAI,CAAA;AAEV,KAAK,aAAa,CAAC,IAAI,SAAS,eAAe,IAAI,IAAI,SAAS;IAC9D,QAAQ,CAAC,CAAC,sBAAsB,CAAC,EAAE,MAAM,OAAO,CAAA;CACjD,GACG,OAAO,GACP,KAAK,CAAA;AAET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBA2CgB;AAChB,MAAM,MAAM,cAAc,CACxB,IAAI,SAAS,eAAe,EAC5B,aAAa,IACX,QAAQ,CAAC;IACX,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,CAAA;IACxB,IAAI,EAAE,IAAI,CAAA;IACV,eAAe,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,aAAa,CAAA;CACjE,CAAC,GAKA,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAChC,QAAQ,CAAC;IAAE,UAAU,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC,GAChC,QAAQ,CAAC;IAAE,UAAU,EAAE,YAAY,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"submodel.d.ts","sourceRoot":"","sources":["../../src/html/submodel.ts"],"names":[],"mappings":"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"}
|
package/dist/html/submodel.js
CHANGED
|
@@ -119,36 +119,45 @@ const wrapViewInputsForOuterBoundary = (viewInputs, outerFrame) => {
|
|
|
119
119
|
/* eslint-disable-next-line @typescript-eslint/consistent-type-assertions */
|
|
120
120
|
return wrapped;
|
|
121
121
|
};
|
|
122
|
-
/** Returns a copy of the vnode with a snabbdom `
|
|
123
|
-
* deregisters this Submodel's boundary when
|
|
124
|
-
* Composes with any existing
|
|
122
|
+
/** Returns a copy of the vnode with a snabbdom `postdestroy` hook that
|
|
123
|
+
* deregisters this Submodel's boundary when snabbdom destroys the vnode.
|
|
124
|
+
* Composes with any existing `postdestroy` hook, including one from a
|
|
125
|
+
* Submodel nested at the same vnode.
|
|
126
|
+
*
|
|
127
|
+
* snabbdom runs a vnode's `destroy` hook before it detaches that vnode's
|
|
128
|
+
* listeners and before it visits the descendants. A `destroy` hook in the
|
|
129
|
+
* subtree can make the browser fire an event on an element that still
|
|
130
|
+
* listens. For example, Chromium fires `blur` when a Mount release removes a
|
|
131
|
+
* focused element. `postdestroy` runs after every `destroy` hook
|
|
132
|
+
* in the subtree, so the wrap is still registered when that listener
|
|
133
|
+
* dispatches.
|
|
125
134
|
*
|
|
126
135
|
* Copies the vnode (rather than mutating in place) so module-level
|
|
127
136
|
* cached vnodes a user might return from view are not contaminated with
|
|
128
|
-
* a
|
|
137
|
+
* a hook bound to this boundary id.
|
|
129
138
|
*
|
|
130
139
|
* This is what lets `h.submodel` survive cache hits from
|
|
131
140
|
* `createKeyedLazy`. When a cached vnode is reused across renders,
|
|
132
|
-
* snabbdom doesn't fire
|
|
141
|
+
* snabbdom doesn't fire `postdestroy`, so the wrap stays registered and
|
|
133
142
|
* dispatches continue to route correctly. When the vnode is actually
|
|
134
143
|
* removed (entry deleted from a list, conditional render flips),
|
|
135
|
-
*
|
|
144
|
+
* `postdestroy` fires and the wrap is evicted: bounded memory, no leaks.
|
|
136
145
|
*
|
|
137
146
|
* See `submodel.test.ts` for the cache-hit-survival and
|
|
138
147
|
* destroy-deregisters-wrap assertions. */
|
|
139
148
|
const withBoundaryCleanup = (vnode, registry, boundaryId, descriptor, mountOuterDispatch) => {
|
|
140
149
|
const data = vnode.data ?? {};
|
|
141
150
|
const hook = data.hook ?? {};
|
|
142
|
-
const
|
|
143
|
-
const
|
|
151
|
+
const previousPostDestroy = hook.postdestroy;
|
|
152
|
+
const compositePostDestroy = (removed) => {
|
|
144
153
|
deregisterBoundaryWrap(registry, boundaryId, descriptor, mountOuterDispatch);
|
|
145
|
-
if (
|
|
146
|
-
|
|
154
|
+
if (previousPostDestroy !== undefined) {
|
|
155
|
+
previousPostDestroy(removed);
|
|
147
156
|
}
|
|
148
157
|
};
|
|
149
158
|
const wrapped = {
|
|
150
159
|
...vnode,
|
|
151
|
-
data: { ...data, hook: { ...hook,
|
|
160
|
+
data: { ...data, hook: { ...hook, postdestroy: compositePostDestroy } },
|
|
152
161
|
};
|
|
153
162
|
// NOTE: a memoized child view returns the same vnode by reference each render;
|
|
154
163
|
// this wrapper is fresh but shares its cached children. Propagate membership
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"imeComposition.d.ts","sourceRoot":"","sources":["../src/imeComposition.ts"],"names":[],"mappings":"AAKA,gEAAgE;AAChE,eAAO,MAAM,uBAAuB,UAAW,aAAa,KAAG,OACE,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// NOTE: some browsers report the keydown that confirms an IME conversion
|
|
2
|
+
// with keyCode 229 and isComposing false. That keydown belongs to the
|
|
3
|
+
// input method, the same as one with isComposing set.
|
|
4
|
+
const IME_COMPOSITION_KEY_CODE = 229;
|
|
5
|
+
/** Whether a keydown belongs to an input method composition. */
|
|
6
|
+
export const isImeCompositionKeydown = (event) => event.isComposing || event.keyCode === IME_COMPOSITION_KEY_CODE;
|
package/dist/mount/index.d.ts
CHANGED
|
@@ -140,9 +140,10 @@ export declare const liveViewStateChanges: Stream.Stream<ViewState>;
|
|
|
140
140
|
* effect stays observable; `update` simply has nothing meaningful to
|
|
141
141
|
* do with the acknowledgment.
|
|
142
142
|
*
|
|
143
|
-
*
|
|
144
|
-
*
|
|
145
|
-
*
|
|
143
|
+
* The runtime starts cleanup from snabbdom's `destroy` hook by forking
|
|
144
|
+
* `Fiber.interrupt` without waiting. A release with no asynchronous step
|
|
145
|
+
* normally finishes inside `destroy`, before snabbdom removes the element's
|
|
146
|
+
* event listeners; one with an asynchronous step finishes later. For idempotent
|
|
146
147
|
* DOM operations (`element.remove()`, observer `disconnect()`,
|
|
147
148
|
* `removeEventListener`) this is fine; if your cleanup has ordering
|
|
148
149
|
* requirements relative to other DOM removals, prefer doing the imperative
|
|
@@ -286,8 +287,8 @@ export declare function define<const Name extends string, const Messages extends
|
|
|
286
287
|
* effect stays observable; `update` simply has nothing meaningful to
|
|
287
288
|
* do with the acknowledgment. Re-check the cause.
|
|
288
289
|
*
|
|
289
|
-
* Cleanup timing relative to snabbdom's `destroy` hook
|
|
290
|
-
* `Mount.define
|
|
290
|
+
* Cleanup has the same timing relative to snabbdom's `destroy` hook as
|
|
291
|
+
* `Mount.define`.
|
|
291
292
|
*
|
|
292
293
|
* For a Mount that produces exactly one Message at acquire and then holds
|
|
293
294
|
* lifecycle-scoped resources, use `Mount.define` with `Effect<Message>`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mount/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mount/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -88,4 +88,54 @@ export declare const stayed: <Route extends Readonly<{
|
|
|
88
88
|
export declare const isEntering: <Route extends Readonly<{
|
|
89
89
|
_tag: string;
|
|
90
90
|
}>, Tag extends Route['_tag']>(transition: Transition<Route>, routeTag: Tag) => boolean;
|
|
91
|
+
/** Whether the transition left the selected route. A cold load never exits.
|
|
92
|
+
* Use {@link exited} when its payload is needed. */
|
|
93
|
+
export declare const isExiting: <Route extends Readonly<{
|
|
94
|
+
_tag: string;
|
|
95
|
+
}>, Tag extends Route['_tag']>(transition: Transition<Route>, routeTag: Tag) => boolean;
|
|
96
|
+
/** Whether both routes have the selected tag. A cold load never stays. Use
|
|
97
|
+
* {@link stayed} for both payloads. */
|
|
98
|
+
export declare const isStaying: <Route extends Readonly<{
|
|
99
|
+
_tag: string;
|
|
100
|
+
}>, Tag extends Route['_tag']>(transition: Transition<Route>, routeTag: Tag) => boolean;
|
|
101
|
+
/** Handlers for {@link match}, with Route narrowed to the selected tag. */
|
|
102
|
+
export type MatchHandlers<Route, Entered, Exited, Stayed, Unrelated> = Readonly<{
|
|
103
|
+
Entered: (nextRoute: Route) => Entered;
|
|
104
|
+
Exited: (previousRoute: Route) => Exited;
|
|
105
|
+
Stayed: (routes: Readonly<{
|
|
106
|
+
previousRoute: Route;
|
|
107
|
+
nextRoute: Route;
|
|
108
|
+
}>) => Stayed;
|
|
109
|
+
Unrelated: () => Unrelated;
|
|
110
|
+
}>;
|
|
111
|
+
/** Runs exactly one handler for the selected route tag. A cold load is
|
|
112
|
+
* `Entered` or `Unrelated`. When both routes have the selected tag, the case
|
|
113
|
+
* is `Stayed`, even when their payloads differ. Handler routes are narrowed
|
|
114
|
+
* to the tag. The direct form infers a union of handler returns.
|
|
115
|
+
* `match<Output>()(...)` constrains every handler to `Output` while inferring
|
|
116
|
+
* the Route and tag. */
|
|
117
|
+
export declare function match<Output>(): <Route extends Readonly<{
|
|
118
|
+
_tag: string;
|
|
119
|
+
}>, Tag extends Route['_tag']>(transition: Transition<Route>, routeTag: Tag, handlers: MatchHandlers<Extract<Route, {
|
|
120
|
+
_tag: Tag;
|
|
121
|
+
}>, Output, Output, Output, Output>) => Output;
|
|
122
|
+
export declare function match<Route extends Readonly<{
|
|
123
|
+
_tag: string;
|
|
124
|
+
}>, Tag extends Route['_tag'], Entered, Exited, Stayed, Unrelated>(transition: Transition<Route>, routeTag: Tag, handlers: MatchHandlers<Extract<Route, {
|
|
125
|
+
_tag: Tag;
|
|
126
|
+
}>, Entered, Exited, Stayed, Unrelated>): Entered | Exited | Stayed | Unrelated;
|
|
127
|
+
/** Runs the matching handler, or the fallback when that handler is omitted.
|
|
128
|
+
* A handler that returns `undefined` has handled the case. The direct form
|
|
129
|
+
* infers a union of callback returns. `matchOrElse<Output>()(...)` constrains
|
|
130
|
+
* every callback to `Output` while inferring the Route and tag. */
|
|
131
|
+
export declare function matchOrElse<Output>(): <Route extends Readonly<{
|
|
132
|
+
_tag: string;
|
|
133
|
+
}>, Tag extends Route['_tag']>(transition: Transition<Route>, routeTag: Tag, handlers: Partial<MatchHandlers<Extract<Route, {
|
|
134
|
+
_tag: Tag;
|
|
135
|
+
}>, Output, Output, Output, Output>>, fallback: () => Output) => Output;
|
|
136
|
+
export declare function matchOrElse<Route extends Readonly<{
|
|
137
|
+
_tag: string;
|
|
138
|
+
}>, Tag extends Route['_tag'], Entered = never, Exited = never, Stayed = never, Unrelated = never, Fallback = never>(transition: Transition<Route>, routeTag: Tag, handlers: Partial<MatchHandlers<Extract<Route, {
|
|
139
|
+
_tag: Tag;
|
|
140
|
+
}>, Entered, Exited, Stayed, Unrelated>>, fallback: () => Fallback): Entered | Exited | Stayed | Unrelated | Fallback;
|
|
91
141
|
//# sourceMappingURL=transition.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transition.d.ts","sourceRoot":"","sources":["../../src/route/transition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B;;;;;+CAK+C;AAC/C,MAAM,MAAM,UAAU,CAAC,KAAK,IAAI,QAAQ,CAAC;IACvC,kBAAkB,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACxC,SAAS,EAAE,KAAK,CAAA;CACjB,CAAC,CAAA;AAEF;;yDAEyD;AACzD,eAAO,MAAM,IAAI,GAAI,KAAK,iBACT,KAAK,aACT,KAAK,KACf,UAAU,CAAC,KAAK,CAGjB,CAAA;AAEF;;yCAEyC;AACzC,eAAO,MAAM,QAAQ,GAAI,KAAK,aAAa,KAAK,KAAG,UAAU,CAAC,KAAK,CAGjE,CAAA;AAEF;;;;;;8DAM8D;AAC9D,eAAO,MAAM,UAAU,GAAI,KAAK,SAAS,QAAQ,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,sCAGhE,UAAU,CAAC,KAAK,CAAC,KAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAKtC,CAAA;AASJ;;;;iDAIiD;AACjD,eAAO,MAAM,OAAO,GAClB,KAAK,SAAS,QAAQ,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EACxC,GAAG,SAAS,KAAK,CAAC,MAAM,CAAC,cAEb,UAAU,CAAC,KAAK,CAAC,YACnB,GAAG,KACZ,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE;IAAE,IAAI,EAAE,GAAG,CAAA;CAAE,CAAC,CACW,CAAA;AAEzD;;;;;;;;8CAQ8C;AAC9C,eAAO,MAAM,SAAS,GAAI,KAAK,SAAS,QAAQ,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,sCAG/D,UAAU,CAAC,KAAK,CAAC,KAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAIvC,CAAA;AAEH;;0EAE0E;AAC1E,eAAO,MAAM,MAAM,GACjB,KAAK,SAAS,QAAQ,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EACxC,GAAG,SAAS,KAAK,CAAC,MAAM,CAAC,cAEb,UAAU,CAAC,KAAK,CAAC,YACnB,GAAG,KACZ,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE;IAAE,IAAI,EAAE,GAAG,CAAA;CAAE,CAAC,CACU,CAAA;AAExD;;;;;;;;;yEASyE;AACzE,eAAO,MAAM,MAAM,GACjB,KAAK,SAAS,QAAQ,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EACxC,GAAG,SAAS,KAAK,CAAC,MAAM,CAAC,cAEb,UAAU,CAAC,KAAK,CAAC,YACnB,GAAG,KACZ,MAAM,CAAC,MAAM,CACd,QAAQ,CAAC;IACP,aAAa,EAAE,OAAO,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,GAAG,CAAA;KAAE,CAAC,CAAA;IAC5C,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,GAAG,CAAA;KAAE,CAAC,CAAA;CACzC,CAAC,CASH,CAAA;AAED;;;;;;;YAOY;AACZ,eAAO,MAAM,UAAU,GACrB,KAAK,SAAS,QAAQ,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EACxC,GAAG,SAAS,KAAK,CAAC,MAAM,CAAC,cAEb,UAAU,CAAC,KAAK,CAAC,YACnB,GAAG,KACZ,OAAuD,CAAA"}
|
|
1
|
+
{"version":3,"file":"transition.d.ts","sourceRoot":"","sources":["../../src/route/transition.ts"],"names":[],"mappings":"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"}
|
package/dist/route/transition.js
CHANGED
|
@@ -71,3 +71,51 @@ export const stayed = (transition, routeTag) => {
|
|
|
71
71
|
* transition argument, so the tag is checked against the union's
|
|
72
72
|
* tags. */
|
|
73
73
|
export const isEntering = (transition, routeTag) => Option.isSome(entered(transition, routeTag));
|
|
74
|
+
/** Whether the transition left the selected route. A cold load never exits.
|
|
75
|
+
* Use {@link exited} when its payload is needed. */
|
|
76
|
+
export const isExiting = (transition, routeTag) => Option.isSome(exited(transition, routeTag));
|
|
77
|
+
/** Whether both routes have the selected tag. A cold load never stays. Use
|
|
78
|
+
* {@link stayed} for both payloads. */
|
|
79
|
+
export const isStaying = (transition, routeTag) => Option.isSome(stayed(transition, routeTag));
|
|
80
|
+
const matchTransition = (transition, routeTag, handlers) => {
|
|
81
|
+
const { maybePreviousRoute, nextRoute } = transition;
|
|
82
|
+
const isTagged = hasTag(routeTag);
|
|
83
|
+
if (Option.isSome(maybePreviousRoute) && isTagged(maybePreviousRoute.value)) {
|
|
84
|
+
const previousRoute = maybePreviousRoute.value;
|
|
85
|
+
if (isTagged(nextRoute)) {
|
|
86
|
+
return handlers.Stayed({ previousRoute, nextRoute });
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
return handlers.Exited(previousRoute);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
if (isTagged(nextRoute)) {
|
|
93
|
+
return handlers.Entered(nextRoute);
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
return handlers.Unrelated();
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
export function match(transition, routeTag, handlers) {
|
|
100
|
+
if (transition === undefined ||
|
|
101
|
+
routeTag === undefined ||
|
|
102
|
+
handlers === undefined) {
|
|
103
|
+
return match;
|
|
104
|
+
}
|
|
105
|
+
return matchTransition(transition, routeTag, handlers);
|
|
106
|
+
}
|
|
107
|
+
const matchOrElseTransition = (transition, routeTag, handlers, fallback) => matchTransition(transition, routeTag, {
|
|
108
|
+
Entered: handlers.Entered ?? fallback,
|
|
109
|
+
Exited: handlers.Exited ?? fallback,
|
|
110
|
+
Stayed: handlers.Stayed ?? fallback,
|
|
111
|
+
Unrelated: handlers.Unrelated ?? fallback,
|
|
112
|
+
});
|
|
113
|
+
export function matchOrElse(transition, routeTag, handlers, fallback) {
|
|
114
|
+
if (transition === undefined ||
|
|
115
|
+
routeTag === undefined ||
|
|
116
|
+
handlers === undefined ||
|
|
117
|
+
fallback === undefined) {
|
|
118
|
+
return matchOrElse;
|
|
119
|
+
}
|
|
120
|
+
return matchOrElseTransition(transition, routeTag, handlers, fallback);
|
|
121
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messageQueue.d.ts","sourceRoot":"","sources":["../../src/runtime/messageQueue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,KAAK,EAAE,MAAM,QAAQ,CAAA;AAE1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAIvD,gFAAgF;AAChF,MAAM,MAAM,YAAY,CAAC,OAAO,IAAI,QAAQ,CAAC;IAC3C,cAAc,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;IAC1C,oBAAoB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC/D,oBAAoB,EAAE,MAAM,IAAI,CAAA;IAChC,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,YAAY,EAAE,MAAM,IAAI,CAAA;CACzB,CAAC,CAAA;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gBAAgB,GAAI,OAAO,0CAIrC,QAAQ,CAAC;IACV,MAAM,EAAE,aAAa,CAAA;IACrB,cAAc,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;IAC1C,SAAS,EAAE,CACT,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EACzB,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KACjC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;CACzB,CAAC,KAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"messageQueue.d.ts","sourceRoot":"","sources":["../../src/runtime/messageQueue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,KAAK,EAAE,MAAM,QAAQ,CAAA;AAE1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAIvD,gFAAgF;AAChF,MAAM,MAAM,YAAY,CAAC,OAAO,IAAI,QAAQ,CAAC;IAC3C,cAAc,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;IAC1C,oBAAoB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC/D,oBAAoB,EAAE,MAAM,IAAI,CAAA;IAChC,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,oBAAoB,EAAE,MAAM,OAAO,CAAA;IACnC,YAAY,EAAE,MAAM,IAAI,CAAA;CACzB,CAAC,CAAA;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gBAAgB,GAAI,OAAO,0CAIrC,QAAQ,CAAC;IACV,MAAM,EAAE,aAAa,CAAA;IACrB,cAAc,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;IAC1C,SAAS,EAAE,CACT,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EACzB,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KACjC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;CACzB,CAAC,KAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CA6IxD,CAAA"}
|
|
@@ -119,6 +119,7 @@ export const makeMessageQueue = ({ status, processMessage, crashWith, }) => Effe
|
|
|
119
119
|
const resetDrainBudget = () => {
|
|
120
120
|
syncWorkMsSinceYield = 0;
|
|
121
121
|
};
|
|
122
|
+
const isAnyMessageDeferred = () => isDrainDeferredToNextTask && pendingMessages.length > 0;
|
|
122
123
|
const completeBoot = () => {
|
|
123
124
|
isBootComplete = true;
|
|
124
125
|
drainPendingMessages();
|
|
@@ -128,6 +129,7 @@ export const makeMessageQueue = ({ status, processMessage, crashWith, }) => Effe
|
|
|
128
129
|
enqueueMessageEffect,
|
|
129
130
|
drainPendingMessages,
|
|
130
131
|
resetDrainBudget,
|
|
132
|
+
isAnyMessageDeferred,
|
|
131
133
|
completeBoot,
|
|
132
134
|
};
|
|
133
135
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/runtime/renderer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/runtime/renderer.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime/renderer.js
CHANGED
|
@@ -22,7 +22,7 @@ import { __decideViewTransition, __silenceViewTransitionRejections, } from './vi
|
|
|
22
22
|
* those fibers are interrupted.
|
|
23
23
|
*/
|
|
24
24
|
export const makeRenderer = ({ status, container, view, htmlBuilder, manageDocument, crash, buildId, initModel, maybeHydrationRoot, maybeSlowView, maybeSlowPatch, duplicateIdScanner, maybeResolvedViewTransition, commitNotifier, runtimeContext, readLiveModel, messageQueue, devToolsIntegration, }) => Effect.gen(function* () {
|
|
25
|
-
const { enqueueMessage, enqueueMessageEffect, drainPendingMessages, resetDrainBudget, } = messageQueue;
|
|
25
|
+
const { enqueueMessage, enqueueMessageEffect, drainPendingMessages, resetDrainBudget, isAnyMessageDeferred, } = messageQueue;
|
|
26
26
|
const { mountTracker, mountRuntime, drainMountEvents, readViewState, setViewState, isPausedNow, resumeDevTools, attachRenderedMounts, } = devToolsIntegration;
|
|
27
27
|
const settlePendingCommit = () => {
|
|
28
28
|
if (commitNotifier.service.isCommitPending()) {
|
|
@@ -169,8 +169,8 @@ export const makeRenderer = ({ status, container, view, htmlBuilder, manageDocum
|
|
|
169
169
|
// h.submodel persist between renders. The render function calls
|
|
170
170
|
// `beginHtmlRender` at the start of each pass; wraps for
|
|
171
171
|
// unmounted Submodels (e.g. an entry removed from a list) are
|
|
172
|
-
// dropped from the registry via snabbdom
|
|
173
|
-
// by `h.submodel` to each child vnode.
|
|
172
|
+
// dropped from the registry via snabbdom `postdestroy` hooks
|
|
173
|
+
// attached by `h.submodel` to each child vnode.
|
|
174
174
|
const boundaryRegistry = createHtmlBoundaryRegistry();
|
|
175
175
|
// NOTE: callers set `isRenderingFrame` before calling this and clear
|
|
176
176
|
// it after. Without it, a Message dispatched while the patch is still
|
|
@@ -257,6 +257,9 @@ export const makeRenderer = ({ status, container, view, htmlBuilder, manageDocum
|
|
|
257
257
|
drainPendingMessages();
|
|
258
258
|
})), Effect.provideService(Dispatch, dispatchService), Effect.provideService(MountTracker, mountTracker), Effect.provideService(MountRuntime, mountRuntime));
|
|
259
259
|
const liveRenderContext = Context.add(Context.add(Context.add(runtimeContext, Dispatch, dispatch), MountTracker, mountTracker), MountRuntime, mountRuntime);
|
|
260
|
+
// NOTE: rendering before a deferred drain resumes would restore stale
|
|
261
|
+
// controlled input values. Disposed or crashed runtimes use the frame guards.
|
|
262
|
+
const isLiveModelBehindQueue = () => isAnyMessageDeferred() && !status.isRuntimeDisposed && !status.isCrashed;
|
|
260
263
|
// NOTE: the render, Mount drain, DevTools attribution, and
|
|
261
264
|
// patch-time-buffer flush. Shared by the plain path (called directly)
|
|
262
265
|
// and the View Transition path (called from the transition's update
|
|
@@ -349,6 +352,13 @@ export const makeRenderer = ({ status, container, view, htmlBuilder, manageDocum
|
|
|
349
352
|
return;
|
|
350
353
|
}
|
|
351
354
|
update.didRun = true;
|
|
355
|
+
// NOTE: a drain may have been deferred since the preceding frame
|
|
356
|
+
// started the transition. Leave the DOM unchanged until it catches up.
|
|
357
|
+
if (isLiveModelBehindQueue()) {
|
|
358
|
+
skipPendingViewTransition();
|
|
359
|
+
scheduleRenderFrame();
|
|
360
|
+
return;
|
|
361
|
+
}
|
|
352
362
|
// NOTE: the view state closes the resume window after the
|
|
353
363
|
// store is live but before its plain frame has restored the live
|
|
354
364
|
// DOM. A transition invalidated by jumpTo stays invalid forever,
|
|
@@ -379,6 +389,11 @@ export const makeRenderer = ({ status, container, view, htmlBuilder, manageDocum
|
|
|
379
389
|
// would strand any `Render.afterCommit` registered against it, and
|
|
380
390
|
// the Dom helpers that gate on it would never run their DOM work.
|
|
381
391
|
const renderFramePlain = () => {
|
|
392
|
+
// NOTE: retain the scheduled frame's pending commit while the drain waits.
|
|
393
|
+
if (isLiveModelBehindQueue()) {
|
|
394
|
+
requestAnimationFrame(renderFramePlain);
|
|
395
|
+
return;
|
|
396
|
+
}
|
|
382
397
|
isRenderFrameScheduled = false;
|
|
383
398
|
const isRestoringLiveView = isLiveViewRestorePending;
|
|
384
399
|
isLiveViewRestorePending = false;
|
package/dist/snabbdom/hooks.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ export type PrePatchHook = (oldVNode: VNode, vNode: VNode) => any;
|
|
|
7
7
|
export type UpdateHook = (oldVNode: VNode, vNode: VNode) => any;
|
|
8
8
|
export type PostPatchHook = (oldVNode: VNode, vNode: VNode) => any;
|
|
9
9
|
export type DestroyHook = (vNode: VNode) => any;
|
|
10
|
+
export type PostDestroyHook = (vNode: VNode) => any;
|
|
10
11
|
export type RemoveHook = (vNode: VNode, removeCallback: () => void) => any;
|
|
11
12
|
export type PostHook = () => any;
|
|
12
13
|
export interface Hooks {
|
|
@@ -18,6 +19,7 @@ export interface Hooks {
|
|
|
18
19
|
update?: UpdateHook;
|
|
19
20
|
postpatch?: PostPatchHook;
|
|
20
21
|
destroy?: DestroyHook;
|
|
22
|
+
postdestroy?: PostDestroyHook;
|
|
21
23
|
remove?: RemoveHook;
|
|
22
24
|
post?: PostHook;
|
|
23
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/snabbdom/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAEvC,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,CAAA;AAC/B,MAAM,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,GAAG,CAAA;AAC5C,MAAM,MAAM,UAAU,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,KAAK,GAAG,CAAA;AACjE,MAAM,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,GAAG,CAAA;AAC9C,MAAM,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,KAAK,GAAG,CAAA;AACjE,MAAM,MAAM,UAAU,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,KAAK,GAAG,CAAA;AAC/D,MAAM,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,KAAK,GAAG,CAAA;AAClE,MAAM,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,GAAG,CAAA;AAC/C,MAAM,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,IAAI,KAAK,GAAG,CAAA;AAC1E,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAA;AAEhC,MAAM,WAAW,KAAK;IACpB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,SAAS,CAAC,EAAE,aAAa,CAAA;IACzB,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,IAAI,CAAC,EAAE,QAAQ,CAAA;CAChB"}
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/snabbdom/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAEvC,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,CAAA;AAC/B,MAAM,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,GAAG,CAAA;AAC5C,MAAM,MAAM,UAAU,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,KAAK,GAAG,CAAA;AACjE,MAAM,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,GAAG,CAAA;AAC9C,MAAM,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,KAAK,GAAG,CAAA;AACjE,MAAM,MAAM,UAAU,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,KAAK,GAAG,CAAA;AAC/D,MAAM,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,KAAK,GAAG,CAAA;AAClE,MAAM,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,GAAG,CAAA;AAC/C,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,GAAG,CAAA;AACnD,MAAM,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,IAAI,KAAK,GAAG,CAAA;AAC1E,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAA;AAEhC,MAAM,WAAW,KAAK;IACpB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,SAAS,CAAC,EAAE,aAAa,CAAA;IACzB,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB,WAAW,CAAC,EAAE,eAAe,CAAA;IAC7B,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,IAAI,CAAC,EAAE,QAAQ,CAAA;CAChB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/snabbdom/init.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAc,MAAM,iBAAiB,CAAA;AAEzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAY,KAAK,KAAK,EAA2B,MAAM,YAAY,CAAA;AAwF1E,MAAM,MAAM,OAAO,GAAG;IACpB,YAAY,CAAC,EAAE;QACb,SAAS,CAAC,EAAE,OAAO,CAAA;KACpB,CAAA;CACF,CAAA;AAID;;qCAEqC;AACrC,eAAO,MAAM,6BAA6B,aAC9B,OAAO,GAAG,SAAS,KAC5B,IAEF,CAAA;AASD,wBAAgB,IAAI,CAClB,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAC/B,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/snabbdom/init.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAc,MAAM,iBAAiB,CAAA;AAEzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAY,KAAK,KAAK,EAA2B,MAAM,YAAY,CAAA;AAwF1E,MAAM,MAAM,OAAO,GAAG;IACpB,YAAY,CAAC,EAAE;QACb,SAAS,CAAC,EAAE,OAAO,CAAA;KACpB,CAAA;CACF,CAAA;AAID;;qCAEqC;AACrC,eAAO,MAAM,6BAA6B,aAC9B,OAAO,GAAG,SAAS,KAC5B,IAEF,CAAA;AASD,wBAAgB,IAAI,CAClB,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAC/B,MAAM,CAAC,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,OAAO,cAurBL,KAAK,GAAG,OAAO,GAAG,gBAAgB,SACrC,KAAK,kBACI,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,KACrC,KAAK,CAsDT"}
|