vasille 1.2.9 → 2.0.3
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/LICENSE.md +21 -0
- package/README.md +195 -129
- package/cdn/es2015.js +3231 -0
- package/cdn/es5.js +3675 -0
- package/flow-typed/vasille.js +839 -0
- package/lib/binding/attribute.js +32 -0
- package/lib/binding/binding.js +39 -0
- package/lib/binding/class.js +51 -0
- package/lib/binding/style.js +29 -0
- package/lib/core/core.js +186 -0
- package/lib/core/destroyable.js +45 -0
- package/lib/core/errors.js +16 -0
- package/lib/core/executor.js +154 -0
- package/lib/core/ivalue.js +56 -0
- package/lib/core/signal.js +50 -0
- package/lib/core/slot.js +47 -0
- package/lib/index.js +27 -22
- package/lib/models/array-model.js +208 -0
- package/lib/models/listener.js +130 -0
- package/lib/models/map-model.js +66 -0
- package/lib/models/model.js +1 -0
- package/lib/models/object-model.js +78 -0
- package/lib/models/set-model.js +62 -0
- package/lib/node/app.js +39 -0
- package/lib/node/interceptor.js +83 -0
- package/lib/node/node.js +1204 -0
- package/lib/node/watch.js +27 -0
- package/lib/value/expression.js +83 -0
- package/lib/value/mirror.js +58 -0
- package/lib/value/pointer.js +26 -0
- package/lib/value/reference.js +55 -0
- package/lib/views/array-view.js +21 -0
- package/lib/views/base-view.js +49 -0
- package/lib/views/map-view.js +19 -0
- package/lib/views/object-view.js +19 -0
- package/lib/views/repeat-node.js +106 -0
- package/lib/views/repeater.js +63 -0
- package/lib/views/set-view.js +22 -0
- package/package.json +26 -18
- package/types/binding/attribute.d.ts +23 -0
- package/types/binding/binding.d.ts +30 -0
- package/types/binding/class.d.ts +23 -0
- package/types/binding/style.d.ts +23 -0
- package/types/core/core.d.ts +144 -0
- package/types/core/destroyable.d.ts +15 -0
- package/types/core/errors.d.ts +4 -0
- package/types/core/executor.d.ts +87 -0
- package/types/core/ivalue.d.ts +45 -0
- package/types/core/signal.d.ts +35 -0
- package/types/core/slot.d.ts +45 -0
- package/types/index.d.ts +27 -21
- package/types/models/array-model.d.ts +103 -0
- package/types/models/listener.d.ts +74 -0
- package/types/models/map-model.d.ts +35 -0
- package/types/models/model.d.ts +19 -0
- package/types/models/object-model.d.ts +36 -0
- package/types/models/set-model.d.ts +34 -0
- package/types/node/app.d.ts +42 -0
- package/types/node/interceptor.d.ts +50 -0
- package/types/node/node.d.ts +741 -0
- package/types/node/watch.d.ts +23 -0
- package/types/value/expression.d.ts +60 -0
- package/types/value/mirror.d.ts +35 -0
- package/types/value/pointer.d.ts +19 -0
- package/types/value/reference.d.ts +30 -0
- package/types/views/array-view.d.ts +13 -0
- package/types/views/base-view.d.ts +43 -0
- package/types/views/map-view.d.ts +11 -0
- package/types/views/object-view.d.ts +11 -0
- package/types/views/repeat-node.d.ts +35 -0
- package/types/views/repeater.d.ts +38 -0
- package/types/views/set-view.d.ts +11 -0
- package/CHANGELOG.md +0 -23
- package/img/favicon.svg +0 -441
- package/img/getLocus.svg +0 -18
- package/img/logo.png +0 -0
- package/img/logo.svg +0 -550
- package/img/scores-o-log.png +0 -0
- package/img/scores-o.png +0 -0
- package/img/scores-wo-log.png +0 -0
- package/img/scores-wo.png +0 -0
- package/img/x1-x32.png +0 -0
- package/lib/attribute.js +0 -71
- package/lib/attribute.js.map +0 -1
- package/lib/bind.js +0 -286
- package/lib/bind.js.map +0 -1
- package/lib/class.js +0 -97
- package/lib/class.js.map +0 -1
- package/lib/executor.js +0 -167
- package/lib/executor.js.map +0 -1
- package/lib/index.js.map +0 -1
- package/lib/interfaces/core.js +0 -247
- package/lib/interfaces/core.js.map +0 -1
- package/lib/interfaces/destroyable.js +0 -39
- package/lib/interfaces/destroyable.js.map +0 -1
- package/lib/interfaces/errors.js +0 -49
- package/lib/interfaces/errors.js.map +0 -1
- package/lib/interfaces/ibind.js +0 -31
- package/lib/interfaces/ibind.js.map +0 -1
- package/lib/interfaces/idefinition.js +0 -64
- package/lib/interfaces/idefinition.js.map +0 -1
- package/lib/interfaces/ivalue.js +0 -60
- package/lib/interfaces/ivalue.js.map +0 -1
- package/lib/models.js +0 -579
- package/lib/models.js.map +0 -1
- package/lib/node.js +0 -2155
- package/lib/node.js.map +0 -1
- package/lib/property.js +0 -38
- package/lib/property.js.map +0 -1
- package/lib/style.js +0 -66
- package/lib/style.js.map +0 -1
- package/lib/value.js +0 -203
- package/lib/value.js.map +0 -1
- package/lib/views.js +0 -688
- package/lib/views.js.map +0 -1
- package/types/attribute.d.ts +0 -18
- package/types/bind.d.ts +0 -72
- package/types/class.d.ts +0 -19
- package/types/data.d.ts +0 -11
- package/types/event.d.ts +0 -10
- package/types/executor.d.ts +0 -57
- package/types/interfaces/core.d.ts +0 -129
- package/types/interfaces/destroyable.d.ts +0 -11
- package/types/interfaces/errors.d.ts +0 -24
- package/types/interfaces/ibind.d.ts +0 -19
- package/types/interfaces/idefinition.d.ts +0 -29
- package/types/interfaces/ivalue.d.ts +0 -40
- package/types/models.d.ts +0 -179
- package/types/node.d.ts +0 -906
- package/types/property.d.ts +0 -9
- package/types/style.d.ts +0 -28
- package/types/value.d.ts +0 -43
- package/types/views.d.ts +0 -135
package/lib/models.js
DELETED
|
@@ -1,579 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
import { IValue } from "./interfaces/ivalue.js";
|
|
3
|
-
import { Reference } from "./value.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Represent a listener for a model
|
|
9
|
-
*/
|
|
10
|
-
class Listener {
|
|
11
|
-
/**
|
|
12
|
-
* Functions to run on adding new items
|
|
13
|
-
* @type {Set<Function>}
|
|
14
|
-
*/
|
|
15
|
-
onAdded;
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Functions to run on item removing
|
|
19
|
-
* @type {Set<Function>}
|
|
20
|
-
*/
|
|
21
|
-
onRemoved;
|
|
22
|
-
|
|
23
|
-
constructor () {
|
|
24
|
-
Object.defineProperties(this, {
|
|
25
|
-
onAdded: {
|
|
26
|
-
value: new Set,
|
|
27
|
-
writable: false,
|
|
28
|
-
configurable: false
|
|
29
|
-
},
|
|
30
|
-
onRemoved: {
|
|
31
|
-
value: new Set,
|
|
32
|
-
writable: false,
|
|
33
|
-
configurable: false
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Emits added event to listeners
|
|
40
|
-
* @param index {number | string | *} index of value
|
|
41
|
-
* @param value {IValue} value of added item
|
|
42
|
-
*/
|
|
43
|
-
emitAdded (index, value) {
|
|
44
|
-
for (let handler of this.onAdded) {
|
|
45
|
-
handler(index, value);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Emits removed event to listeners
|
|
51
|
-
* @param index {number | string | *} index of removed value
|
|
52
|
-
* @param value {IValue} value of removed item
|
|
53
|
-
*/
|
|
54
|
-
emitRemoved (index, value) {
|
|
55
|
-
for (let handler of this.onRemoved) {
|
|
56
|
-
handler(index, value);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* Adds an handler to added event
|
|
62
|
-
* @param handler {Function} function to run on event emitting
|
|
63
|
-
*/
|
|
64
|
-
onAdd (handler) {
|
|
65
|
-
this.onAdded.add(handler);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* Adds an handler to removed event
|
|
70
|
-
* @param handler {Function} function to run on event emitting
|
|
71
|
-
*/
|
|
72
|
-
onRemove (handler) {
|
|
73
|
-
this.onRemoved.add(handler);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* Removes an handler from added event
|
|
78
|
-
* @param handler {Function} handler to remove
|
|
79
|
-
*/
|
|
80
|
-
offAdd (handler) {
|
|
81
|
-
this.onAdded.delete(handler);
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
/**
|
|
85
|
-
* Removes an handler form removed event
|
|
86
|
-
* @param handler {Function} handler to remove
|
|
87
|
-
*/
|
|
88
|
-
offRemove (handler) {
|
|
89
|
-
this.onRemoved.delete(handler);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
/**
|
|
94
|
-
* Model based on Array class
|
|
95
|
-
* @extends Array<IValue>
|
|
96
|
-
*/
|
|
97
|
-
export class ArrayModel extends Array {
|
|
98
|
-
/**
|
|
99
|
-
* Listener of array model
|
|
100
|
-
* @type {Listener}
|
|
101
|
-
*/
|
|
102
|
-
listener;
|
|
103
|
-
|
|
104
|
-
/* Constructor */
|
|
105
|
-
|
|
106
|
-
/**
|
|
107
|
-
* Constructs an array model from an array
|
|
108
|
-
* @param data {Array<IValue>} input data
|
|
109
|
-
*/
|
|
110
|
-
constructor (data = []) {
|
|
111
|
-
super();
|
|
112
|
-
|
|
113
|
-
ObjectModel.defineProperty(this, 'listener', {
|
|
114
|
-
value: new Listener,
|
|
115
|
-
writable: false,
|
|
116
|
-
customisable: false
|
|
117
|
-
});
|
|
118
|
-
|
|
119
|
-
for (let i = 0; i < data.length; i++) {
|
|
120
|
-
super.push(vassilify(data[i]));
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
/* Array members */
|
|
125
|
-
|
|
126
|
-
/**
|
|
127
|
-
* Gets the last value of array and null when it is empty
|
|
128
|
-
* @return {?IValue}
|
|
129
|
-
*/
|
|
130
|
-
get last () {
|
|
131
|
-
return this.length ? this[this.length - 1] : null;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
/**
|
|
135
|
-
* Calls Array.fill and notify about changes
|
|
136
|
-
* @param value {*} value to fill with
|
|
137
|
-
* @param start {?number} begin index
|
|
138
|
-
* @param end {?number} end index
|
|
139
|
-
* @return {ArrayModel} a pointer to this
|
|
140
|
-
*/
|
|
141
|
-
fill (value, start, end) {
|
|
142
|
-
if (!start) {
|
|
143
|
-
start = 0;
|
|
144
|
-
}
|
|
145
|
-
if (!end) {
|
|
146
|
-
end = this.length;
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
for (let i = start; i < end; i++) {
|
|
150
|
-
if (this[i] instanceof IValue) {
|
|
151
|
-
this[i].$ = value;
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
return this;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
/**
|
|
158
|
-
* Calls Array.pop and notify about changes
|
|
159
|
-
* @return {IValue} removed value
|
|
160
|
-
*/
|
|
161
|
-
pop () {
|
|
162
|
-
let v = super.pop();
|
|
163
|
-
|
|
164
|
-
if (v) {
|
|
165
|
-
this.listener.emitRemoved(this.length, v);
|
|
166
|
-
}
|
|
167
|
-
return v;
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
/**
|
|
171
|
-
* Calls Array.push and notify about changes
|
|
172
|
-
* @param items {...IValue} values to push
|
|
173
|
-
* @return {number} new length of array
|
|
174
|
-
*/
|
|
175
|
-
push (...items) {
|
|
176
|
-
for (let item of items) {
|
|
177
|
-
let v = vassilify(item);
|
|
178
|
-
|
|
179
|
-
this.listener.emitAdded(this.length, v);
|
|
180
|
-
super.push(v);
|
|
181
|
-
}
|
|
182
|
-
return this.length;
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
/**
|
|
186
|
-
* Calls Array.shift and notify about changed
|
|
187
|
-
* @return {IValue} the shifted value
|
|
188
|
-
*/
|
|
189
|
-
shift () {
|
|
190
|
-
let v = super.shift();
|
|
191
|
-
|
|
192
|
-
if (v) {
|
|
193
|
-
this.listener.emitRemoved(0, v);
|
|
194
|
-
}
|
|
195
|
-
return v;
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
/**
|
|
199
|
-
* Calls Array.splice and notify about changed
|
|
200
|
-
* @param start {number} start index
|
|
201
|
-
* @param deleteCount {?number} delete count
|
|
202
|
-
* @param items {...IValue}
|
|
203
|
-
* @return {ArrayModel} a pointer to this
|
|
204
|
-
*/
|
|
205
|
-
splice (
|
|
206
|
-
start,
|
|
207
|
-
deleteCount,
|
|
208
|
-
...items
|
|
209
|
-
) {
|
|
210
|
-
start = Math.min(start, this.length);
|
|
211
|
-
items = items ? items.map((v) => vassilify(v)) : [];
|
|
212
|
-
deleteCount = deleteCount || this.length - start;
|
|
213
|
-
|
|
214
|
-
for (let i = 0; i < deleteCount; i++) {
|
|
215
|
-
let index = start + deleteCount - i - 1;
|
|
216
|
-
if (this[index]) {
|
|
217
|
-
this.listener.emitRemoved(index, this[index]);
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
for (let i = 0; i < items.length; i++) {
|
|
221
|
-
this.listener.emitAdded(start + i, items[i]);
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
return new ArrayModel(super.splice(start, deleteCount, ...items));
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
/* Vasile.js array interface */
|
|
228
|
-
|
|
229
|
-
/**
|
|
230
|
-
* Calls Array.unshift and notify about changed
|
|
231
|
-
* @param items {...IValue} values to insert
|
|
232
|
-
* @return {number | void} the length after prepend
|
|
233
|
-
*/
|
|
234
|
-
unshift (...items) {
|
|
235
|
-
items = items.map((v) => vassilify(v));
|
|
236
|
-
|
|
237
|
-
for (let i = 0; i < items.length; i++) {
|
|
238
|
-
this.listener.emitAdded(i, items[i]);
|
|
239
|
-
}
|
|
240
|
-
return super.unshift(...items);
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
/**
|
|
244
|
-
* Inserts a value to the end of array
|
|
245
|
-
* @param v {*} value to insert
|
|
246
|
-
* @return {this} a pointer to this
|
|
247
|
-
*/
|
|
248
|
-
append (v) {
|
|
249
|
-
v = vassilify(v);
|
|
250
|
-
this.listener.emitAdded(this.length, v);
|
|
251
|
-
super.push(v);
|
|
252
|
-
return this;
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
/**
|
|
256
|
-
* Clears array
|
|
257
|
-
* @return {this} a pointer to this
|
|
258
|
-
*/
|
|
259
|
-
clear () {
|
|
260
|
-
for (let v of this) {
|
|
261
|
-
this.listener.emitRemoved(0, v);
|
|
262
|
-
}
|
|
263
|
-
super.splice(0);
|
|
264
|
-
return this;
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
/**
|
|
268
|
-
* Inserts a value to position <i>index</i>
|
|
269
|
-
* @param index {number} index to insert value
|
|
270
|
-
* @param v {*} value to insert
|
|
271
|
-
* @return {this} a pointer to this
|
|
272
|
-
*/
|
|
273
|
-
insert (index, v) {
|
|
274
|
-
v = vassilify(v);
|
|
275
|
-
this.listener.emitAdded(index, v);
|
|
276
|
-
super.splice(index, 0, v);
|
|
277
|
-
return this;
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
/**
|
|
281
|
-
* Inserts a value to the beginning of array
|
|
282
|
-
* @param v {*} value to insert
|
|
283
|
-
* @return {this} a pointer to this
|
|
284
|
-
*/
|
|
285
|
-
prepend (v) {
|
|
286
|
-
v = vassilify(v);
|
|
287
|
-
this.listener.emitAdded(0, v);
|
|
288
|
-
super.unshift(v);
|
|
289
|
-
return this;
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
/**
|
|
293
|
-
* Removes a value from an index
|
|
294
|
-
* @param index {number} index of value to remove
|
|
295
|
-
* @return {this} a pointer to this
|
|
296
|
-
*/
|
|
297
|
-
removeAt (index) {
|
|
298
|
-
if (this[index]) {
|
|
299
|
-
this.listener.emitRemoved(index, this[index]);
|
|
300
|
-
super.splice(index, 1);
|
|
301
|
-
}
|
|
302
|
-
return this;
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
/**
|
|
306
|
-
* Removes the first value of array
|
|
307
|
-
* @return {this} a pointer to this
|
|
308
|
-
*/
|
|
309
|
-
removeFirst () {
|
|
310
|
-
if (this.length) {
|
|
311
|
-
this.listener.emitRemoved(0, this[0]);
|
|
312
|
-
super.shift();
|
|
313
|
-
}
|
|
314
|
-
return this;
|
|
315
|
-
}
|
|
316
|
-
|
|
317
|
-
/**
|
|
318
|
-
* Removes the ast value of array
|
|
319
|
-
* @return {this} a pointer to this
|
|
320
|
-
*/
|
|
321
|
-
removeLast () {
|
|
322
|
-
if (this.last) {
|
|
323
|
-
this.listener.emitRemoved(this.length - 1, this.last);
|
|
324
|
-
super.pop();
|
|
325
|
-
}
|
|
326
|
-
return this;
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
/**
|
|
330
|
-
* Remove the first occurrence of value
|
|
331
|
-
* @param v {IValue} value to remove
|
|
332
|
-
* @return {this}
|
|
333
|
-
*/
|
|
334
|
-
removeOne (v) {
|
|
335
|
-
this.removeAt(this.indexOf(v));
|
|
336
|
-
return this;
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
/**
|
|
341
|
-
* A Object based model
|
|
342
|
-
* @extends Object<String, IValue>
|
|
343
|
-
*/
|
|
344
|
-
export class ObjectModel extends Object {
|
|
345
|
-
/**
|
|
346
|
-
* the listener of object
|
|
347
|
-
* @type {Listener}
|
|
348
|
-
*/
|
|
349
|
-
listener;
|
|
350
|
-
|
|
351
|
-
/**
|
|
352
|
-
* Constructs a object model from an object
|
|
353
|
-
* @param obj {Object<String, IValue>} input data
|
|
354
|
-
*/
|
|
355
|
-
constructor (obj = {}) {
|
|
356
|
-
super();
|
|
357
|
-
|
|
358
|
-
ObjectModel.defineProperty(this, 'listener', {
|
|
359
|
-
value: new Listener,
|
|
360
|
-
writable: false,
|
|
361
|
-
customisable: false
|
|
362
|
-
});
|
|
363
|
-
|
|
364
|
-
let ts = this;
|
|
365
|
-
|
|
366
|
-
for (let i in obj) {
|
|
367
|
-
ts[i] = vassilify(obj[i]);
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
|
-
|
|
371
|
-
/**
|
|
372
|
-
* Gets a value of a field
|
|
373
|
-
* @param key {string}
|
|
374
|
-
* @return {IValue<*>}
|
|
375
|
-
*/
|
|
376
|
-
get (key) {
|
|
377
|
-
let ts = this;
|
|
378
|
-
|
|
379
|
-
return ts[key];
|
|
380
|
-
}
|
|
381
|
-
|
|
382
|
-
/**
|
|
383
|
-
* Sets a object property value <b>(use for new properties only)</b>
|
|
384
|
-
* @param key {string} property name
|
|
385
|
-
* @param v {*} property value
|
|
386
|
-
* @return {ObjectModel} a pointer to this
|
|
387
|
-
*/
|
|
388
|
-
set (key, v) {
|
|
389
|
-
let ts = this;
|
|
390
|
-
|
|
391
|
-
if (ts[key]) {
|
|
392
|
-
this.listener.emitRemoved(key, ts[key]);
|
|
393
|
-
}
|
|
394
|
-
ts[key] = vassilify(v);
|
|
395
|
-
this.listener.emitAdded(key, ts[key]);
|
|
396
|
-
|
|
397
|
-
return this;
|
|
398
|
-
}
|
|
399
|
-
|
|
400
|
-
/**
|
|
401
|
-
* Deletes a object property
|
|
402
|
-
* @param key {string} property name
|
|
403
|
-
*/
|
|
404
|
-
delete (key) {
|
|
405
|
-
let ts = this;
|
|
406
|
-
|
|
407
|
-
if (ts[key]) {
|
|
408
|
-
this.listener.emitRemoved(key, ts[key]);
|
|
409
|
-
delete ts[key];
|
|
410
|
-
}
|
|
411
|
-
}
|
|
412
|
-
}
|
|
413
|
-
|
|
414
|
-
/**
|
|
415
|
-
* A Map based memory
|
|
416
|
-
* @extends Map<*, IValue>
|
|
417
|
-
*/
|
|
418
|
-
export class MapModel extends Map {
|
|
419
|
-
/**
|
|
420
|
-
* listener of map
|
|
421
|
-
* @type {Listener}
|
|
422
|
-
*/
|
|
423
|
-
listener;
|
|
424
|
-
|
|
425
|
-
/**
|
|
426
|
-
* Constructs a map model based on a map
|
|
427
|
-
* @param map {Map<*, IValue>} input data
|
|
428
|
-
*/
|
|
429
|
-
constructor (map = new Map) {
|
|
430
|
-
super();
|
|
431
|
-
|
|
432
|
-
ObjectModel.defineProperty(this, 'listener', {
|
|
433
|
-
value: new Listener,
|
|
434
|
-
writable: false,
|
|
435
|
-
customisable: false
|
|
436
|
-
});
|
|
437
|
-
|
|
438
|
-
for (let data of map) {
|
|
439
|
-
super.set(data[0], vassilify(data[1]));
|
|
440
|
-
}
|
|
441
|
-
}
|
|
442
|
-
|
|
443
|
-
/**
|
|
444
|
-
* Calls Map.clear and notify abut changes
|
|
445
|
-
*/
|
|
446
|
-
clear () {
|
|
447
|
-
for (let data of this) {
|
|
448
|
-
this.listener.emitRemoved(data[0], data[1]);
|
|
449
|
-
}
|
|
450
|
-
super.clear();
|
|
451
|
-
}
|
|
452
|
-
|
|
453
|
-
/**
|
|
454
|
-
* Calls Map.delete and notify abut changes
|
|
455
|
-
* @param key {*} key
|
|
456
|
-
* @return {boolean} true if removed something, otherwise false
|
|
457
|
-
*/
|
|
458
|
-
delete (key) {
|
|
459
|
-
let tmp = super.get(key);
|
|
460
|
-
if (tmp) {
|
|
461
|
-
this.listener.emitRemoved(key, tmp);
|
|
462
|
-
}
|
|
463
|
-
return super.delete(key);
|
|
464
|
-
}
|
|
465
|
-
|
|
466
|
-
/**
|
|
467
|
-
* Calls Map.set and notify abut changes
|
|
468
|
-
* @param key {*} key
|
|
469
|
-
* @param value {IValue} value
|
|
470
|
-
* @return {MapModel} a pointer to this
|
|
471
|
-
*/
|
|
472
|
-
set (key, value) {
|
|
473
|
-
let tmp = super.get(key);
|
|
474
|
-
if (tmp) {
|
|
475
|
-
this.listener.emitRemoved(key, tmp);
|
|
476
|
-
}
|
|
477
|
-
|
|
478
|
-
let v = vassilify(value);
|
|
479
|
-
super.set(key, v);
|
|
480
|
-
this.listener.emitAdded(key, v);
|
|
481
|
-
|
|
482
|
-
return this;
|
|
483
|
-
}
|
|
484
|
-
}
|
|
485
|
-
|
|
486
|
-
/**
|
|
487
|
-
* A Set based model
|
|
488
|
-
* @extends Set<IValue>
|
|
489
|
-
*/
|
|
490
|
-
export class SetModel extends Set {
|
|
491
|
-
listener;
|
|
492
|
-
|
|
493
|
-
/**
|
|
494
|
-
* Constructs a set model based on a set
|
|
495
|
-
* @param set {Set<IValue>} input data
|
|
496
|
-
*/
|
|
497
|
-
constructor (set = new Set) {
|
|
498
|
-
super();
|
|
499
|
-
|
|
500
|
-
ObjectModel.defineProperty(this, 'listener', {
|
|
501
|
-
value: new Listener,
|
|
502
|
-
writable: false,
|
|
503
|
-
customisable: false
|
|
504
|
-
});
|
|
505
|
-
|
|
506
|
-
for (let item of set) {
|
|
507
|
-
super.add(vassilify(item));
|
|
508
|
-
}
|
|
509
|
-
}
|
|
510
|
-
|
|
511
|
-
/**
|
|
512
|
-
* Calls Set.add and notify abut changes
|
|
513
|
-
* @param value {*} value
|
|
514
|
-
* @return {this} a pointer to this
|
|
515
|
-
*/
|
|
516
|
-
add (value) {
|
|
517
|
-
value = vassilify(value);
|
|
518
|
-
|
|
519
|
-
if (!super.has(value)) {
|
|
520
|
-
this.listener.emitAdded(null, value);
|
|
521
|
-
super.add(value);
|
|
522
|
-
}
|
|
523
|
-
return this;
|
|
524
|
-
}
|
|
525
|
-
|
|
526
|
-
/**
|
|
527
|
-
* Calls Set.clear and notify abut changes
|
|
528
|
-
*/
|
|
529
|
-
clear () {
|
|
530
|
-
for (let item of this) {
|
|
531
|
-
this.listener.emitRemoved(null, item);
|
|
532
|
-
}
|
|
533
|
-
super.clear();
|
|
534
|
-
}
|
|
535
|
-
|
|
536
|
-
/**
|
|
537
|
-
* Calls Set.delete and notify abut changes
|
|
538
|
-
* @param value {IValue}
|
|
539
|
-
* @return {boolean} true if a value was deleted, otherwise false
|
|
540
|
-
*/
|
|
541
|
-
delete (value) {
|
|
542
|
-
if (super.has(value)) {
|
|
543
|
-
this.listener.emitRemoved(null, value);
|
|
544
|
-
}
|
|
545
|
-
return super.delete(value);
|
|
546
|
-
}
|
|
547
|
-
}
|
|
548
|
-
|
|
549
|
-
/**
|
|
550
|
-
* Transforms a JS value to a Vasille.js value
|
|
551
|
-
* @param v {*} input value
|
|
552
|
-
* @return {IValue} transformed value
|
|
553
|
-
*/
|
|
554
|
-
export function vassilify (v) {
|
|
555
|
-
let ret;
|
|
556
|
-
|
|
557
|
-
if (v instanceof IValue) {
|
|
558
|
-
ret = v;
|
|
559
|
-
}
|
|
560
|
-
else if (Array.isArray(v)) {
|
|
561
|
-
ret = new Reference(new ArrayModel(v));
|
|
562
|
-
}
|
|
563
|
-
else if (v instanceof Map) {
|
|
564
|
-
ret = new Reference(new MapModel(v));
|
|
565
|
-
}
|
|
566
|
-
else if (v instanceof Set) {
|
|
567
|
-
ret = new Reference(new SetModel(v));
|
|
568
|
-
}
|
|
569
|
-
else if (v instanceof Object && v.constructor === Object) {
|
|
570
|
-
ret = new Reference(new ObjectModel(v));
|
|
571
|
-
}
|
|
572
|
-
else {
|
|
573
|
-
ret = new Reference(v);
|
|
574
|
-
}
|
|
575
|
-
|
|
576
|
-
return ret;
|
|
577
|
-
}
|
|
578
|
-
|
|
579
|
-
//# sourceMappingURL=models.js.map
|
package/lib/models.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/models.js"],"names":[],"mappings":"GAAG,AAAK;;;;;;;;;;;;;;YAcI,AAAA,AAAe;;;;;;cAMb,AAAA,AAAe;;;;;;;;;;;;;;;;;;;;;;qBAsBR,AAAA,AAAuB,QAAQ,AAAA,AAAa;;;;;;;;;;;uBAW1C,AAAA,AAAuB,QAAQ,AAAA,AAAa;;;;;;;;;;mBAUhD,AAAA,AAAU;;;;;;;;sBAQP,AAAA,AAAU;;;;;;;;oBAQZ,AAAA,AAAU;;;;;;;;uBAQP,AAAA,AAAU;;;;;;;;;uBASV,AAAG,cAAc,AAAW;;;;;aAKtC,AAAA,AAAU;;;;;;;;sBAQD,AAAA,AAAY;;;;;;;;;;;;;;;;;;;;gBAoBlB,AAAA,AAAY;;;;;;;;;;;gBAWZ,AAAA,AAAK,QAAQ,AAAA,AAAS,MAAM,AAAA,AAAS,EAAE,AAAA,AAAM;;;;;;;;;;;;;;;;;;;;WAoBlD,AAAA,AAAW;;;;;;;;;;;;;;mBAcH,AAAA,AAAY,EAAE,AAAA,AAAQ;;;;;;;;;;;;;;aAc5B,AAAA,AAAW;;;;;;;;;;;;;;;;;cAiBV,AAAA,AAAQ;oBACF,AAAA,AAAS;iBACZ,AAAA,AAAa;MACxB,AAAA,AAAe;;;;;;;;;;;;;;;;;;;;;;;;;sBAyBC,AAAA,AAAY,EAAE,AAAA,AAAQ;;;;;;;;;;;;;;cAc9B,AAAA,AAAK,EAAE,AAAA,AAAM;;;;;;;;;;;aAWd,AAAA,AAAM;;;;;;;;;;;;;;kBAcD,AAAA,AAAQ,IAAI,AAAA,AAAK,EAAE,AAAA,AAAM;;;;;;;;;;;;eAY5B,AAAA,AAAK,EAAE,AAAA,AAAM;;;;;;;;;;;;oBAYR,AAAA,AAAQ,EAAE,AAAA,AAAM;;;;;;;;;;;;mBAYjB,AAAA,AAAM;;;;;;;;;;;;kBAYP,AAAA,AAAM;;;;;;;;;;;;;iBAaP,AAAA,AAAW,EAAE,AAAA,AAAM;;;;;;;;;;wBAUZ,AAAG;;;;;aAKd,AAAA,AAAU;;;;;;qBAMF,AAAA,AAAQ;;;;;;;;;eASd,AAAA,AAAgC;;;;;;;;;;;;aAYlC,AAAA,AAAQ,EAAE,AAAA,AAAW;eACnB,AAAA,AAAgC;;;;;;;;;;;aAWlC,AAAA,AAAQ,IAAI,AAAA,AAAK,EAAE,AAAA,AAAM;eACvB,AAAA,AAAgC;;;;;;;;;;;;;;;gBAe/B,AAAA,AAAQ;eACT,AAAA,AAAgC;;;;;;;;;;;;;qBAa1B,AAAM,YAAY,AAAc;;;;;aAKxC,AAAA,AAAU;;;;;;qBAMF,AAAA,AAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBA6BlB,AAAA,AAAK,EAAE,AAAA,AAAS;;;;;;;;;;;;;;aAcnB,AAAA,AAAK,QAAQ,AAAA,AAAK,EAAE,AAAA,AAAM;;;;;;;;;;;;;;;;;;qBAkBlB,AAAG,YAAY,AAAW;aAClC,AAAA,AAAU;;;;;;qBAMF,AAAA,AAAU;;;;;;;;;;;;;;;;;;;eAmBhB,AAAA,AAAK,EAAE,AAAA,AAAM;;;;;;;;;;;;;;;;;;;;;;;;;kBAyBV,AAAA,AAAW,EAAE,AAAA,AAAS;;;;;;;;;;;;;6BAaX,AAAA,AAAK,EAAE,AAAA,AAAa"}
|