Skip to content

Commit 8195244

Browse files
committed
Implement rawVal in VanJS and raw in VanX
1 parent 6c0d1e7 commit 8195244

33 files changed

+245
-83
lines changed

demo/terminal/van-1.5.0.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "vanjs-core",
3-
"version": "1.5.0",
3+
"version": "1.5.0-rc.1",
44
"description": "VanJS. A minimalist React-like UI library based on vanilla JavaScript and DOM.",
55
"files": [
66
"src/van.js",

public/van-1.5.0.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
export interface State<T> {
22
val: T
3-
readonly oldVal: T
3+
readonly oldVal, rawVal: T
44
}
55

66
// Defining readonly view of State<T> for covariance.

public/van-1.5.0.debug.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
export interface State<T> {
22
val: T
3-
readonly oldVal: T
3+
readonly oldVal, rawVal: T
44
}
55

66
// Defining readonly view of State<T> for covariance.

public/van-1.5.0.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ let addStatesToGc = d => statesToGc = addAndScheduleOnFirst(statesToGc, d, () =>
3434
let stateProto = {
3535
get val() {
3636
curDeps?._getters?.add(this)
37-
return this._val
37+
return this.rawVal
3838
},
3939

4040
get oldVal() {
@@ -44,8 +44,8 @@ let stateProto = {
4444

4545
set val(v) {
4646
curDeps?._setters?.add(this)
47-
if (v !== this._val) {
48-
this._val = v
47+
if (v !== this.rawVal) {
48+
this.rawVal = v
4949
this._bindings.length + this._listeners.length ?
5050
(derivedStates?.add(this), changedStates = addAndScheduleOnFirst(changedStates, this, updateDoms)) :
5151
this._oldVal = v
@@ -55,7 +55,7 @@ let stateProto = {
5555

5656
let state = initVal => ({
5757
__proto__: stateProto,
58-
_val: initVal,
58+
rawVal: initVal,
5959
_oldVal: initVal,
6060
_bindings: [],
6161
_listeners: [],
@@ -76,7 +76,7 @@ let bind = (f, dom) => {
7676
let derive = (f, s = state(), dom) => {
7777
let deps = {_getters: new Set, _setters: new Set}, listener = {f, s}
7878
listener._dom = dom ?? curNewDerives?.push(listener) ?? alwaysConnectedDom
79-
s.val = runAndCaptureDeps(f, deps, s._val)
79+
s.val = runAndCaptureDeps(f, deps, s.rawVal)
8080
for (let d of deps._getters)
8181
deps._setters.has(d) || (addStatesToGc(d), d._listeners.push(listener))
8282
return s
@@ -122,17 +122,17 @@ let tags = new Proxy(ns => new Proxy(tag, handler(ns)), handler())
122122
let update = (dom, newDom) => newDom ? newDom !== dom && dom.replaceWith(newDom) : dom.remove()
123123

124124
let updateDoms = () => {
125-
let iter = 0, derivedStatesArray = [...changedStates].filter(s => s._val !== s._oldVal)
125+
let iter = 0, derivedStatesArray = [...changedStates].filter(s => s.rawVal !== s._oldVal)
126126
do {
127127
derivedStates = new Set
128128
for (let l of new Set(derivedStatesArray.flatMap(s => s._listeners = keepConnected(s._listeners))))
129129
derive(l.f, l.s, l._dom), l._dom = _undefined
130130
} while (++iter < 100 && (derivedStatesArray = [...derivedStates]).length)
131-
let changedStatesArray = [...changedStates].filter(s => s._val !== s._oldVal)
131+
let changedStatesArray = [...changedStates].filter(s => s.rawVal !== s._oldVal)
132132
changedStates = _undefined
133133
for (let b of new Set(changedStatesArray.flatMap(s => s._bindings = keepConnected(s._bindings))))
134134
update(b._dom, bind(b.f, b._dom)), b._dom = _undefined
135-
for (let s of changedStatesArray) s._oldVal = s._val
135+
for (let s of changedStatesArray) s._oldVal = s.rawVal
136136
}
137137

138138
let hydrate = (dom, f) => update(dom, bind(f, dom))

public/van-1.5.0.min.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
export interface State<T> {
22
val: T
3-
readonly oldVal: T
3+
readonly oldVal, rawVal: T
44
}
55

66
// Defining readonly view of State<T> for covariance.

public/van-1.5.0.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

public/van-1.5.0.nomodule.debug.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,23 +34,23 @@
3434
var stateProto = {
3535
get val() {
3636
curDeps?._getters?.add(this);
37-
return this._val;
37+
return this.rawVal;
3838
},
3939
get oldVal() {
4040
curDeps?._getters?.add(this);
4141
return this._oldVal;
4242
},
4343
set val(v) {
4444
curDeps?._setters?.add(this);
45-
if (v !== this._val) {
46-
this._val = v;
45+
if (v !== this.rawVal) {
46+
this.rawVal = v;
4747
this._bindings.length + this._listeners.length ? (derivedStates?.add(this), changedStates = addAndScheduleOnFirst(changedStates, this, updateDoms)) : this._oldVal = v;
4848
}
4949
}
5050
};
5151
var state = (initVal) => ({
5252
__proto__: stateProto,
53-
_val: initVal,
53+
rawVal: initVal,
5454
_oldVal: initVal,
5555
_bindings: [],
5656
_listeners: []
@@ -70,7 +70,7 @@
7070
var derive = (f, s = state(), dom) => {
7171
let deps = { _getters: /* @__PURE__ */ new Set(), _setters: /* @__PURE__ */ new Set() }, listener = { f, s };
7272
listener._dom = dom ?? curNewDerives?.push(listener) ?? alwaysConnectedDom;
73-
s.val = runAndCaptureDeps(f, deps, s._val);
73+
s.val = runAndCaptureDeps(f, deps, s.rawVal);
7474
for (let d of deps._getters)
7575
deps._setters.has(d) || (addStatesToGc(d), d._listeners.push(listener));
7676
return s;
@@ -105,18 +105,18 @@
105105
var tags = new Proxy((ns) => new Proxy(tag, handler(ns)), handler());
106106
var update = (dom, newDom) => newDom ? newDom !== dom && dom.replaceWith(newDom) : dom.remove();
107107
var updateDoms = () => {
108-
let iter = 0, derivedStatesArray = [...changedStates].filter((s) => s._val !== s._oldVal);
108+
let iter = 0, derivedStatesArray = [...changedStates].filter((s) => s.rawVal !== s._oldVal);
109109
do {
110110
derivedStates = /* @__PURE__ */ new Set();
111111
for (let l of new Set(derivedStatesArray.flatMap((s) => s._listeners = keepConnected(s._listeners))))
112112
derive(l.f, l.s, l._dom), l._dom = _undefined;
113113
} while (++iter < 100 && (derivedStatesArray = [...derivedStates]).length);
114-
let changedStatesArray = [...changedStates].filter((s) => s._val !== s._oldVal);
114+
let changedStatesArray = [...changedStates].filter((s) => s.rawVal !== s._oldVal);
115115
changedStates = _undefined;
116116
for (let b of new Set(changedStatesArray.flatMap((s) => s._bindings = keepConnected(s._bindings))))
117117
update(b._dom, bind(b.f, b._dom)), b._dom = _undefined;
118118
for (let s of changedStatesArray)
119-
s._oldVal = s._val;
119+
s._oldVal = s.rawVal;
120120
};
121121
var hydrate = (dom, f) => update(dom, bind(f, dom));
122122
var van_default = { add, tags, state, derive, hydrate };

public/van-1.5.0.nomodule.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,23 +34,23 @@
3434
var stateProto = {
3535
get val() {
3636
curDeps?._getters?.add(this);
37-
return this._val;
37+
return this.rawVal;
3838
},
3939
get oldVal() {
4040
curDeps?._getters?.add(this);
4141
return this._oldVal;
4242
},
4343
set val(v) {
4444
curDeps?._setters?.add(this);
45-
if (v !== this._val) {
46-
this._val = v;
45+
if (v !== this.rawVal) {
46+
this.rawVal = v;
4747
this._bindings.length + this._listeners.length ? (derivedStates?.add(this), changedStates = addAndScheduleOnFirst(changedStates, this, updateDoms)) : this._oldVal = v;
4848
}
4949
}
5050
};
5151
var state = (initVal) => ({
5252
__proto__: stateProto,
53-
_val: initVal,
53+
rawVal: initVal,
5454
_oldVal: initVal,
5555
_bindings: [],
5656
_listeners: []
@@ -70,7 +70,7 @@
7070
var derive = (f, s = state(), dom) => {
7171
let deps = { _getters: /* @__PURE__ */ new Set(), _setters: /* @__PURE__ */ new Set() }, listener = { f, s };
7272
listener._dom = dom ?? curNewDerives?.push(listener) ?? alwaysConnectedDom;
73-
s.val = runAndCaptureDeps(f, deps, s._val);
73+
s.val = runAndCaptureDeps(f, deps, s.rawVal);
7474
for (let d of deps._getters)
7575
deps._setters.has(d) || (addStatesToGc(d), d._listeners.push(listener));
7676
return s;
@@ -105,18 +105,18 @@
105105
var tags = new Proxy((ns) => new Proxy(tag, handler(ns)), handler());
106106
var update = (dom, newDom) => newDom ? newDom !== dom && dom.replaceWith(newDom) : dom.remove();
107107
var updateDoms = () => {
108-
let iter = 0, derivedStatesArray = [...changedStates].filter((s) => s._val !== s._oldVal);
108+
let iter = 0, derivedStatesArray = [...changedStates].filter((s) => s.rawVal !== s._oldVal);
109109
do {
110110
derivedStates = /* @__PURE__ */ new Set();
111111
for (let l of new Set(derivedStatesArray.flatMap((s) => s._listeners = keepConnected(s._listeners))))
112112
derive(l.f, l.s, l._dom), l._dom = _undefined;
113113
} while (++iter < 100 && (derivedStatesArray = [...derivedStates]).length);
114-
let changedStatesArray = [...changedStates].filter((s) => s._val !== s._oldVal);
114+
let changedStatesArray = [...changedStates].filter((s) => s.rawVal !== s._oldVal);
115115
changedStates = _undefined;
116116
for (let b of new Set(changedStatesArray.flatMap((s) => s._bindings = keepConnected(s._bindings))))
117117
update(b._dom, bind(b.f, b._dom)), b._dom = _undefined;
118118
for (let s of changedStatesArray)
119-
s._oldVal = s._val;
119+
s._oldVal = s.rawVal;
120120
};
121121
var hydrate = (dom, f) => update(dom, bind(f, dom));
122122
var van_default = { add, tags, state, derive, hydrate };

0 commit comments

Comments
 (0)