vasille 3.0.2 → 3.2.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 +10 -10
- package/lib/core/core.js +40 -24
- package/lib/core/ivalue.js +1 -2
- package/lib/index.js +20 -22
- package/lib/node/app.js +7 -7
- package/lib/node/node.js +47 -360
- package/lib/node/watch.js +5 -6
- package/lib/{binding → runner/web/binding}/attribute.js +1 -1
- package/lib/{binding → runner/web/binding}/binding.js +1 -1
- package/lib/{binding → runner/web/binding}/class.js +3 -1
- package/lib/{binding → runner/web/binding}/style.js +2 -1
- package/lib/runner/web/runner.js +165 -0
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/value/expression.js +3 -2
- package/lib/value/pointer.js +8 -12
- package/lib/value/reference.js +2 -2
- package/lib/views/array-view.js +1 -1
- package/lib/views/base-view.js +3 -3
- package/lib/views/map-view.js +1 -1
- package/lib/views/repeat-node.js +5 -6
- package/lib/views/set-view.js +3 -3
- package/package.json +31 -25
- package/types/core/core.d.ts +14 -13
- package/types/index.d.ts +22 -24
- package/types/node/app.d.ts +8 -7
- package/types/node/node.d.ts +49 -144
- package/types/node/runner.d.ts +10 -0
- package/types/node/watch.d.ts +7 -6
- package/types/{binding → runner/web/binding}/attribute.d.ts +4 -4
- package/types/{binding → runner/web/binding}/binding.d.ts +2 -2
- package/types/runner/web/binding/class.d.ts +11 -0
- package/types/{binding → runner/web/binding}/style.d.ts +4 -4
- package/types/runner/web/runner.d.ts +42 -0
- package/types/tsconfig-types.tsbuildinfo +1 -1
- package/types/value/expression.d.ts +2 -2
- package/types/value/pointer.d.ts +1 -1
- package/types/value/reference.d.ts +1 -1
- package/types/views/array-view.d.ts +5 -5
- package/types/views/base-view.d.ts +7 -6
- package/types/views/map-view.d.ts +3 -3
- package/types/views/repeat-node.d.ts +8 -7
- package/types/views/set-view.d.ts +5 -4
- package/lib/core/config.js +0 -3
- package/lib/models/array-model.js +0 -147
- package/lib/models/listener.js +0 -66
- package/lib/models/map-model.js +0 -59
- package/lib/models/model.js +0 -1
- package/lib/models/object-model.js +0 -78
- package/lib/models/set-model.js +0 -55
- package/lib/spec/html.js +0 -1
- package/lib/spec/react.js +0 -1
- package/lib/spec/svg.js +0 -1
- package/lib/tsconfig-build.tsbuildinfo +0 -1
- package/lib/value/mirror.js +0 -42
- package/lib/views/object-view.js +0 -17
- package/lib-node/binding/attribute.js +0 -34
- package/lib-node/binding/binding.js +0 -32
- package/lib-node/binding/class.js +0 -46
- package/lib-node/binding/style.js +0 -36
- package/lib-node/core/config.js +0 -6
- package/lib-node/core/core.js +0 -101
- package/lib-node/core/destroyable.js +0 -14
- package/lib-node/core/errors.js +0 -22
- package/lib-node/core/ivalue.js +0 -19
- package/lib-node/functional/options.js +0 -2
- package/lib-node/functional/safety.js +0 -12
- package/lib-node/index.js +0 -51
- package/lib-node/models/array-model.js +0 -152
- package/lib-node/models/listener.js +0 -70
- package/lib-node/models/map-model.js +0 -63
- package/lib-node/models/model.js +0 -2
- package/lib-node/models/object-model.js +0 -82
- package/lib-node/models/set-model.js +0 -59
- package/lib-node/node/app.js +0 -34
- package/lib-node/node/node.js +0 -656
- package/lib-node/node/watch.js +0 -26
- package/lib-node/spec/html.js +0 -2
- package/lib-node/spec/react.js +0 -2
- package/lib-node/spec/svg.js +0 -2
- package/lib-node/tsconfig-build-node.tsbuildinfo +0 -1
- package/lib-node/value/expression.js +0 -65
- package/lib-node/value/mirror.js +0 -46
- package/lib-node/value/pointer.js +0 -79
- package/lib-node/value/reference.js +0 -50
- package/lib-node/views/array-view.js +0 -21
- package/lib-node/views/base-view.js +0 -31
- package/lib-node/views/map-view.js +0 -18
- package/lib-node/views/object-view.js +0 -21
- package/lib-node/views/repeat-node.js +0 -53
- package/lib-node/views/set-view.js +0 -22
- package/types/binding/class.d.ts +0 -11
- package/types/core/config.d.ts +0 -3
- package/types/functional/options.d.ts +0 -10
- package/types/models/array-model.d.ts +0 -55
- package/types/models/listener.d.ts +0 -48
- package/types/models/map-model.d.ts +0 -34
- package/types/models/model.d.ts +0 -14
- package/types/models/object-model.d.ts +0 -38
- package/types/models/set-model.d.ts +0 -33
- package/types/spec/html.d.ts +0 -975
- package/types/spec/react.d.ts +0 -4
- package/types/spec/svg.d.ts +0 -314
- package/types/value/mirror.d.ts +0 -33
- package/types/views/object-view.d.ts +0 -10
- /package/lib/{functional/options.js → node/runner.js} +0 -0
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
import { Listener } from "./listener";
|
|
2
|
-
/**
|
|
3
|
-
* Model based on Array class
|
|
4
|
-
* @extends Array
|
|
5
|
-
* @implements IModel
|
|
6
|
-
*/
|
|
7
|
-
export class ArrayModel extends Array {
|
|
8
|
-
/**
|
|
9
|
-
* @param data {Array} input data
|
|
10
|
-
*/
|
|
11
|
-
constructor(data) {
|
|
12
|
-
super();
|
|
13
|
-
this.passive = false;
|
|
14
|
-
this.listener = new Listener();
|
|
15
|
-
if (data instanceof Array) {
|
|
16
|
-
for (let i = 0; i < data.length; i++) {
|
|
17
|
-
super.push(data[i]);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
/* Array members */
|
|
22
|
-
/**
|
|
23
|
-
* Calls Array.fill and notify about changes
|
|
24
|
-
* @param value {*} value to fill with
|
|
25
|
-
* @param start {?number} begin index
|
|
26
|
-
* @param end {?number} end index
|
|
27
|
-
*/
|
|
28
|
-
fill(value, start, end) {
|
|
29
|
-
this.passive = true;
|
|
30
|
-
if (!start) {
|
|
31
|
-
start = 0;
|
|
32
|
-
}
|
|
33
|
-
if (!end) {
|
|
34
|
-
end = this.length;
|
|
35
|
-
}
|
|
36
|
-
for (let i = start; i < end; i++) {
|
|
37
|
-
this.listener.emitRemoved(this[i], this[i]);
|
|
38
|
-
this[i] = value;
|
|
39
|
-
this.listener.emitAdded(value, value);
|
|
40
|
-
}
|
|
41
|
-
this.passive = false;
|
|
42
|
-
return this;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Calls Array.pop and notify about changes
|
|
46
|
-
* @return {*} removed value
|
|
47
|
-
*/
|
|
48
|
-
pop() {
|
|
49
|
-
this.passive = true;
|
|
50
|
-
const v = super.pop();
|
|
51
|
-
if (v !== undefined) {
|
|
52
|
-
this.listener.emitRemoved(v, v);
|
|
53
|
-
}
|
|
54
|
-
this.passive = false;
|
|
55
|
-
return v;
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Calls Array.push and notify about changes
|
|
59
|
-
* @param items {...*} values to push
|
|
60
|
-
* @return {number} new length of array
|
|
61
|
-
*/
|
|
62
|
-
push(...items) {
|
|
63
|
-
this.passive = true;
|
|
64
|
-
items.forEach(item => {
|
|
65
|
-
this.listener.emitAdded(item, item);
|
|
66
|
-
super.push(item);
|
|
67
|
-
});
|
|
68
|
-
this.passive = false;
|
|
69
|
-
return this.length;
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Calls Array.shift and notify about changed
|
|
73
|
-
* @return {*} the shifted value
|
|
74
|
-
*/
|
|
75
|
-
shift() {
|
|
76
|
-
this.passive = true;
|
|
77
|
-
const v = super.shift();
|
|
78
|
-
if (v !== undefined) {
|
|
79
|
-
this.listener.emitRemoved(v, v);
|
|
80
|
-
}
|
|
81
|
-
this.passive = false;
|
|
82
|
-
return v;
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Calls Array.splice and notify about changed
|
|
86
|
-
* @param start {number} start index
|
|
87
|
-
* @param deleteCount {?number} delete count
|
|
88
|
-
* @param items {...*}
|
|
89
|
-
* @return {ArrayModel} a pointer to this
|
|
90
|
-
*/
|
|
91
|
-
splice(start, deleteCount, ...items) {
|
|
92
|
-
this.passive = true;
|
|
93
|
-
start = Math.min(start, this.length);
|
|
94
|
-
deleteCount = typeof deleteCount === "number" ? deleteCount : this.length - start;
|
|
95
|
-
const before = this[start + deleteCount];
|
|
96
|
-
for (let i = 0; i < deleteCount; i++) {
|
|
97
|
-
const index = start + deleteCount - i - 1;
|
|
98
|
-
if (this[index] !== undefined) {
|
|
99
|
-
this.listener.emitRemoved(this[index], this[index]);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
for (let i = 0; i < items.length; i++) {
|
|
103
|
-
this.listener.emitAdded(before, items[i]);
|
|
104
|
-
}
|
|
105
|
-
this.passive = false;
|
|
106
|
-
return new ArrayModel(super.splice(start, deleteCount, ...items));
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Calls Array.unshift and notify about changed
|
|
110
|
-
* @param items {...*} values to insert
|
|
111
|
-
* @return {number} the length after prepend
|
|
112
|
-
*/
|
|
113
|
-
unshift(...items) {
|
|
114
|
-
this.passive = true;
|
|
115
|
-
for (let i = 0; i < items.length; i++) {
|
|
116
|
-
this.listener.emitAdded(this[i], items[i]);
|
|
117
|
-
}
|
|
118
|
-
const r = super.unshift(...items);
|
|
119
|
-
this.passive = false;
|
|
120
|
-
return r;
|
|
121
|
-
}
|
|
122
|
-
replace(at, with_) {
|
|
123
|
-
this.passive = true;
|
|
124
|
-
this.listener.emitAdded(this[at], with_);
|
|
125
|
-
this.listener.emitRemoved(this[at], this[at]);
|
|
126
|
-
this[at] = with_;
|
|
127
|
-
this.passive = false;
|
|
128
|
-
return this;
|
|
129
|
-
}
|
|
130
|
-
destroy() {
|
|
131
|
-
this.splice(0);
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
export function proxyArrayModel(arr) {
|
|
135
|
-
return new Proxy(arr, {
|
|
136
|
-
set(target, p, newValue, receiver) {
|
|
137
|
-
if (!arr.passive && typeof p === "string") {
|
|
138
|
-
const index = parseInt(p);
|
|
139
|
-
if (Number.isFinite(index)) {
|
|
140
|
-
arr.replace(index, newValue);
|
|
141
|
-
return true;
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
return Reflect.set(target, p, newValue, receiver);
|
|
145
|
-
},
|
|
146
|
-
});
|
|
147
|
-
}
|
package/lib/models/listener.js
DELETED
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Represent a listener for a model
|
|
3
|
-
* @class Listener
|
|
4
|
-
*/
|
|
5
|
-
export class Listener {
|
|
6
|
-
constructor() {
|
|
7
|
-
/**
|
|
8
|
-
* Functions to run on adding new items
|
|
9
|
-
* @type Set
|
|
10
|
-
*/
|
|
11
|
-
this.onAdded = new Set();
|
|
12
|
-
/**
|
|
13
|
-
* Functions to run on item removing
|
|
14
|
-
* @type Set
|
|
15
|
-
*/
|
|
16
|
-
this.onRemoved = new Set();
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Emits added event to listeners
|
|
20
|
-
* @param index {*} index of value
|
|
21
|
-
* @param value {*} value of added item
|
|
22
|
-
*/
|
|
23
|
-
emitAdded(index, value) {
|
|
24
|
-
this.onAdded.forEach(handler => {
|
|
25
|
-
handler(index, value);
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Emits removed event to listeners
|
|
30
|
-
* @param index {*} index of removed value
|
|
31
|
-
* @param value {*} value of removed item
|
|
32
|
-
*/
|
|
33
|
-
emitRemoved(index, value) {
|
|
34
|
-
this.onRemoved.forEach(handler => {
|
|
35
|
-
handler(index, value);
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Adds a handler to added event
|
|
40
|
-
* @param handler {function} function to run on event emitting
|
|
41
|
-
*/
|
|
42
|
-
onAdd(handler) {
|
|
43
|
-
this.onAdded.add(handler);
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Adds a handler to removed event
|
|
47
|
-
* @param handler {function} function to run on event emitting
|
|
48
|
-
*/
|
|
49
|
-
onRemove(handler) {
|
|
50
|
-
this.onRemoved.add(handler);
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Removes an handler from added event
|
|
54
|
-
* @param handler {function} handler to remove
|
|
55
|
-
*/
|
|
56
|
-
offAdd(handler) {
|
|
57
|
-
this.onAdded.delete(handler);
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Removes an handler form removed event
|
|
61
|
-
* @param handler {function} handler to remove
|
|
62
|
-
*/
|
|
63
|
-
offRemove(handler) {
|
|
64
|
-
this.onRemoved.delete(handler);
|
|
65
|
-
}
|
|
66
|
-
}
|
package/lib/models/map-model.js
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import { Listener } from "./listener";
|
|
2
|
-
/**
|
|
3
|
-
* A Map based memory
|
|
4
|
-
* @class MapModel
|
|
5
|
-
* @extends Map
|
|
6
|
-
* @implements IModel
|
|
7
|
-
*/
|
|
8
|
-
export class MapModel extends Map {
|
|
9
|
-
/**
|
|
10
|
-
* Constructs a map model
|
|
11
|
-
* @param map {[*, *][]} input data
|
|
12
|
-
*/
|
|
13
|
-
constructor(map) {
|
|
14
|
-
super();
|
|
15
|
-
this.listener = new Listener();
|
|
16
|
-
map === null || map === void 0 ? void 0 : map.forEach(([key, value]) => {
|
|
17
|
-
super.set(key, value);
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Calls Map.clear and notify about changes
|
|
22
|
-
*/
|
|
23
|
-
clear() {
|
|
24
|
-
this.forEach((value, key) => {
|
|
25
|
-
this.listener.emitRemoved(key, value);
|
|
26
|
-
});
|
|
27
|
-
super.clear();
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Calls Map.delete and notify abut changes
|
|
31
|
-
* @param key {*} key
|
|
32
|
-
* @return {boolean} true if removed something, otherwise false
|
|
33
|
-
*/
|
|
34
|
-
delete(key) {
|
|
35
|
-
const tmp = super.get(key);
|
|
36
|
-
if (tmp) {
|
|
37
|
-
this.listener.emitRemoved(key, tmp);
|
|
38
|
-
}
|
|
39
|
-
return super.delete(key);
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Calls Map.set and notify abut changes
|
|
43
|
-
* @param key {*} key
|
|
44
|
-
* @param value {*} value
|
|
45
|
-
* @return {MapModel} a pointer to this
|
|
46
|
-
*/
|
|
47
|
-
set(key, value) {
|
|
48
|
-
const tmp = super.get(key);
|
|
49
|
-
if (tmp) {
|
|
50
|
-
this.listener.emitRemoved(key, tmp);
|
|
51
|
-
}
|
|
52
|
-
super.set(key, value);
|
|
53
|
-
this.listener.emitAdded(key, value);
|
|
54
|
-
return this;
|
|
55
|
-
}
|
|
56
|
-
destroy() {
|
|
57
|
-
this.clear();
|
|
58
|
-
}
|
|
59
|
-
}
|
package/lib/models/model.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import { Listener } from "./listener";
|
|
2
|
-
/**
|
|
3
|
-
* Object based model
|
|
4
|
-
* @extends Object
|
|
5
|
-
*/
|
|
6
|
-
export class ObjectModel extends Object {
|
|
7
|
-
/**
|
|
8
|
-
* Constructs a object model
|
|
9
|
-
* @param obj {Object} input data
|
|
10
|
-
*/
|
|
11
|
-
constructor(obj = {}) {
|
|
12
|
-
super();
|
|
13
|
-
this.container = Object.create(null);
|
|
14
|
-
Object.defineProperty(this, "listener", {
|
|
15
|
-
value: new Listener(),
|
|
16
|
-
writable: false,
|
|
17
|
-
configurable: false,
|
|
18
|
-
});
|
|
19
|
-
for (const i in obj) {
|
|
20
|
-
Object.defineProperty(this.container, i, {
|
|
21
|
-
value: obj[i],
|
|
22
|
-
configurable: true,
|
|
23
|
-
writable: true,
|
|
24
|
-
enumerable: true,
|
|
25
|
-
});
|
|
26
|
-
this.listener.emitAdded(i, obj[i]);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Gets a value of a field
|
|
31
|
-
* @param key {string}
|
|
32
|
-
* @return {*}
|
|
33
|
-
*/
|
|
34
|
-
get(key) {
|
|
35
|
-
return this.container[key];
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Sets an object property value
|
|
39
|
-
* @param key {string} property name
|
|
40
|
-
* @param v {*} property value
|
|
41
|
-
* @return {ObjectModel} a pointer to this
|
|
42
|
-
*/
|
|
43
|
-
set(key, v) {
|
|
44
|
-
if (key in this.container) {
|
|
45
|
-
this.listener.emitRemoved(key, this.container[key]);
|
|
46
|
-
this.container[key] = v;
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
Object.defineProperty(this.container, key, {
|
|
50
|
-
value: v,
|
|
51
|
-
configurable: true,
|
|
52
|
-
writable: true,
|
|
53
|
-
enumerable: true,
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
this.listener.emitAdded(key, this.container[key]);
|
|
57
|
-
return this;
|
|
58
|
-
}
|
|
59
|
-
get values() {
|
|
60
|
-
return this.container;
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Deletes an object property
|
|
64
|
-
* @param key {string} property name
|
|
65
|
-
*/
|
|
66
|
-
delete(key) {
|
|
67
|
-
if (this.container[key]) {
|
|
68
|
-
this.listener.emitRemoved(key, this.container[key]);
|
|
69
|
-
delete this.container[key];
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
enableReactivity() {
|
|
73
|
-
this.listener.enableReactivity();
|
|
74
|
-
}
|
|
75
|
-
disableReactivity() {
|
|
76
|
-
this.listener.disableReactivity();
|
|
77
|
-
}
|
|
78
|
-
}
|
package/lib/models/set-model.js
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { Listener } from "./listener";
|
|
2
|
-
/**
|
|
3
|
-
* A Set based model
|
|
4
|
-
* @class SetModel
|
|
5
|
-
* @extends Set
|
|
6
|
-
* @implements IModel
|
|
7
|
-
*/
|
|
8
|
-
export class SetModel extends Set {
|
|
9
|
-
/**
|
|
10
|
-
* Constructs a set model based on a set
|
|
11
|
-
* @param set {Set} input data
|
|
12
|
-
*/
|
|
13
|
-
constructor(set) {
|
|
14
|
-
super();
|
|
15
|
-
this.listener = new Listener();
|
|
16
|
-
set === null || set === void 0 ? void 0 : set.forEach(item => {
|
|
17
|
-
super.add(item);
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Calls Set.add and notify abut changes
|
|
22
|
-
* @param value {*} value
|
|
23
|
-
* @return {this} a pointer to this
|
|
24
|
-
*/
|
|
25
|
-
add(value) {
|
|
26
|
-
if (!super.has(value)) {
|
|
27
|
-
this.listener.emitAdded(value, value);
|
|
28
|
-
super.add(value);
|
|
29
|
-
}
|
|
30
|
-
return this;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Calls Set.clear and notify abut changes
|
|
34
|
-
*/
|
|
35
|
-
clear() {
|
|
36
|
-
this.forEach(item => {
|
|
37
|
-
this.listener.emitRemoved(item, item);
|
|
38
|
-
});
|
|
39
|
-
super.clear();
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Calls Set.delete and notify abut changes
|
|
43
|
-
* @param value {*}
|
|
44
|
-
* @return {boolean} true if a value was deleted, otherwise false
|
|
45
|
-
*/
|
|
46
|
-
delete(value) {
|
|
47
|
-
if (super.has(value)) {
|
|
48
|
-
this.listener.emitRemoved(value, value);
|
|
49
|
-
}
|
|
50
|
-
return super.delete(value);
|
|
51
|
-
}
|
|
52
|
-
destroy() {
|
|
53
|
-
this.clear();
|
|
54
|
-
}
|
|
55
|
-
}
|
package/lib/spec/html.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/lib/spec/react.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/lib/spec/svg.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"root":["../src/index.ts","../src/binding/attribute.ts","../src/binding/binding.ts","../src/binding/class.ts","../src/binding/style.ts","../src/core/core.ts","../src/core/destroyable.ts","../src/core/errors.ts","../src/core/ivalue.ts","../src/functional/options.ts","../src/functional/safety.ts","../src/models/array-model.ts","../src/models/listener.ts","../src/models/map-model.ts","../src/models/model.ts","../src/models/object-model.ts","../src/models/set-model.ts","../src/node/app.ts","../src/node/node.ts","../src/node/watch.ts","../src/spec/html.ts","../src/spec/react.ts","../src/spec/svg.ts","../src/value/expression.ts","../src/value/mirror.ts","../src/value/pointer.ts","../src/value/reference.ts","../src/views/array-view.ts","../src/views/base-view.ts","../src/views/map-view.ts","../src/views/object-view.ts","../src/views/repeat-node.ts","../src/views/set-view.ts"],"version":"5.6.2"}
|
package/lib/value/mirror.js
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { Reference } from "./reference";
|
|
2
|
-
/**
|
|
3
|
-
* Declares a notifiable bind to a value
|
|
4
|
-
* @class Mirror
|
|
5
|
-
* @extends IValue
|
|
6
|
-
* @version 2
|
|
7
|
-
*/
|
|
8
|
-
export class Mirror extends Reference {
|
|
9
|
-
/**
|
|
10
|
-
* Constructs a notifiable bind to a value
|
|
11
|
-
* @param value {IValue} is initial value
|
|
12
|
-
* @param forwardOnly {boolean} ensure forward only synchronization
|
|
13
|
-
*/
|
|
14
|
-
constructor(value, forwardOnly = false) {
|
|
15
|
-
super(value.$);
|
|
16
|
-
this.handler = (v) => {
|
|
17
|
-
this.$ = v;
|
|
18
|
-
};
|
|
19
|
-
this.value = value;
|
|
20
|
-
this.forward = forwardOnly;
|
|
21
|
-
value.on(this.handler);
|
|
22
|
-
}
|
|
23
|
-
get $() {
|
|
24
|
-
// this is a ts bug
|
|
25
|
-
// eslint-disable-next-line
|
|
26
|
-
// @ts-ignore
|
|
27
|
-
return super.$;
|
|
28
|
-
}
|
|
29
|
-
set $(v) {
|
|
30
|
-
if (!this.forward) {
|
|
31
|
-
this.value.$ = v;
|
|
32
|
-
}
|
|
33
|
-
// this is a ts bug
|
|
34
|
-
// eslint-disable-next-line
|
|
35
|
-
// @ts-ignore
|
|
36
|
-
super.$ = v;
|
|
37
|
-
}
|
|
38
|
-
destroy() {
|
|
39
|
-
this.value.off(this.handler);
|
|
40
|
-
super.destroy();
|
|
41
|
-
}
|
|
42
|
-
}
|
package/lib/views/object-view.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { BaseView } from "./base-view";
|
|
2
|
-
/**
|
|
3
|
-
* Create a children pack for each object field
|
|
4
|
-
* @class ObjectView
|
|
5
|
-
* @extends BaseView
|
|
6
|
-
*/
|
|
7
|
-
export class ObjectView extends BaseView {
|
|
8
|
-
compose(input) {
|
|
9
|
-
super.compose(input);
|
|
10
|
-
const obj = input.model.values;
|
|
11
|
-
for (const key in obj) {
|
|
12
|
-
this.createChild(input, key, obj[key]);
|
|
13
|
-
}
|
|
14
|
-
super.ready();
|
|
15
|
-
return {};
|
|
16
|
-
}
|
|
17
|
-
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AttributeBinding = void 0;
|
|
4
|
-
const binding_1 = require("./binding");
|
|
5
|
-
/**
|
|
6
|
-
* Represents an Attribute binding description
|
|
7
|
-
* @class AttributeBinding
|
|
8
|
-
* @extends Binding
|
|
9
|
-
*/
|
|
10
|
-
class AttributeBinding extends binding_1.Binding {
|
|
11
|
-
/**
|
|
12
|
-
* Constructs an attribute binding description
|
|
13
|
-
* @param node {INode} the vasille node
|
|
14
|
-
* @param name {String} the name of attribute
|
|
15
|
-
* @param value {IValue} value to bind
|
|
16
|
-
*/
|
|
17
|
-
constructor(node, name, value) {
|
|
18
|
-
super(value);
|
|
19
|
-
this.init((value) => {
|
|
20
|
-
if (value) {
|
|
21
|
-
if (typeof value === "boolean") {
|
|
22
|
-
node.element.setAttribute(name, "");
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
node.element.setAttribute(name, `${value}`);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
node.element.removeAttribute(name);
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
exports.AttributeBinding = AttributeBinding;
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Binding = void 0;
|
|
4
|
-
const destroyable_1 = require("../core/destroyable");
|
|
5
|
-
/**
|
|
6
|
-
* Describe a common binding logic
|
|
7
|
-
* @class Binding
|
|
8
|
-
* @extends Destroyable
|
|
9
|
-
*/
|
|
10
|
-
class Binding extends destroyable_1.Destroyable {
|
|
11
|
-
/**
|
|
12
|
-
* Constructs a common binding logic
|
|
13
|
-
* @param value {IValue} the value to bind
|
|
14
|
-
*/
|
|
15
|
-
constructor(value) {
|
|
16
|
-
super();
|
|
17
|
-
this.binding = value;
|
|
18
|
-
}
|
|
19
|
-
init(bounded) {
|
|
20
|
-
this.func = bounded;
|
|
21
|
-
this.binding.on(this.func);
|
|
22
|
-
this.func(this.binding.$);
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Just clear bindings
|
|
26
|
-
*/
|
|
27
|
-
destroy() {
|
|
28
|
-
this.binding.off(this.func);
|
|
29
|
-
super.destroy();
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
exports.Binding = Binding;
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DynamicalClassBinding = exports.StaticClassBinding = void 0;
|
|
4
|
-
const binding_1 = require("./binding");
|
|
5
|
-
function addClass(node, cl) {
|
|
6
|
-
node.element.classList.add(cl);
|
|
7
|
-
}
|
|
8
|
-
function removeClass(node, cl) {
|
|
9
|
-
node.element.classList.remove(cl);
|
|
10
|
-
}
|
|
11
|
-
class StaticClassBinding extends binding_1.Binding {
|
|
12
|
-
constructor(node, name, value) {
|
|
13
|
-
super(value);
|
|
14
|
-
this.current = false;
|
|
15
|
-
this.init((value) => {
|
|
16
|
-
if (value !== this.current) {
|
|
17
|
-
if (value) {
|
|
18
|
-
addClass(node, name);
|
|
19
|
-
}
|
|
20
|
-
else {
|
|
21
|
-
removeClass(node, name);
|
|
22
|
-
}
|
|
23
|
-
this.current = value;
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
exports.StaticClassBinding = StaticClassBinding;
|
|
29
|
-
class DynamicalClassBinding extends binding_1.Binding {
|
|
30
|
-
constructor(node, value) {
|
|
31
|
-
super(value);
|
|
32
|
-
this.current = "";
|
|
33
|
-
this.init((value) => {
|
|
34
|
-
if (this.current != value) {
|
|
35
|
-
if (this.current.length) {
|
|
36
|
-
removeClass(node, this.current);
|
|
37
|
-
}
|
|
38
|
-
if (value.length) {
|
|
39
|
-
addClass(node, value);
|
|
40
|
-
}
|
|
41
|
-
this.current = value;
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
exports.DynamicalClassBinding = DynamicalClassBinding;
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.StyleBinding = void 0;
|
|
4
|
-
exports.stringifyStyleValue = stringifyStyleValue;
|
|
5
|
-
const binding_1 = require("./binding");
|
|
6
|
-
function stringifyStyleValue(value) {
|
|
7
|
-
if (value instanceof Array) {
|
|
8
|
-
return value.map(item => `${item}px`).join(" ");
|
|
9
|
-
}
|
|
10
|
-
if (typeof value === "number") {
|
|
11
|
-
return `${value}px`;
|
|
12
|
-
}
|
|
13
|
-
return value;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Describes a style attribute binding
|
|
17
|
-
* @class StyleBinding
|
|
18
|
-
* @extends Binding
|
|
19
|
-
*/
|
|
20
|
-
class StyleBinding extends binding_1.Binding {
|
|
21
|
-
/**
|
|
22
|
-
* Constructs a style binding attribute
|
|
23
|
-
* @param node {INode} the vasille node
|
|
24
|
-
* @param name {string} the name of style property
|
|
25
|
-
* @param value {IValue} the value to bind
|
|
26
|
-
*/
|
|
27
|
-
constructor(node, name, value) {
|
|
28
|
-
super(value);
|
|
29
|
-
this.init(value => {
|
|
30
|
-
if (node.element instanceof HTMLElement) {
|
|
31
|
-
node.element.style.setProperty(name, stringifyStyleValue(value));
|
|
32
|
-
}
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
exports.StyleBinding = StyleBinding;
|