@vidact/runtime 0.2.0-beta.6 → 0.2.0-beta.8
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/CHANGELOG.md +13 -0
- package/dist/actions.js +1 -1
- package/dist/compiled/core.d.ts +17 -5
- package/dist/compiled/core.d.ts.map +1 -1
- package/dist/compiled/core.js +545 -155
- package/dist/compiled/core.js.map +1 -1
- package/dist/direct-dom.d.ts.map +1 -1
- package/dist/direct-dom.js +102 -11
- package/dist/direct-dom.js.map +1 -1
- package/dist/dom/events.d.ts +4 -1
- package/dist/dom/events.d.ts.map +1 -1
- package/dist/dom/events.js +66 -1
- package/dist/dom/events.js.map +1 -1
- package/dist/dom/namespace.js +1 -1
- package/dist/hydration-bridge.d.ts +4 -4
- package/dist/hydration-bridge.d.ts.map +1 -1
- package/dist/hydration-bridge.js.map +1 -1
- package/dist/hydration.d.ts +2 -2
- package/dist/hydration.d.ts.map +1 -1
- package/dist/hydration.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +3 -3
- package/dist/keyed-list.d.ts +6 -2
- package/dist/keyed-list.d.ts.map +1 -1
- package/dist/keyed-list.js +122 -11
- package/dist/keyed-list.js.map +1 -1
- package/dist/metadata.js +1 -1
- package/dist/renderable.d.ts +2 -1
- package/dist/renderable.d.ts.map +1 -1
- package/dist/renderable.js +12 -1
- package/dist/renderable.js.map +1 -1
- package/dist/source-mask.d.ts +2 -1
- package/dist/source-mask.d.ts.map +1 -1
- package/dist/source-mask.js +16 -1
- package/dist/source-mask.js.map +1 -1
- package/dist/spread.js +2 -2
- package/dist/state-slot.d.ts +12 -1
- package/dist/state-slot.d.ts.map +1 -1
- package/dist/state-slot.js +54 -24
- package/dist/state-slot.js.map +1 -1
- package/package.json +3 -3
- package/src/compiled/core.ts +785 -179
- package/src/direct-dom.ts +136 -10
- package/src/dom/events.ts +86 -0
- package/src/hydration-bridge.ts +10 -4
- package/src/hydration.ts +5 -3
- package/src/index.ts +2 -0
- package/src/keyed-list.ts +168 -22
- package/src/renderable.ts +30 -0
- package/src/source-mask.ts +20 -0
- package/src/state-slot.ts +83 -27
package/dist/renderable.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderable.js","names":[],"sources":["../src/renderable.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"renderable.js","names":[],"sources":["../src/renderable.ts"],"mappings":"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"}
|
package/dist/source-mask.d.ts
CHANGED
|
@@ -3,8 +3,9 @@ type SourceMask = number | Uint32Array;
|
|
|
3
3
|
declare function source(index: number): SourceMask;
|
|
4
4
|
declare function combineSources(...masks: readonly SourceMask[]): SourceMask;
|
|
5
5
|
declare function intersectsSources(left: SourceMask, right: SourceMask): boolean;
|
|
6
|
+
declare function forEachSource(mask: SourceMask, visit: (index: number) => void): void;
|
|
6
7
|
declare function isEmptySources(mask: SourceMask): boolean;
|
|
7
8
|
declare function unionSources(left: SourceMask, right: SourceMask): SourceMask;
|
|
8
9
|
//#endregion
|
|
9
|
-
export { SourceMask, combineSources, intersectsSources, isEmptySources, source, unionSources };
|
|
10
|
+
export { SourceMask, combineSources, forEachSource, intersectsSources, isEmptySources, source, unionSources };
|
|
10
11
|
//# sourceMappingURL=source-mask.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-mask.d.ts","names":[],"sources":["../src/source-mask.ts"],"mappings":";KAGY,sBAAsB;iBAElB,OAAO,gBAAgB;iBAgBvB,kBAAkB,gBAAgB,eAAe;iBAiBjD,kBAAkB,MAAM,YAAY,OAAO;iBAc3C,eAAe,MAAM;iBAQrB,aAAa,MAAM,YAAY,OAAO,aAAa"}
|
|
1
|
+
{"version":3,"file":"source-mask.d.ts","names":[],"sources":["../src/source-mask.ts"],"mappings":";KAGY,sBAAsB;iBAElB,OAAO,gBAAgB;iBAgBvB,kBAAkB,gBAAgB,eAAe;iBAiBjD,kBAAkB,MAAM,YAAY,OAAO;iBAc3C,cAAc,MAAM,YAAY,QAAQ;iBAWxC,eAAe,MAAM;iBAQrB,aAAa,MAAM,YAAY,OAAO,aAAa"}
|
package/dist/source-mask.js
CHANGED
|
@@ -29,6 +29,13 @@ function intersectsSources(left, right) {
|
|
|
29
29
|
for (let index = 0; index < length; index += 1) if ((wordAt(left, index) & wordAt(right, index)) >>> 0 !== 0) return true;
|
|
30
30
|
return false;
|
|
31
31
|
}
|
|
32
|
+
function forEachSource(mask, visit) {
|
|
33
|
+
if (typeof mask === "number") {
|
|
34
|
+
visitWordSources(mask, 0, visit);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
for (let word = 0; word < mask.length; word += 1) visitWordSources(mask[word] ?? 0, word * BITS_PER_WORD, visit);
|
|
38
|
+
}
|
|
32
39
|
function isEmptySources(mask) {
|
|
33
40
|
if (typeof mask === "number") return mask === 0;
|
|
34
41
|
for (const word of mask) if (word !== 0) return false;
|
|
@@ -47,10 +54,18 @@ function wordAt(mask, index) {
|
|
|
47
54
|
if (typeof mask === "number") return index === 0 ? mask : 0;
|
|
48
55
|
return mask[index] ?? 0;
|
|
49
56
|
}
|
|
57
|
+
function visitWordSources(word, offset, visit) {
|
|
58
|
+
let remaining = word >>> 0;
|
|
59
|
+
while (remaining !== 0) {
|
|
60
|
+
const bit = 31 - Math.clz32(remaining);
|
|
61
|
+
visit(offset + bit);
|
|
62
|
+
remaining = (remaining & ~(1 << bit)) >>> 0;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
50
65
|
function wordLength(mask) {
|
|
51
66
|
return typeof mask === "number" ? 1 : mask.length;
|
|
52
67
|
}
|
|
53
68
|
//#endregion
|
|
54
|
-
export { combineSources, intersectsSources, isEmptySources, source, unionSources };
|
|
69
|
+
export { combineSources, forEachSource, intersectsSources, isEmptySources, source, unionSources };
|
|
55
70
|
|
|
56
71
|
//# sourceMappingURL=source-mask.js.map
|
package/dist/source-mask.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source-mask.js","names":[],"sources":["../src/source-mask.ts"],"mappings":";AAAA,MAAM,gBAAgB;AACtB,MAAM,MAAM,OAAO,mBAAmB,eAAe;AAIrD,SAAgB,OAAO,OAA2B;CAChD,IAAI,CAAC,OAAO,cAAc,KAAK,KAAK,QAAQ,GAC1C,MAAM,IAAI,WACR,MAAM,8DAA8D,UAAU,MAChF;CAGF,MAAM,OAAO,KAAK,MAAM,QAAQ,aAAa;CAC7C,MAAM,MAAO,KAAM,QAAQ,kBAAoB;CAC/C,IAAI,SAAS,GAAG,OAAO;CAEvB,MAAM,QAAQ,IAAI,YAAY,OAAO,CAAC;CACtC,MAAM,QAAQ;CACd,OAAO;AACT;AAEA,SAAgB,eAAe,GAAG,OAA0C;CAC1E,MAAM,SAAS,MAAM,QAAgB,SAAS,SAAS,KAAK,IAAI,SAAS,WAAW,IAAI,CAAC,GAAG,CAAC;CAC7F,IAAI,WAAW,GAAG;EAChB,IAAI,WAAW;EACf,KAAK,MAAM,QAAQ,OAAO,YAAY,WAAW,OAAO,MAAM,CAAC,OAAO;EACtE,OAAO;CACT;CAEA,MAAM,WAAW,IAAI,YAAY,MAAM;CACvC,KAAK,MAAM,QAAQ,OACjB,KAAK,IAAI,QAAQ,GAAG,QAAQ,WAAW,IAAI,GAAG,SAAS,GACrD,SAAS,WAAW,SAAS,UAAU,KAAK,OAAO,MAAM,KAAK,OAAO;CAGzE,OAAO;AACT;AAEA,SAAgB,kBAAkB,MAAkB,OAA4B;CAC9E,IAAI,OAAO,SAAS,YAAY,OAAO,UAAU,UAC/C,QAAQ,OAAO,WAAW,MAAM;CAGlC,MAAM,aAAa,WAAW,IAAI;CAClC,MAAM,cAAc,WAAW,KAAK;CACpC,MAAM,SAAS,KAAK,IAAI,YAAY,WAAW;CAC/C,KAAK,IAAI,QAAQ,GAAG,QAAQ,QAAQ,SAAS,GAC3C,KAAK,OAAO,MAAM,KAAK,IAAI,OAAO,OAAO,KAAK,OAAO,MAAM,GAAG,OAAO;CAEvE,OAAO;AACT;AAEA,SAAgB,eAAe,MAA2B;CACxD,IAAI,OAAO,SAAS,UAAU,OAAO,SAAS;CAC9C,KAAK,MAAM,QAAQ,MACjB,IAAI,SAAS,GAAG,OAAO;CAEzB,OAAO;AACT;AAEA,SAAgB,aAAa,MAAkB,OAA+B;CAC5E,IAAI,OAAO,SAAS,YAAY,OAAO,UAAU,UAC/C,QAAQ,OAAO,WAAW;CAG5B,MAAM,aAAa,WAAW,IAAI;CAClC,MAAM,cAAc,WAAW,KAAK;CACpC,MAAM,SAAS,KAAK,IAAI,YAAY,WAAW;CAC/C,MAAM,QAAQ,IAAI,YAAY,MAAM;CACpC,KAAK,IAAI,QAAQ,GAAG,QAAQ,QAAQ,SAAS,GAC3C,MAAM,UAAU,OAAO,MAAM,KAAK,IAAI,OAAO,OAAO,KAAK,OAAO;CAElE,OAAO;AACT;AAEA,SAAS,OAAO,MAAkB,OAAuB;CACvD,IAAI,OAAO,SAAS,UAAU,OAAO,UAAU,IAAI,OAAO;CAC1D,OAAO,KAAK,UAAU;AACxB;AAEA,SAAS,WAAW,MAA0B;CAC5C,OAAO,OAAO,SAAS,WAAW,IAAI,KAAK;AAC7C"}
|
|
1
|
+
{"version":3,"file":"source-mask.js","names":[],"sources":["../src/source-mask.ts"],"mappings":";AAAA,MAAM,gBAAgB;AACtB,MAAM,MAAM,OAAO,mBAAmB,eAAe;AAIrD,SAAgB,OAAO,OAA2B;CAChD,IAAI,CAAC,OAAO,cAAc,KAAK,KAAK,QAAQ,GAC1C,MAAM,IAAI,WACR,MAAM,8DAA8D,UAAU,MAChF;CAGF,MAAM,OAAO,KAAK,MAAM,QAAQ,aAAa;CAC7C,MAAM,MAAO,KAAM,QAAQ,kBAAoB;CAC/C,IAAI,SAAS,GAAG,OAAO;CAEvB,MAAM,QAAQ,IAAI,YAAY,OAAO,CAAC;CACtC,MAAM,QAAQ;CACd,OAAO;AACT;AAEA,SAAgB,eAAe,GAAG,OAA0C;CAC1E,MAAM,SAAS,MAAM,QAAgB,SAAS,SAAS,KAAK,IAAI,SAAS,WAAW,IAAI,CAAC,GAAG,CAAC;CAC7F,IAAI,WAAW,GAAG;EAChB,IAAI,WAAW;EACf,KAAK,MAAM,QAAQ,OAAO,YAAY,WAAW,OAAO,MAAM,CAAC,OAAO;EACtE,OAAO;CACT;CAEA,MAAM,WAAW,IAAI,YAAY,MAAM;CACvC,KAAK,MAAM,QAAQ,OACjB,KAAK,IAAI,QAAQ,GAAG,QAAQ,WAAW,IAAI,GAAG,SAAS,GACrD,SAAS,WAAW,SAAS,UAAU,KAAK,OAAO,MAAM,KAAK,OAAO;CAGzE,OAAO;AACT;AAEA,SAAgB,kBAAkB,MAAkB,OAA4B;CAC9E,IAAI,OAAO,SAAS,YAAY,OAAO,UAAU,UAC/C,QAAQ,OAAO,WAAW,MAAM;CAGlC,MAAM,aAAa,WAAW,IAAI;CAClC,MAAM,cAAc,WAAW,KAAK;CACpC,MAAM,SAAS,KAAK,IAAI,YAAY,WAAW;CAC/C,KAAK,IAAI,QAAQ,GAAG,QAAQ,QAAQ,SAAS,GAC3C,KAAK,OAAO,MAAM,KAAK,IAAI,OAAO,OAAO,KAAK,OAAO,MAAM,GAAG,OAAO;CAEvE,OAAO;AACT;AAEA,SAAgB,cAAc,MAAkB,OAAsC;CACpF,IAAI,OAAO,SAAS,UAAU;EAC5B,iBAAiB,MAAM,GAAG,KAAK;EAC/B;CACF;CAEA,KAAK,IAAI,OAAO,GAAG,OAAO,KAAK,QAAQ,QAAQ,GAC7C,iBAAiB,KAAK,SAAS,GAAG,OAAO,eAAe,KAAK;AAEjE;AAEA,SAAgB,eAAe,MAA2B;CACxD,IAAI,OAAO,SAAS,UAAU,OAAO,SAAS;CAC9C,KAAK,MAAM,QAAQ,MACjB,IAAI,SAAS,GAAG,OAAO;CAEzB,OAAO;AACT;AAEA,SAAgB,aAAa,MAAkB,OAA+B;CAC5E,IAAI,OAAO,SAAS,YAAY,OAAO,UAAU,UAC/C,QAAQ,OAAO,WAAW;CAG5B,MAAM,aAAa,WAAW,IAAI;CAClC,MAAM,cAAc,WAAW,KAAK;CACpC,MAAM,SAAS,KAAK,IAAI,YAAY,WAAW;CAC/C,MAAM,QAAQ,IAAI,YAAY,MAAM;CACpC,KAAK,IAAI,QAAQ,GAAG,QAAQ,QAAQ,SAAS,GAC3C,MAAM,UAAU,OAAO,MAAM,KAAK,IAAI,OAAO,OAAO,KAAK,OAAO;CAElE,OAAO;AACT;AAEA,SAAS,OAAO,MAAkB,OAAuB;CACvD,IAAI,OAAO,SAAS,UAAU,OAAO,UAAU,IAAI,OAAO;CAC1D,OAAO,KAAK,UAAU;AACxB;AAEA,SAAS,iBAAiB,MAAc,QAAgB,OAAsC;CAC5F,IAAI,YAAY,SAAS;CACzB,OAAO,cAAc,GAAG;EACtB,MAAM,MAAM,KAAK,KAAK,MAAM,SAAS;EACrC,MAAM,SAAS,GAAG;EAClB,aAAa,YAAY,EAAE,KAAK,UAAU;CAC5C;AACF;AAEA,SAAS,WAAW,MAA0B;CAC5C,OAAO,OAAO,SAAS,WAAW,IAAI,KAAK;AAC7C"}
|
package/dist/spread.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import "./dom/intrinsic.js";
|
|
2
|
-
import { binding, mountCompiledPropTransition, mountCompiledRef, registerCompiledCleanup } from "./compiled/core.js";
|
|
3
1
|
import { applyDomProp, ensureControlledFormRestoration, isControlledFormProp } from "./dom/properties.js";
|
|
4
2
|
import { attachEventProp, isEventProp } from "./dom/events.js";
|
|
3
|
+
import "./dom/intrinsic.js";
|
|
4
|
+
import { binding, mountCompiledPropTransition, mountCompiledRef, registerCompiledCleanup } from "./compiled/core.js";
|
|
5
5
|
//#region src/spread.ts
|
|
6
6
|
const DEV = typeof __VIDACT_DEV__ === "undefined" || __VIDACT_DEV__;
|
|
7
7
|
let spreadId = 0;
|
package/dist/state-slot.d.ts
CHANGED
|
@@ -15,7 +15,18 @@ interface StateSlot<T> {
|
|
|
15
15
|
readonly set: (update: StateUpdate<T>) => void;
|
|
16
16
|
readonly replace: (value: T) => void;
|
|
17
17
|
}
|
|
18
|
+
interface ReadOnlyStateInvalidationTarget {
|
|
19
|
+
readonly [1]: (sources: SourceMask) => void;
|
|
20
|
+
}
|
|
21
|
+
interface ReadOnlyStateCell<T> extends Pick<StateSlot<T>, 'get'> {
|
|
22
|
+
value: T;
|
|
23
|
+
revision?: number;
|
|
24
|
+
readonly invalidationTarget: ReadOnlyStateInvalidationTarget;
|
|
25
|
+
readonly source: SourceMask;
|
|
26
|
+
}
|
|
27
|
+
declare function createReadOnlyStateSlot<T>(invalidationTarget: ReadOnlyStateInvalidationTarget, source: SourceMask, initialValue: T): ReadOnlyStateCell<T>;
|
|
28
|
+
declare function replaceReadOnlyStateSlot<T>(cell: ReadOnlyStateCell<T>, replacement: T): void;
|
|
18
29
|
declare function createStateSlot<T>(invalidate: (sources: SourceMask) => void, source: SourceMask, initialValue: T, assertWritable?: () => void): StateSlot<T>;
|
|
19
30
|
//#endregion
|
|
20
|
-
export { DeferredStateWrite, StateSlot, StateUpdate, StateWriteInterceptor, createStateSlot, installStateWriteInterceptor };
|
|
31
|
+
export { DeferredStateWrite, ReadOnlyStateCell, ReadOnlyStateInvalidationTarget, StateSlot, StateUpdate, StateWriteInterceptor, createReadOnlyStateSlot, createStateSlot, installStateWriteInterceptor, replaceReadOnlyStateSlot };
|
|
21
32
|
//# sourceMappingURL=state-slot.d.ts.map
|
package/dist/state-slot.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-slot.d.ts","names":[],"sources":["../src/state-slot.ts"],"mappings":";;KAEY,YAAY,KAAK,MAAM,UAAU,MAAM;UAElC,mBAAmB;WACzB;WACA;WACA,QAAQ,YAAY;WACpB,SAAS,QAAQ,YAAY;WAC7B;;KAGC,yBAAyB,GAAG,OAAO,mBAAmB;iBAIlD,6BAA6B,aAAa;UAIzC,UAAU;WAChB,WAAW;WACX,MAAM,QAAQ,YAAY;WAC1B,UAAU,OAAO;;
|
|
1
|
+
{"version":3,"file":"state-slot.d.ts","names":[],"sources":["../src/state-slot.ts"],"mappings":";;KAEY,YAAY,KAAK,MAAM,UAAU,MAAM;UAElC,mBAAmB;WACzB;WACA;WACA,QAAQ,YAAY;WACpB,SAAS,QAAQ,YAAY;WAC7B;;KAGC,yBAAyB,GAAG,OAAO,mBAAmB;iBAIlD,6BAA6B,aAAa;UAIzC,UAAU;WAChB,WAAW;WACX,MAAM,QAAQ,YAAY;WAC1B,UAAU,OAAO;;UAGX;YACL,KAAK,SAAS;;UAGT,kBAAkB,WAAW,KAAK,UAAU;EAC3D,OAAO;EACP;WACS,oBAAoB;WACpB,QAAQ;;iBAGH,wBAAwB,GACtC,oBAAoB,iCACpB,QAAQ,YACR,cAAc,IACb,kBAAkB;iBAaL,yBAAyB,GAAG,MAAM,kBAAkB,IAAI,aAAa;iBAyBrE,gBAAgB,GAC9B,aAAa,SAAS,qBACtB,QAAQ,YACR,cAAc,GACd,8BACC,UAAU"}
|
package/dist/state-slot.js
CHANGED
|
@@ -3,45 +3,75 @@ let stateWriteInterceptor;
|
|
|
3
3
|
function installStateWriteInterceptor(interceptor) {
|
|
4
4
|
stateWriteInterceptor = interceptor;
|
|
5
5
|
}
|
|
6
|
+
function createReadOnlyStateSlot(invalidationTarget, source, initialValue) {
|
|
7
|
+
return {
|
|
8
|
+
value: initialValue,
|
|
9
|
+
invalidationTarget,
|
|
10
|
+
source,
|
|
11
|
+
get: readReadOnlyState
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
function readReadOnlyState() {
|
|
15
|
+
return this.value;
|
|
16
|
+
}
|
|
17
|
+
function replaceReadOnlyStateSlot(cell, replacement) {
|
|
18
|
+
if (Object.is(cell.value, replacement)) return;
|
|
19
|
+
const revision = cell.revision ?? 0;
|
|
20
|
+
if (stateWriteInterceptor?.({
|
|
21
|
+
slot: cell,
|
|
22
|
+
revision,
|
|
23
|
+
update: replacement,
|
|
24
|
+
commit: (pending) => applyReadOnlyState(cell, pending),
|
|
25
|
+
currentRevision: () => cell.revision ?? 0
|
|
26
|
+
})) {
|
|
27
|
+
cell.revision ??= revision;
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
applyReadOnlyState(cell, replacement);
|
|
31
|
+
}
|
|
32
|
+
function applyReadOnlyState(cell, next) {
|
|
33
|
+
if (Object.is(cell.value, next)) return;
|
|
34
|
+
cell.value = next;
|
|
35
|
+
if (cell.revision !== void 0) cell.revision += 1;
|
|
36
|
+
cell.invalidationTarget[1](cell.source);
|
|
37
|
+
}
|
|
6
38
|
function createStateSlot(invalidate, source, initialValue, assertWritable) {
|
|
7
39
|
let value = initialValue;
|
|
8
40
|
let revision = 0;
|
|
9
|
-
|
|
10
|
-
const
|
|
41
|
+
let token;
|
|
42
|
+
const apply = (next) => {
|
|
11
43
|
if (Object.is(value, next)) return;
|
|
12
44
|
value = next;
|
|
13
45
|
revision += 1;
|
|
14
46
|
invalidate(source);
|
|
15
47
|
};
|
|
16
|
-
const commitUpdate = (update) => {
|
|
17
|
-
const next = typeof update === "function" ? update(value) : update;
|
|
18
|
-
commit(next);
|
|
19
|
-
};
|
|
20
|
-
const commitReplacement = (replacement) => commit(replacement);
|
|
21
|
-
const write = (update, commitWrite) => {
|
|
22
|
-
if (stateWriteInterceptor?.({
|
|
23
|
-
slot: token,
|
|
24
|
-
revision,
|
|
25
|
-
update,
|
|
26
|
-
commit: commitWrite,
|
|
27
|
-
currentRevision: () => revision
|
|
28
|
-
})) return;
|
|
29
|
-
commitWrite(update);
|
|
30
|
-
};
|
|
31
|
-
const replace = (next) => {
|
|
32
|
-
assertWritable?.();
|
|
33
|
-
write(next, commitReplacement);
|
|
34
|
-
};
|
|
35
48
|
return {
|
|
36
49
|
get: () => value,
|
|
37
50
|
set: (update) => {
|
|
38
51
|
assertWritable?.();
|
|
39
|
-
|
|
52
|
+
if (stateWriteInterceptor?.({
|
|
53
|
+
slot: token ??= {},
|
|
54
|
+
revision,
|
|
55
|
+
update,
|
|
56
|
+
commit: (pending) => apply(typeof pending === "function" ? pending(value) : pending),
|
|
57
|
+
currentRevision: () => revision
|
|
58
|
+
})) return;
|
|
59
|
+
apply(typeof update === "function" ? update(value) : update);
|
|
40
60
|
},
|
|
41
|
-
replace
|
|
61
|
+
replace: (replacement) => {
|
|
62
|
+
assertWritable?.();
|
|
63
|
+
if (stateWriteInterceptor?.({
|
|
64
|
+
slot: token ??= {},
|
|
65
|
+
revision,
|
|
66
|
+
update: replacement,
|
|
67
|
+
commit: (pending) => apply(pending),
|
|
68
|
+
currentRevision: () => revision
|
|
69
|
+
})) return;
|
|
70
|
+
apply(replacement);
|
|
71
|
+
}
|
|
42
72
|
};
|
|
43
73
|
}
|
|
44
74
|
//#endregion
|
|
45
|
-
export { createStateSlot, installStateWriteInterceptor };
|
|
75
|
+
export { createReadOnlyStateSlot, createStateSlot, installStateWriteInterceptor, replaceReadOnlyStateSlot };
|
|
46
76
|
|
|
47
77
|
//# sourceMappingURL=state-slot.js.map
|
package/dist/state-slot.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-slot.js","names":[],"sources":["../src/state-slot.ts"],"mappings":";AAcA,IAAI;AAEJ,SAAgB,6BAA6B,aAA0C;CACrF,wBAAwB;AAC1B;
|
|
1
|
+
{"version":3,"file":"state-slot.js","names":[],"sources":["../src/state-slot.ts"],"mappings":";AAcA,IAAI;AAEJ,SAAgB,6BAA6B,aAA0C;CACrF,wBAAwB;AAC1B;AAmBA,SAAgB,wBACd,oBACA,QACA,cACsB;CACtB,OAAO;EACL,OAAO;EACP;EACA;EACA,KAAK;CACP;AACF;AAEA,SAAS,oBAAoD;CAC3D,OAAO,KAAK;AACd;AAEA,SAAgB,yBAA4B,MAA4B,aAAsB;CAC5F,IAAI,OAAO,GAAG,KAAK,OAAO,WAAW,GAAG;CACxC,MAAM,WAAW,KAAK,YAAY;CAClC,IACE,wBAAwB;EACtB,MAAM;EACN;EACA,QAAQ;EACR,SAAS,YAAY,mBAAmB,MAAM,OAAY;EAC1D,uBAAuB,KAAK,YAAY;CAC1C,CAAC,GACD;EACA,KAAK,aAAa;EAClB;CACF;CACA,mBAAmB,MAAM,WAAW;AACtC;AAEA,SAAS,mBAAsB,MAA4B,MAAe;CACxE,IAAI,OAAO,GAAG,KAAK,OAAO,IAAI,GAAG;CACjC,KAAK,QAAQ;CACb,IAAI,KAAK,aAAa,KAAA,GAAW,KAAK,YAAY;CAClD,KAAK,mBAAmB,EAAE,CAAC,KAAK,MAAM;AACxC;AAEA,SAAgB,gBACd,YACA,QACA,cACA,gBACc;CACd,IAAI,QAAQ;CACZ,IAAI,WAAW;CACf,IAAI;CAEJ,MAAM,SAAS,SAAkB;EAC/B,IAAI,OAAO,GAAG,OAAO,IAAI,GAAG;EAE5B,QAAQ;EACR,YAAY;EACZ,WAAW,MAAM;CACnB;CAEA,OAAO;EACL,WAAW;EACX,MAAM,WAAW;GACf,iBAAiB;GACjB,IACE,wBAAwB;IACtB,MAAO,UAAU,CAAC;IAClB;IACA;IACA,SAAS,YACP,MAAM,OAAO,YAAY,aAAc,QAA+B,KAAK,IAAI,OAAO;IACxF,uBAAuB;GACzB,CAAC,GAED;GAEF,MAAM,OAAO,WAAW,aAAc,OAA8B,KAAK,IAAI,MAAM;EACrF;EACA,UAAU,gBAAgB;GACxB,iBAAiB;GACjB,IACE,wBAAwB;IACtB,MAAO,UAAU,CAAC;IAClB;IACA,QAAQ;IACR,SAAS,YAAY,MAAM,OAAY;IACvC,uBAAuB;GACzB,CAAC,GAED;GAEF,MAAM,WAAW;EACnB;CACF;AACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vidact/runtime",
|
|
3
|
-
"version": "0.2.0-beta.
|
|
3
|
+
"version": "0.2.0-beta.8",
|
|
4
4
|
"description": "Fine-grained direct-DOM runtime for compiled Vidact applications",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"compiler",
|
|
@@ -135,8 +135,8 @@
|
|
|
135
135
|
"tsdown": "0.22.14",
|
|
136
136
|
"typescript": "7.0.2",
|
|
137
137
|
"vitest": "4.1.11",
|
|
138
|
-
"@vidact/
|
|
139
|
-
"@vidact/
|
|
138
|
+
"@vidact/react-types": "0.2.0-beta.8",
|
|
139
|
+
"@vidact/test-support": "0.2.0-beta.8"
|
|
140
140
|
},
|
|
141
141
|
"peerDependencies": {
|
|
142
142
|
"@types/react": "^19.2.18"
|