| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141 |
1×
1×
1×
10×
1×
10×
10×
10×
1×
1×
1×
13×
1×
13×
4×
9×
5×
4×
3×
1×
1×
3×
3×
1×
2×
1×
1×
1×
2×
2×
1×
3×
3×
3×
2×
1×
1×
3×
1×
2×
1×
1×
1×
3×
3×
2×
4×
3×
1×
1×
5×
1×
2×
2×
1×
17×
13×
2×
1×
1×
1×
4×
1×
1×
1×
4×
1×
2×
2×
1×
2×
8×
1×
2×
2×
1×
2×
2×
8×
2×
1×
1×
| /**
* @preserve
* https://github.com/GregBee2/xassist-object#readme Version 1.0.5.
* Copyright 2018 Gregory Beirens.
* Created on Tue, 17 Apr 2018 10:38:57 GMT.
*/
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@xassist/xassist-eventdispatcher')) :
typeof define === 'function' && define.amd ? define(['exports', '@xassist/xassist-eventdispatcher'], factory) :
(factory((global.xa = global.xa || {}),global.xa));
}(this, (function (exports,xassistEventdispatcher) { 'use strict';
function object (obj) {
return new XaObject(obj);
}
function XaObject(obj) {
this.object = obj;
xassistEventdispatcher.EventDispatcher.call(this, this); //containerElm=modal
this.currentValues = {};
}
XaObject.prototype = Object.create(xassistEventdispatcher.EventDispatcher.prototype); // Here's where the inheritance occurs
XaObject.prototype.constructor = XaObject;
function _getType(value) {
return typeof value;
}
function _transformType(type, value) {
if (type === "boolean") {
return !!value;
}
if (type === "number") {
return Number(value);
}
if (type === "string") {
return String(value);
}
return value;
}
XaObject.prototype.onChange = function (key, fn, thisArg) {
var me = this,
newWatch = false;
if (!key || !this.object.hasOwnProperty(key)) {
throw new ReferenceError('key does not exist in Object');
}
if (!this.hasEvent("changeKey" + key)) {
this.registerEvent("changeKey" + key, this.object);
this.currentValues[key] = this.object[key];
newWatch = true;
}
xassistEventdispatcher.EventDispatcher.prototype.on.call(this, "changeKey" + key, fn, thisArg);
if (newWatch) {
Object.defineProperty(this.object, key, {
set: function (value) {
var oldValue = me.currentValues[key];
me.currentValues[key] = value;
if (value !== oldValue) {
me.fire("changeKey" + key, value, oldValue, key, me.object);
}
},
get: function () {
return me.currentValues[key];
}
});
}
};
XaObject.prototype.assign = function (/*varArgs*/) { // .length of function is 2
if (typeof Object.assign === 'function') {
return Object.assign.apply(null, [this.object].concat(Array.prototype.slice.call(arguments)));
}
if (this.object == null) { // TypeError if undefined or null
throw new TypeError('Cannot convert undefined or null to object');
}
var to = Object(this.object);
for (var index = 0; index < arguments.length; index++) {
var nextSource = arguments[index];
if (nextSource != null) { // Skip over if undefined or null
for (var nextKey in nextSource) {
// Avoid bugs when hasOwnProperty is shadowed
if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
to[nextKey] = nextSource[nextKey];
}
}
}
}
return to;
};
XaObject.prototype.clone = function () {
return JSON.parse(JSON.stringify(this.object));
};
XaObject.prototype.mergeUnique = function (source) {
var me = this;
//copies only existing key in obj from source to obj
//problems may arise with objects, dates, arrays, ... for now Strings, numbers,
if (source != null) { // Skip over if undefined or null
Object.keys(this.object).forEach(function (targetKey) {
if (source.hasOwnProperty(targetKey)) {
me.object[targetKey] = _transformType(_getType(me.object[targetKey]), source[targetKey]);
}
});
}
return this.object;
};
XaObject.prototype.toArray = function () {
var me = this;
return Object.keys(this.object).map(function (property_name) {
return me.object[property_name];
});
};
XaObject.prototype.toMapArray = function () {
var me = this;
return Object.keys(this.object).map(function (property_name) {
return [property_name, me.object[property_name]];
});
};
XaObject.prototype.forEach = function (fn, thisArg) {
var me = this;
if (!thisArg) {
thisArg = this.object;
}
return Object.keys(this.object).forEach(function (property_name) {
fn.call(thisArg, me.object[property_name], property_name, me.object);
}, thisArg);
};
XaObject.prototype.map = function (fn, thisArg) {
var me = this;
if (!thisArg) {
thisArg = this.object;
}
var newObject = {};
Object.keys(this.object).forEach(function (property_name) {
newObject[property_name] = fn.call(thisArg, me.object[property_name], property_name, me.object);
}, thisArg);
return newObject;
};
exports.object = object;
Object.defineProperty(exports, '__esModule', { value: true });
})));
|