vasille 2.3.8 → 3.0.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 +122 -0
- package/lib/binding/attribute.js +4 -5
- package/lib/binding/binding.js +4 -5
- package/lib/binding/class.js +2 -4
- package/lib/binding/style.js +12 -4
- package/lib/core/config.js +3 -0
- package/lib/core/core.js +39 -177
- package/lib/core/destroyable.js +1 -36
- package/lib/core/ivalue.js +6 -49
- package/lib/functional/safety.js +7 -0
- package/lib/index.js +7 -8
- package/lib/models/array-model.js +40 -107
- package/lib/models/listener.js +16 -80
- package/lib/models/map-model.js +6 -13
- package/lib/models/object-model.js +6 -6
- package/lib/models/set-model.js +5 -12
- package/lib/node/app.js +8 -27
- package/lib/node/node.js +294 -524
- package/lib/node/watch.js +10 -8
- package/lib/tsconfig-build.tsbuildinfo +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -0
- package/lib/value/expression.js +16 -41
- package/lib/value/mirror.js +9 -23
- package/lib/value/pointer.js +64 -16
- package/lib/value/reference.js +24 -29
- package/lib/views/array-view.js +5 -6
- package/lib/views/base-view.js +14 -26
- package/lib/views/map-view.js +4 -5
- package/lib/views/repeat-node.js +17 -34
- package/lib/views/set-view.js +7 -5
- package/lib-node/binding/attribute.js +4 -5
- package/lib-node/binding/binding.js +4 -5
- package/lib-node/binding/class.js +2 -4
- package/lib-node/binding/style.js +13 -4
- package/lib-node/core/config.js +6 -0
- package/lib-node/core/core.js +39 -180
- package/lib-node/core/destroyable.js +1 -36
- package/lib-node/core/ivalue.js +7 -51
- package/lib-node/functional/safety.js +12 -0
- package/lib-node/index.js +7 -12
- package/lib-node/models/array-model.js +41 -107
- package/lib-node/models/listener.js +16 -80
- package/lib-node/models/map-model.js +6 -13
- package/lib-node/models/object-model.js +6 -6
- package/lib-node/models/set-model.js +5 -12
- package/lib-node/node/app.js +8 -28
- package/lib-node/node/node.js +294 -529
- package/lib-node/node/watch.js +10 -8
- package/lib-node/tsconfig-build-node.tsbuildinfo +1 -1
- package/lib-node/value/expression.js +16 -41
- package/lib-node/value/mirror.js +9 -23
- package/lib-node/value/pointer.js +66 -17
- package/lib-node/value/reference.js +24 -29
- package/lib-node/views/array-view.js +5 -6
- package/lib-node/views/base-view.js +14 -27
- package/lib-node/views/map-view.js +4 -5
- package/lib-node/views/repeat-node.js +17 -35
- package/lib-node/views/set-view.js +7 -5
- package/package.json +4 -4
- package/types/binding/attribute.d.ts +2 -2
- package/types/binding/binding.d.ts +1 -1
- package/types/binding/style.d.ts +3 -2
- package/types/core/config.d.ts +3 -0
- package/types/core/core.d.ts +18 -93
- package/types/core/destroyable.d.ts +11 -6
- package/types/core/ivalue.d.ts +7 -24
- package/types/functional/options.d.ts +7 -22
- package/types/functional/safety.d.ts +2 -0
- package/types/index.d.ts +8 -10
- package/types/models/array-model.d.ts +6 -55
- package/types/models/listener.d.ts +0 -26
- package/types/models/map-model.d.ts +3 -4
- package/types/models/model.d.ts +2 -9
- package/types/models/set-model.d.ts +1 -2
- package/types/node/app.d.ts +7 -25
- package/types/node/node.d.ts +105 -222
- package/types/node/watch.d.ts +4 -5
- package/types/spec/html.d.ts +231 -231
- package/types/spec/svg.d.ts +166 -166
- package/types/tsconfig-types.tsbuildinfo +1 -1
- package/types/value/expression.d.ts +5 -7
- package/types/value/mirror.d.ts +4 -6
- package/types/value/pointer.d.ts +26 -9
- package/types/value/reference.d.ts +6 -7
- package/types/views/array-view.d.ts +3 -3
- package/types/views/base-view.d.ts +15 -23
- package/types/views/map-view.d.ts +2 -2
- package/types/views/repeat-node.d.ts +9 -23
- package/types/views/set-view.d.ts +3 -2
- package/cdn/es2015.js +0 -2480
- package/flow-typed/vasille.js +0 -2613
|
@@ -8,25 +8,17 @@ export class ArrayModel extends Array {
|
|
|
8
8
|
/**
|
|
9
9
|
* @param data {Array} input data
|
|
10
10
|
*/
|
|
11
|
-
constructor(data
|
|
11
|
+
constructor(data) {
|
|
12
12
|
super();
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
super.push(data[i]);
|
|
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
|
+
}
|
|
20
19
|
}
|
|
21
20
|
}
|
|
22
21
|
/* Array members */
|
|
23
|
-
/**
|
|
24
|
-
* Gets the last item of array
|
|
25
|
-
* @return {*} the last item of array
|
|
26
|
-
*/
|
|
27
|
-
get last() {
|
|
28
|
-
return this.length ? this[this.length - 1] : null;
|
|
29
|
-
}
|
|
30
22
|
/**
|
|
31
23
|
* Calls Array.fill and notify about changes
|
|
32
24
|
* @param value {*} value to fill with
|
|
@@ -34,6 +26,7 @@ export class ArrayModel extends Array {
|
|
|
34
26
|
* @param end {?number} end index
|
|
35
27
|
*/
|
|
36
28
|
fill(value, start, end) {
|
|
29
|
+
this.passive = true;
|
|
37
30
|
if (!start) {
|
|
38
31
|
start = 0;
|
|
39
32
|
}
|
|
@@ -45,6 +38,7 @@ export class ArrayModel extends Array {
|
|
|
45
38
|
this[i] = value;
|
|
46
39
|
this.listener.emitAdded(value, value);
|
|
47
40
|
}
|
|
41
|
+
this.passive = false;
|
|
48
42
|
return this;
|
|
49
43
|
}
|
|
50
44
|
/**
|
|
@@ -52,10 +46,12 @@ export class ArrayModel extends Array {
|
|
|
52
46
|
* @return {*} removed value
|
|
53
47
|
*/
|
|
54
48
|
pop() {
|
|
49
|
+
this.passive = true;
|
|
55
50
|
const v = super.pop();
|
|
56
51
|
if (v !== undefined) {
|
|
57
52
|
this.listener.emitRemoved(v, v);
|
|
58
53
|
}
|
|
54
|
+
this.passive = false;
|
|
59
55
|
return v;
|
|
60
56
|
}
|
|
61
57
|
/**
|
|
@@ -64,10 +60,12 @@ export class ArrayModel extends Array {
|
|
|
64
60
|
* @return {number} new length of array
|
|
65
61
|
*/
|
|
66
62
|
push(...items) {
|
|
63
|
+
this.passive = true;
|
|
67
64
|
items.forEach(item => {
|
|
68
65
|
this.listener.emitAdded(item, item);
|
|
69
66
|
super.push(item);
|
|
70
67
|
});
|
|
68
|
+
this.passive = false;
|
|
71
69
|
return this.length;
|
|
72
70
|
}
|
|
73
71
|
/**
|
|
@@ -75,10 +73,12 @@ export class ArrayModel extends Array {
|
|
|
75
73
|
* @return {*} the shifted value
|
|
76
74
|
*/
|
|
77
75
|
shift() {
|
|
76
|
+
this.passive = true;
|
|
78
77
|
const v = super.shift();
|
|
79
78
|
if (v !== undefined) {
|
|
80
79
|
this.listener.emitRemoved(v, v);
|
|
81
80
|
}
|
|
81
|
+
this.passive = false;
|
|
82
82
|
return v;
|
|
83
83
|
}
|
|
84
84
|
/**
|
|
@@ -89,8 +89,9 @@ export class ArrayModel extends Array {
|
|
|
89
89
|
* @return {ArrayModel} a pointer to this
|
|
90
90
|
*/
|
|
91
91
|
splice(start, deleteCount, ...items) {
|
|
92
|
+
this.passive = true;
|
|
92
93
|
start = Math.min(start, this.length);
|
|
93
|
-
deleteCount = deleteCount
|
|
94
|
+
deleteCount = typeof deleteCount === "number" ? deleteCount : this.length - start;
|
|
94
95
|
const before = this[start + deleteCount];
|
|
95
96
|
for (let i = 0; i < deleteCount; i++) {
|
|
96
97
|
const index = start + deleteCount - i - 1;
|
|
@@ -101,6 +102,7 @@ export class ArrayModel extends Array {
|
|
|
101
102
|
for (let i = 0; i < items.length; i++) {
|
|
102
103
|
this.listener.emitAdded(before, items[i]);
|
|
103
104
|
}
|
|
105
|
+
this.passive = false;
|
|
104
106
|
return new ArrayModel(super.splice(start, deleteCount, ...items));
|
|
105
107
|
}
|
|
106
108
|
/**
|
|
@@ -109,106 +111,37 @@ export class ArrayModel extends Array {
|
|
|
109
111
|
* @return {number} the length after prepend
|
|
110
112
|
*/
|
|
111
113
|
unshift(...items) {
|
|
114
|
+
this.passive = true;
|
|
112
115
|
for (let i = 0; i < items.length; i++) {
|
|
113
116
|
this.listener.emitAdded(this[i], items[i]);
|
|
114
117
|
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
* Inserts a value to the end of array
|
|
119
|
-
* @param v {*} value to insert
|
|
120
|
-
*/
|
|
121
|
-
append(v) {
|
|
122
|
-
this.listener.emitAdded(null, v);
|
|
123
|
-
super.push(v);
|
|
124
|
-
return this;
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Clears array
|
|
128
|
-
* @return {this} a pointer to this
|
|
129
|
-
*/
|
|
130
|
-
clear() {
|
|
131
|
-
this.forEach(v => {
|
|
132
|
-
this.listener.emitRemoved(v, v);
|
|
133
|
-
});
|
|
134
|
-
super.splice(0);
|
|
135
|
-
return this;
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* Inserts a value to position `index`
|
|
139
|
-
* @param index {number} index to insert value
|
|
140
|
-
* @param v {*} value to insert
|
|
141
|
-
* @return {this} a pointer to this
|
|
142
|
-
*/
|
|
143
|
-
insert(index, v) {
|
|
144
|
-
this.listener.emitAdded(this[index], v);
|
|
145
|
-
super.splice(index, 0, v);
|
|
146
|
-
return this;
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Inserts a value to the beginning of array
|
|
150
|
-
* @param v {*} value to insert
|
|
151
|
-
* @return {this} a pointer to this
|
|
152
|
-
*/
|
|
153
|
-
prepend(v) {
|
|
154
|
-
this.listener.emitAdded(this[0], v);
|
|
155
|
-
super.unshift(v);
|
|
156
|
-
return this;
|
|
157
|
-
}
|
|
158
|
-
/**
|
|
159
|
-
* Removes a value from an index
|
|
160
|
-
* @param index {number} index of value to remove
|
|
161
|
-
* @return {this} a pointer to this
|
|
162
|
-
*/
|
|
163
|
-
removeAt(index) {
|
|
164
|
-
if (index > 0 && index < this.length) {
|
|
165
|
-
this.listener.emitRemoved(this[index], this[index]);
|
|
166
|
-
super.splice(index, 1);
|
|
167
|
-
}
|
|
168
|
-
return this;
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* Removes the first value of array
|
|
172
|
-
* @return {this} a pointer to this
|
|
173
|
-
*/
|
|
174
|
-
removeFirst() {
|
|
175
|
-
if (this.length) {
|
|
176
|
-
this.listener.emitRemoved(this[0], this[0]);
|
|
177
|
-
super.shift();
|
|
178
|
-
}
|
|
179
|
-
return this;
|
|
180
|
-
}
|
|
181
|
-
/**
|
|
182
|
-
* Removes the ast value of array
|
|
183
|
-
* @return {this} a pointer to this
|
|
184
|
-
*/
|
|
185
|
-
removeLast() {
|
|
186
|
-
const last = this.last;
|
|
187
|
-
if (last != null) {
|
|
188
|
-
this.listener.emitRemoved(this[this.length - 1], last);
|
|
189
|
-
super.pop();
|
|
190
|
-
}
|
|
191
|
-
return this;
|
|
192
|
-
}
|
|
193
|
-
/**
|
|
194
|
-
* Remove the first occurrence of value
|
|
195
|
-
* @param v {*} value to remove
|
|
196
|
-
* @return {this}
|
|
197
|
-
*/
|
|
198
|
-
removeOne(v) {
|
|
199
|
-
this.removeAt(this.indexOf(v));
|
|
200
|
-
return this;
|
|
118
|
+
const r = super.unshift(...items);
|
|
119
|
+
this.passive = false;
|
|
120
|
+
return r;
|
|
201
121
|
}
|
|
202
122
|
replace(at, with_) {
|
|
123
|
+
this.passive = true;
|
|
203
124
|
this.listener.emitAdded(this[at], with_);
|
|
204
125
|
this.listener.emitRemoved(this[at], this[at]);
|
|
205
126
|
this[at] = with_;
|
|
127
|
+
this.passive = false;
|
|
206
128
|
return this;
|
|
207
129
|
}
|
|
208
|
-
|
|
209
|
-
this.
|
|
210
|
-
}
|
|
211
|
-
disableReactivity() {
|
|
212
|
-
this.listener.disableReactivity();
|
|
130
|
+
destroy() {
|
|
131
|
+
this.splice(0);
|
|
213
132
|
}
|
|
214
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
CHANGED
|
@@ -4,41 +4,16 @@
|
|
|
4
4
|
*/
|
|
5
5
|
export class Listener {
|
|
6
6
|
constructor() {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
},
|
|
18
|
-
frozen: {
|
|
19
|
-
value: false,
|
|
20
|
-
writable: true,
|
|
21
|
-
configurable: false
|
|
22
|
-
},
|
|
23
|
-
queue: {
|
|
24
|
-
value: [],
|
|
25
|
-
writable: false,
|
|
26
|
-
configurable: false
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Exclude the repeated operation in queue
|
|
32
|
-
* @private
|
|
33
|
-
*/
|
|
34
|
-
excludeRepeat(index) {
|
|
35
|
-
this.queue.forEach((item, i) => {
|
|
36
|
-
if (item.index === index) {
|
|
37
|
-
this.queue.splice(i, 1);
|
|
38
|
-
return true;
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
return false;
|
|
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();
|
|
42
17
|
}
|
|
43
18
|
/**
|
|
44
19
|
* Emits added event to listeners
|
|
@@ -46,16 +21,9 @@ export class Listener {
|
|
|
46
21
|
* @param value {*} value of added item
|
|
47
22
|
*/
|
|
48
23
|
emitAdded(index, value) {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
this.onAdded.forEach(handler => {
|
|
56
|
-
handler(index, value);
|
|
57
|
-
});
|
|
58
|
-
}
|
|
24
|
+
this.onAdded.forEach(handler => {
|
|
25
|
+
handler(index, value);
|
|
26
|
+
});
|
|
59
27
|
}
|
|
60
28
|
/**
|
|
61
29
|
* Emits removed event to listeners
|
|
@@ -63,16 +31,9 @@ export class Listener {
|
|
|
63
31
|
* @param value {*} value of removed item
|
|
64
32
|
*/
|
|
65
33
|
emitRemoved(index, value) {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
this.onRemoved.forEach(handler => {
|
|
73
|
-
handler(index, value);
|
|
74
|
-
});
|
|
75
|
-
}
|
|
34
|
+
this.onRemoved.forEach(handler => {
|
|
35
|
+
handler(index, value);
|
|
36
|
+
});
|
|
76
37
|
}
|
|
77
38
|
/**
|
|
78
39
|
* Adds a handler to added event
|
|
@@ -102,29 +63,4 @@ export class Listener {
|
|
|
102
63
|
offRemove(handler) {
|
|
103
64
|
this.onRemoved.delete(handler);
|
|
104
65
|
}
|
|
105
|
-
/**
|
|
106
|
-
* Run all queued operation and enable reactivity
|
|
107
|
-
*/
|
|
108
|
-
enableReactivity() {
|
|
109
|
-
this.queue.forEach(item => {
|
|
110
|
-
if (item.sign) {
|
|
111
|
-
this.onAdded.forEach(handler => {
|
|
112
|
-
handler(item.index, item.value);
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
this.onRemoved.forEach(handler => {
|
|
117
|
-
handler(item.index, item.value);
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
|
-
});
|
|
121
|
-
this.queue.splice(0);
|
|
122
|
-
this.frozen = false;
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Disable the reactivity and enable the queue
|
|
126
|
-
*/
|
|
127
|
-
disableReactivity() {
|
|
128
|
-
this.frozen = true;
|
|
129
|
-
}
|
|
130
66
|
}
|
package/lib/models/map-model.js
CHANGED
|
@@ -10,19 +10,15 @@ export class MapModel extends Map {
|
|
|
10
10
|
* Constructs a map model
|
|
11
11
|
* @param map {[*, *][]} input data
|
|
12
12
|
*/
|
|
13
|
-
constructor(map
|
|
13
|
+
constructor(map) {
|
|
14
14
|
super();
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
writable: false,
|
|
18
|
-
configurable: false
|
|
19
|
-
});
|
|
20
|
-
map.forEach(([key, value]) => {
|
|
15
|
+
this.listener = new Listener();
|
|
16
|
+
map === null || map === void 0 ? void 0 : map.forEach(([key, value]) => {
|
|
21
17
|
super.set(key, value);
|
|
22
18
|
});
|
|
23
19
|
}
|
|
24
20
|
/**
|
|
25
|
-
* Calls Map.clear and notify
|
|
21
|
+
* Calls Map.clear and notify about changes
|
|
26
22
|
*/
|
|
27
23
|
clear() {
|
|
28
24
|
this.forEach((value, key) => {
|
|
@@ -57,10 +53,7 @@ export class MapModel extends Map {
|
|
|
57
53
|
this.listener.emitAdded(key, value);
|
|
58
54
|
return this;
|
|
59
55
|
}
|
|
60
|
-
|
|
61
|
-
this.
|
|
62
|
-
}
|
|
63
|
-
disableReactivity() {
|
|
64
|
-
this.listener.disableReactivity();
|
|
56
|
+
destroy() {
|
|
57
|
+
this.clear();
|
|
65
58
|
}
|
|
66
59
|
}
|
|
@@ -11,17 +11,17 @@ export class ObjectModel extends Object {
|
|
|
11
11
|
constructor(obj = {}) {
|
|
12
12
|
super();
|
|
13
13
|
this.container = Object.create(null);
|
|
14
|
-
Object.defineProperty(this,
|
|
15
|
-
value: new Listener,
|
|
14
|
+
Object.defineProperty(this, "listener", {
|
|
15
|
+
value: new Listener(),
|
|
16
16
|
writable: false,
|
|
17
|
-
configurable: false
|
|
17
|
+
configurable: false,
|
|
18
18
|
});
|
|
19
19
|
for (const i in obj) {
|
|
20
20
|
Object.defineProperty(this.container, i, {
|
|
21
21
|
value: obj[i],
|
|
22
22
|
configurable: true,
|
|
23
23
|
writable: true,
|
|
24
|
-
enumerable: true
|
|
24
|
+
enumerable: true,
|
|
25
25
|
});
|
|
26
26
|
this.listener.emitAdded(i, obj[i]);
|
|
27
27
|
}
|
|
@@ -41,7 +41,7 @@ export class ObjectModel extends Object {
|
|
|
41
41
|
* @return {ObjectModel} a pointer to this
|
|
42
42
|
*/
|
|
43
43
|
set(key, v) {
|
|
44
|
-
if (
|
|
44
|
+
if (key in this.container) {
|
|
45
45
|
this.listener.emitRemoved(key, this.container[key]);
|
|
46
46
|
this.container[key] = v;
|
|
47
47
|
}
|
|
@@ -50,7 +50,7 @@ export class ObjectModel extends Object {
|
|
|
50
50
|
value: v,
|
|
51
51
|
configurable: true,
|
|
52
52
|
writable: true,
|
|
53
|
-
enumerable: true
|
|
53
|
+
enumerable: true,
|
|
54
54
|
});
|
|
55
55
|
}
|
|
56
56
|
this.listener.emitAdded(key, this.container[key]);
|
package/lib/models/set-model.js
CHANGED
|
@@ -10,14 +10,10 @@ export class SetModel extends Set {
|
|
|
10
10
|
* Constructs a set model based on a set
|
|
11
11
|
* @param set {Set} input data
|
|
12
12
|
*/
|
|
13
|
-
constructor(set
|
|
13
|
+
constructor(set) {
|
|
14
14
|
super();
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
writable: false,
|
|
18
|
-
configurable: false
|
|
19
|
-
});
|
|
20
|
-
set.forEach(item => {
|
|
15
|
+
this.listener = new Listener();
|
|
16
|
+
set === null || set === void 0 ? void 0 : set.forEach(item => {
|
|
21
17
|
super.add(item);
|
|
22
18
|
});
|
|
23
19
|
}
|
|
@@ -53,10 +49,7 @@ export class SetModel extends Set {
|
|
|
53
49
|
}
|
|
54
50
|
return super.delete(value);
|
|
55
51
|
}
|
|
56
|
-
|
|
57
|
-
this.
|
|
58
|
-
}
|
|
59
|
-
disableReactivity() {
|
|
60
|
-
this.listener.disableReactivity();
|
|
52
|
+
destroy() {
|
|
53
|
+
this.clear();
|
|
61
54
|
}
|
|
62
55
|
}
|
package/lib/node/app.js
CHANGED
|
@@ -1,25 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
/**
|
|
3
|
-
* Application Node
|
|
4
|
-
* @class AppNode
|
|
5
|
-
* @extends INode
|
|
6
|
-
*/
|
|
7
|
-
export class AppNode extends INode {
|
|
8
|
-
/**
|
|
9
|
-
* @param input
|
|
10
|
-
*/
|
|
11
|
-
constructor(input) {
|
|
12
|
-
super(input);
|
|
13
|
-
this.debugUi = input.debugUi || false;
|
|
14
|
-
this.$seal();
|
|
15
|
-
}
|
|
16
|
-
}
|
|
1
|
+
import { Fragment, Root } from "./node";
|
|
17
2
|
/**
|
|
18
3
|
* Represents a Vasille.js application
|
|
19
4
|
* @class App
|
|
20
5
|
* @extends AppNode
|
|
21
6
|
*/
|
|
22
|
-
export class App extends
|
|
7
|
+
export class App extends Root {
|
|
23
8
|
/**
|
|
24
9
|
* Constructs an app node
|
|
25
10
|
* @param node {Element} The root of application
|
|
@@ -27,22 +12,18 @@ export class App extends AppNode {
|
|
|
27
12
|
*/
|
|
28
13
|
constructor(node, input) {
|
|
29
14
|
super(input);
|
|
30
|
-
this
|
|
31
|
-
this.preinit(this, this);
|
|
32
|
-
this.init();
|
|
33
|
-
this.$seal();
|
|
15
|
+
this.node = node;
|
|
34
16
|
}
|
|
35
17
|
appendNode(node) {
|
|
36
|
-
this
|
|
18
|
+
this.node.appendChild(node);
|
|
37
19
|
}
|
|
38
20
|
}
|
|
39
|
-
export class Portal extends
|
|
21
|
+
export class Portal extends Fragment {
|
|
40
22
|
constructor(input) {
|
|
41
|
-
super(input);
|
|
42
|
-
this
|
|
43
|
-
this.$seal();
|
|
23
|
+
super(input, ":portal");
|
|
24
|
+
this.node = input.node;
|
|
44
25
|
}
|
|
45
26
|
appendNode(node) {
|
|
46
|
-
this
|
|
27
|
+
this.node.appendChild(node);
|
|
47
28
|
}
|
|
48
29
|
}
|