@base-framework/base 2.6.0 → 2.6.1
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/base.min.js +1 -0
- package/es5/base.js +2968 -0
- package/es5/modules/ajax.js +663 -0
- package/es5/modules/animation.js +188 -0
- package/es5/modules/animations.js +1080 -0
- package/es5/modules/atom.js +65 -0
- package/es5/modules/component.js +1310 -0
- package/es5/modules/data-binder.js +1131 -0
- package/es5/modules/data.js +1808 -0
- package/es5/modules/date.js +525 -0
- package/es5/modules/form-validator.js +324 -0
- package/es5/modules/history.js +126 -0
- package/es5/modules/html-builder.js +461 -0
- package/es5/modules/layout.js +1679 -0
- package/es5/modules/mouse.js +124 -0
- package/es5/modules/nav-link.js +123 -0
- package/es5/modules/olderversions/animations-ease.js +1095 -0
- package/es5/modules/olderversions/animations-update.js +1048 -0
- package/es5/modules/olderversions/base-animations.js +636 -0
- package/es5/modules/olderversions/base-component-class.js +100 -0
- package/es5/modules/olderversions/base-data-binder-1.js +407 -0
- package/es5/modules/olderversions/base-data-binder-class.js +358 -0
- package/es5/modules/olderversions/base-layout-parser-class.js +172 -0
- package/es5/modules/olderversions/base-mode-1.js +777 -0
- package/es5/modules/olderversions/base-model-class.js +585 -0
- package/es5/modules/olderversions/data-binder/element-binding/base-data-binder-class.js +358 -0
- package/es5/modules/olderversions/data-binder/element-binding/base-model-class.js +585 -0
- package/es5/modules/olderversions/data-binder/model-binding/base-data-binder-class.js +353 -0
- package/es5/modules/olderversions/data-binder/model-binding/base-model-class.js +604 -0
- package/es5/modules/olderversions/data-binder-update-watcher.js +640 -0
- package/es5/modules/olderversions/data-tracker.js +187 -0
- package/es5/modules/olderversions/event-update.js +666 -0
- package/es5/modules/olderversions/nav-link.js +119 -0
- package/es5/modules/olderversions/router-with-templates-1.js +785 -0
- package/es5/modules/olderversions/router-with-templates.js +701 -0
- package/es5/modules/prototypes/ajax.js +657 -0
- package/es5/modules/prototypes/atom.js +65 -0
- package/es5/modules/prototypes/component.js +972 -0
- package/es5/modules/prototypes/data-binder.js +1089 -0
- package/es5/modules/prototypes/data.js +1290 -0
- package/es5/modules/prototypes/html-builder.js +414 -0
- package/es5/modules/prototypes/layout.js +879 -0
- package/es5/modules/router.js +1680 -0
- package/es5/modules/state.js +274 -0
- package/es6/.jshintrc +3 -0
- package/es6/base.js +41 -0
- package/es6/core.js +1 -0
- package/es6/data-tracker.js +351 -0
- package/es6/events.js +602 -0
- package/es6/legacy/es5/base.js +2968 -0
- package/es6/legacy/es5/modules/ajax.js +663 -0
- package/es6/legacy/es5/modules/animation.js +188 -0
- package/es6/legacy/es5/modules/animations.js +1080 -0
- package/es6/legacy/es5/modules/atom.js +65 -0
- package/es6/legacy/es5/modules/component.js +1310 -0
- package/es6/legacy/es5/modules/data-binder.js +1131 -0
- package/es6/legacy/es5/modules/data.js +1808 -0
- package/es6/legacy/es5/modules/date.js +525 -0
- package/es6/legacy/es5/modules/form-validator.js +324 -0
- package/es6/legacy/es5/modules/history.js +126 -0
- package/es6/legacy/es5/modules/html-builder.js +461 -0
- package/es6/legacy/es5/modules/layout.js +1679 -0
- package/es6/legacy/es5/modules/mouse.js +124 -0
- package/es6/legacy/es5/modules/nav-link.js +123 -0
- package/es6/legacy/es5/modules/olderversions/animations-ease.js +1095 -0
- package/es6/legacy/es5/modules/olderversions/animations-update.js +1048 -0
- package/es6/legacy/es5/modules/olderversions/base-animations.js +636 -0
- package/es6/legacy/es5/modules/olderversions/base-component-class.js +100 -0
- package/es6/legacy/es5/modules/olderversions/base-data-binder-1.js +407 -0
- package/es6/legacy/es5/modules/olderversions/base-data-binder-class.js +358 -0
- package/es6/legacy/es5/modules/olderversions/base-layout-parser-class.js +172 -0
- package/es6/legacy/es5/modules/olderversions/base-mode-1.js +777 -0
- package/es6/legacy/es5/modules/olderversions/base-model-class.js +585 -0
- package/es6/legacy/es5/modules/olderversions/data-binder/element-binding/base-data-binder-class.js +358 -0
- package/es6/legacy/es5/modules/olderversions/data-binder/element-binding/base-model-class.js +585 -0
- package/es6/legacy/es5/modules/olderversions/data-binder/model-binding/base-data-binder-class.js +353 -0
- package/es6/legacy/es5/modules/olderversions/data-binder/model-binding/base-model-class.js +604 -0
- package/es6/legacy/es5/modules/olderversions/data-binder-update-watcher.js +640 -0
- package/es6/legacy/es5/modules/olderversions/data-tracker.js +187 -0
- package/es6/legacy/es5/modules/olderversions/event-update.js +666 -0
- package/es6/legacy/es5/modules/olderversions/nav-link.js +119 -0
- package/es6/legacy/es5/modules/olderversions/router-with-templates-1.js +785 -0
- package/es6/legacy/es5/modules/olderversions/router-with-templates.js +701 -0
- package/es6/legacy/es5/modules/prototypes/ajax.js +657 -0
- package/es6/legacy/es5/modules/prototypes/atom.js +65 -0
- package/es6/legacy/es5/modules/prototypes/component.js +972 -0
- package/es6/legacy/es5/modules/prototypes/data-binder.js +1089 -0
- package/es6/legacy/es5/modules/prototypes/data.js +1290 -0
- package/es6/legacy/es5/modules/prototypes/html-builder.js +414 -0
- package/es6/legacy/es5/modules/prototypes/layout.js +879 -0
- package/es6/legacy/es5/modules/router.js +1680 -0
- package/es6/legacy/es5/modules/state.js +274 -0
- package/es6/main.js +1331 -0
- package/es6/modules/ajax/ajax.js +514 -0
- package/es6/modules/animation/animation.js +236 -0
- package/es6/modules/animations/animation-controller.js +231 -0
- package/es6/modules/animations/animation.js +64 -0
- package/es6/modules/animations/attr-movement.js +66 -0
- package/es6/modules/animations/css-movement.js +170 -0
- package/es6/modules/animations/movement.js +131 -0
- package/es6/modules/animations/value.js +187 -0
- package/es6/modules/atom/atom.js +54 -0
- package/es6/modules/component/component.js +230 -0
- package/es6/modules/component/event-helper.js +119 -0
- package/es6/modules/component/jot.js +144 -0
- package/es6/modules/component/state-helper.js +262 -0
- package/es6/modules/component/unit.js +551 -0
- package/es6/modules/data/attrs.js +40 -0
- package/es6/modules/data/basic-data.js +500 -0
- package/es6/modules/data/data-utils.js +29 -0
- package/es6/modules/data/data.js +3 -0
- package/es6/modules/data/deep-data.js +541 -0
- package/es6/modules/data/model-service.js +528 -0
- package/es6/modules/data/model.js +133 -0
- package/es6/modules/data/simple-data.js +33 -0
- package/es6/modules/data-binder/connection-tracker.js +113 -0
- package/es6/modules/data-binder/connection.js +16 -0
- package/es6/modules/data-binder/data-binder.js +352 -0
- package/es6/modules/data-binder/data-pub-sub.js +141 -0
- package/es6/modules/data-binder/data-source.js +56 -0
- package/es6/modules/data-binder/element-source.js +219 -0
- package/es6/modules/data-binder/one-way-connection.js +46 -0
- package/es6/modules/data-binder/one-way-source.js +43 -0
- package/es6/modules/data-binder/source.js +36 -0
- package/es6/modules/data-binder/two-way-connection.js +75 -0
- package/es6/modules/data-binder/two-way-source.js +41 -0
- package/es6/modules/date/date.js +544 -0
- package/es6/modules/history/history.js +89 -0
- package/es6/modules/html-builder/html-builder.js +434 -0
- package/es6/modules/import/import.js +390 -0
- package/es6/modules/layout/layout-builder.js +1269 -0
- package/es6/modules/layout/layout-parser.js +134 -0
- package/es6/modules/layout/watcher-helper.js +282 -0
- package/es6/modules/mouse/mouse.js +114 -0
- package/es6/modules/router/component-helper.js +163 -0
- package/es6/modules/router/history-controller.js +216 -0
- package/es6/modules/router/nav-link.js +124 -0
- package/es6/modules/router/route.js +401 -0
- package/es6/modules/router/router.js +789 -0
- package/es6/modules/router/utils.js +31 -0
- package/es6/modules/state/state-target.js +91 -0
- package/es6/modules/state/state.js +171 -0
- package/es6/package-lock.json +13 -0
- package/es6/package.json +28 -0
- package/es6/shared/objects.js +99 -0
- package/legacy/es5/base.js +2968 -0
- package/legacy/es5/modules/ajax.js +663 -0
- package/legacy/es5/modules/animation.js +188 -0
- package/legacy/es5/modules/animations.js +1080 -0
- package/legacy/es5/modules/atom.js +65 -0
- package/legacy/es5/modules/component.js +1310 -0
- package/legacy/es5/modules/data-binder.js +1131 -0
- package/legacy/es5/modules/data.js +1808 -0
- package/legacy/es5/modules/date.js +525 -0
- package/legacy/es5/modules/form-validator.js +324 -0
- package/legacy/es5/modules/history.js +126 -0
- package/legacy/es5/modules/html-builder.js +461 -0
- package/legacy/es5/modules/layout.js +1679 -0
- package/legacy/es5/modules/mouse.js +124 -0
- package/legacy/es5/modules/nav-link.js +123 -0
- package/legacy/es5/modules/olderversions/animations-ease.js +1095 -0
- package/legacy/es5/modules/olderversions/animations-update.js +1048 -0
- package/legacy/es5/modules/olderversions/base-animations.js +636 -0
- package/legacy/es5/modules/olderversions/base-component-class.js +100 -0
- package/legacy/es5/modules/olderversions/base-data-binder-1.js +407 -0
- package/legacy/es5/modules/olderversions/base-data-binder-class.js +358 -0
- package/legacy/es5/modules/olderversions/base-layout-parser-class.js +172 -0
- package/legacy/es5/modules/olderversions/base-mode-1.js +777 -0
- package/legacy/es5/modules/olderversions/base-model-class.js +585 -0
- package/legacy/es5/modules/olderversions/data-binder/element-binding/base-data-binder-class.js +358 -0
- package/legacy/es5/modules/olderversions/data-binder/element-binding/base-model-class.js +585 -0
- package/legacy/es5/modules/olderversions/data-binder/model-binding/base-data-binder-class.js +353 -0
- package/legacy/es5/modules/olderversions/data-binder/model-binding/base-model-class.js +604 -0
- package/legacy/es5/modules/olderversions/data-binder-update-watcher.js +640 -0
- package/legacy/es5/modules/olderversions/data-tracker.js +187 -0
- package/legacy/es5/modules/olderversions/event-update.js +666 -0
- package/legacy/es5/modules/olderversions/nav-link.js +119 -0
- package/legacy/es5/modules/olderversions/router-with-templates-1.js +785 -0
- package/legacy/es5/modules/olderversions/router-with-templates.js +701 -0
- package/legacy/es5/modules/prototypes/ajax.js +657 -0
- package/legacy/es5/modules/prototypes/atom.js +65 -0
- package/legacy/es5/modules/prototypes/component.js +972 -0
- package/legacy/es5/modules/prototypes/data-binder.js +1089 -0
- package/legacy/es5/modules/prototypes/data.js +1290 -0
- package/legacy/es5/modules/prototypes/html-builder.js +414 -0
- package/legacy/es5/modules/prototypes/layout.js +879 -0
- package/legacy/es5/modules/router.js +1680 -0
- package/legacy/es5/modules/state.js +274 -0
- package/package.json +8 -3
- package/update +16 -0
package/es6/events.js
ADDED
|
@@ -0,0 +1,602 @@
|
|
|
1
|
+
|
|
2
|
+
import {base} from './main.js';
|
|
3
|
+
export {base} from './main.js';
|
|
4
|
+
|
|
5
|
+
const dataTracker = base.dataTracker;
|
|
6
|
+
|
|
7
|
+
export const events =
|
|
8
|
+
{
|
|
9
|
+
/**
|
|
10
|
+
* This will get the events on an element.
|
|
11
|
+
*
|
|
12
|
+
* @param {object} obj
|
|
13
|
+
* @return {(array|boolean)}
|
|
14
|
+
*/
|
|
15
|
+
getEvents(obj)
|
|
16
|
+
{
|
|
17
|
+
if(base.isObject(obj) === false)
|
|
18
|
+
{
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
return dataTracker.get(obj, 'events');
|
|
22
|
+
},
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* This will create an object to use with the dataTracker.
|
|
26
|
+
*
|
|
27
|
+
* @param {string} event The event name.
|
|
28
|
+
* @param {object} obj
|
|
29
|
+
* @param {function} fn
|
|
30
|
+
* @param {boolean} [capture]
|
|
31
|
+
* @param {boolean} [swapped]
|
|
32
|
+
* @param {function} [originalFn]
|
|
33
|
+
* @return {object}
|
|
34
|
+
*/
|
|
35
|
+
create(event, obj, fn, capture = false, swapped = false, originalFn = null)
|
|
36
|
+
{
|
|
37
|
+
/* we want to check if the swapped param was set */
|
|
38
|
+
swapped = (swapped === true);
|
|
39
|
+
|
|
40
|
+
return {
|
|
41
|
+
event,
|
|
42
|
+
obj,
|
|
43
|
+
fn,
|
|
44
|
+
capture,
|
|
45
|
+
swapped,
|
|
46
|
+
originalFn
|
|
47
|
+
};
|
|
48
|
+
},
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* This will add an event to an object.
|
|
52
|
+
*
|
|
53
|
+
* @param {string} event The event name.
|
|
54
|
+
* @param {object} obj
|
|
55
|
+
* @param {function} fn
|
|
56
|
+
* @param {(object|boolean)} [capture]
|
|
57
|
+
* @param {boolean} [swapped]
|
|
58
|
+
* @param {function} [originalFn]
|
|
59
|
+
*/
|
|
60
|
+
add(event, obj, fn, capture = false, swapped = false, originalFn = null)
|
|
61
|
+
{
|
|
62
|
+
if(base.isObject(obj) === false)
|
|
63
|
+
{
|
|
64
|
+
return this;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/* we want to create an event object and add it the
|
|
68
|
+
the active events to track */
|
|
69
|
+
let data = this.create(event, obj, fn, capture, swapped, originalFn);
|
|
70
|
+
dataTracker.add(obj, 'events', data);
|
|
71
|
+
|
|
72
|
+
obj.addEventListener(event, fn, capture);
|
|
73
|
+
|
|
74
|
+
return this;
|
|
75
|
+
},
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* This will remove an event from an object.
|
|
79
|
+
*
|
|
80
|
+
* @param {string} event The event name.
|
|
81
|
+
* @param {object} obj
|
|
82
|
+
* @param {function} fn
|
|
83
|
+
* @param {(object|boolean)} [capture]
|
|
84
|
+
* @return {object} a reference to the event object.
|
|
85
|
+
*/
|
|
86
|
+
remove(event, obj, fn, capture = false)
|
|
87
|
+
{
|
|
88
|
+
let result = this.getEvent(event, obj, fn, capture);
|
|
89
|
+
if(result === false)
|
|
90
|
+
{
|
|
91
|
+
return this;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
if(typeof result === 'object')
|
|
95
|
+
{
|
|
96
|
+
/* we want to use the remove event method and just
|
|
97
|
+
pass the listener object */
|
|
98
|
+
this.removeEvent(result);
|
|
99
|
+
}
|
|
100
|
+
return this;
|
|
101
|
+
},
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* This will remove an event listener.
|
|
105
|
+
* @param {object} listener
|
|
106
|
+
* @return {object} a reference to the event object.
|
|
107
|
+
*/
|
|
108
|
+
removeEvent(listener)
|
|
109
|
+
{
|
|
110
|
+
if(typeof listener === 'object')
|
|
111
|
+
{
|
|
112
|
+
let obj = listener.obj;
|
|
113
|
+
obj.removeEventListener(listener.event, listener.fn, listener.capture);
|
|
114
|
+
}
|
|
115
|
+
return this;
|
|
116
|
+
},
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* This will search for an event.
|
|
120
|
+
*
|
|
121
|
+
* @protected
|
|
122
|
+
* @param {string} event The event name.
|
|
123
|
+
* @param {object} obj
|
|
124
|
+
* @param {function} fn
|
|
125
|
+
* @param {boolean} [capture]
|
|
126
|
+
* @return {(object|boolean)}
|
|
127
|
+
*/
|
|
128
|
+
getEvent(event, obj, fn, capture)
|
|
129
|
+
{
|
|
130
|
+
if(typeof obj !== 'object')
|
|
131
|
+
{
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
let events = this.getEvents(obj);
|
|
136
|
+
if(!events || events.length < 1)
|
|
137
|
+
{
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
let eventObj = this.create(event, obj, fn, capture);
|
|
142
|
+
/* if the search returns anything but false we
|
|
143
|
+
found our active event */
|
|
144
|
+
return this.search(eventObj, events);
|
|
145
|
+
},
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* This will search for an event from the object events.
|
|
149
|
+
*
|
|
150
|
+
* @param {object} eventObj
|
|
151
|
+
* @param {array} events
|
|
152
|
+
* @return {(object|boolean)}
|
|
153
|
+
*/
|
|
154
|
+
search(eventObj, events)
|
|
155
|
+
{
|
|
156
|
+
let listener,
|
|
157
|
+
swappable = this.isSwappable(eventObj.event);
|
|
158
|
+
for(var i = 0, maxLength = events.length; i < maxLength; i++)
|
|
159
|
+
{
|
|
160
|
+
listener = events[i];
|
|
161
|
+
if(listener.event !== eventObj.event || listener.obj !== eventObj.obj)
|
|
162
|
+
{
|
|
163
|
+
continue;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
if(listener.fn === eventObj.fn || (swappable === true && listener.originalFn === eventObj.fn))
|
|
167
|
+
{
|
|
168
|
+
return listener;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
return false;
|
|
173
|
+
},
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* This will remove all events on an object.
|
|
177
|
+
*
|
|
178
|
+
* @param {object} obj
|
|
179
|
+
* @return {object} a reference to the events object.
|
|
180
|
+
*/
|
|
181
|
+
removeEvents(obj)
|
|
182
|
+
{
|
|
183
|
+
if(base.isObject(obj) === false)
|
|
184
|
+
{
|
|
185
|
+
return this;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
dataTracker.remove(obj, 'events');
|
|
189
|
+
|
|
190
|
+
return this;
|
|
191
|
+
},
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* @member {array} swap The swappable events.
|
|
195
|
+
*/
|
|
196
|
+
swap: [
|
|
197
|
+
'DOMMouseScroll',
|
|
198
|
+
'wheel',
|
|
199
|
+
'mousewheel',
|
|
200
|
+
'mousemove',
|
|
201
|
+
'popstate'
|
|
202
|
+
],
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* This will a event type to the swappable array.
|
|
206
|
+
*
|
|
207
|
+
* @param {string} type
|
|
208
|
+
*/
|
|
209
|
+
addSwapped(type)
|
|
210
|
+
{
|
|
211
|
+
this.swap.push(type);
|
|
212
|
+
},
|
|
213
|
+
|
|
214
|
+
/**
|
|
215
|
+
* This will check if an event is swappable.
|
|
216
|
+
*
|
|
217
|
+
* @param {string} event
|
|
218
|
+
* @return {boolean}
|
|
219
|
+
*/
|
|
220
|
+
isSwappable(event)
|
|
221
|
+
{
|
|
222
|
+
/* we want to check if the event type is in the
|
|
223
|
+
swapped event array */
|
|
224
|
+
let index = base.inArray(this.swap, event);
|
|
225
|
+
return (index > -1);
|
|
226
|
+
}
|
|
227
|
+
};
|
|
228
|
+
|
|
229
|
+
/* this will register the event system to the
|
|
230
|
+
data tracker to remove events that have been
|
|
231
|
+
added in layouts. */
|
|
232
|
+
dataTracker.addType('events', (data) =>
|
|
233
|
+
{
|
|
234
|
+
events.removeEvent(data);
|
|
235
|
+
});
|
|
236
|
+
|
|
237
|
+
base.augment(
|
|
238
|
+
{
|
|
239
|
+
/**
|
|
240
|
+
* @param object events
|
|
241
|
+
*/
|
|
242
|
+
events,
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* This will add an event to an object.
|
|
246
|
+
*
|
|
247
|
+
* @param {string} event The event name.
|
|
248
|
+
* @param {object} obj
|
|
249
|
+
* @param {function} fn
|
|
250
|
+
* @param {boolean} [capture]
|
|
251
|
+
* @return {object} An instance of base.
|
|
252
|
+
*/
|
|
253
|
+
addListener(event, obj, fn, capture)
|
|
254
|
+
{
|
|
255
|
+
this.events.add(event, obj, fn, capture);
|
|
256
|
+
|
|
257
|
+
return this;
|
|
258
|
+
},
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
* This will add an event to an object.
|
|
262
|
+
*
|
|
263
|
+
* @param {string} event The event name.
|
|
264
|
+
* @param {object} obj
|
|
265
|
+
* @param {function} fn
|
|
266
|
+
* @param {boolean} [capture]
|
|
267
|
+
* @return {object} An instance of base.
|
|
268
|
+
*/
|
|
269
|
+
on(event, obj, fn, capture)
|
|
270
|
+
{
|
|
271
|
+
let events = this.events;
|
|
272
|
+
if(this.isArray(event))
|
|
273
|
+
{
|
|
274
|
+
let evt;
|
|
275
|
+
for(var i = 0, length = event.length; i < length; i++)
|
|
276
|
+
{
|
|
277
|
+
evt = event[i];
|
|
278
|
+
events.add(evt, obj, fn, capture);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
else
|
|
282
|
+
{
|
|
283
|
+
events.add(event, obj, fn, capture);
|
|
284
|
+
}
|
|
285
|
+
return this;
|
|
286
|
+
},
|
|
287
|
+
|
|
288
|
+
/**
|
|
289
|
+
* This will remove an event from an object.
|
|
290
|
+
*
|
|
291
|
+
* @param {string} event The event name.
|
|
292
|
+
* @param {object} obj
|
|
293
|
+
* @param {function} fn
|
|
294
|
+
* @param {boolean} [capture]
|
|
295
|
+
* @return {object} An instance of base.
|
|
296
|
+
*/
|
|
297
|
+
off(event, obj, fn, capture)
|
|
298
|
+
{
|
|
299
|
+
let events = this.events;
|
|
300
|
+
if(this.isArray(event))
|
|
301
|
+
{
|
|
302
|
+
var evt;
|
|
303
|
+
for(var i = 0, length = event.length; i < length; i++)
|
|
304
|
+
{
|
|
305
|
+
evt = event[i];
|
|
306
|
+
events.remove(evt, obj, fn, capture);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
else
|
|
310
|
+
{
|
|
311
|
+
events.remove(event, obj, fn, capture);
|
|
312
|
+
}
|
|
313
|
+
return this;
|
|
314
|
+
},
|
|
315
|
+
|
|
316
|
+
/**
|
|
317
|
+
* This will remove an event from an object.
|
|
318
|
+
*
|
|
319
|
+
* @param {string} event The event name.
|
|
320
|
+
* @param {object} obj
|
|
321
|
+
* @param {function} fn
|
|
322
|
+
* @param {boolean} [capture]
|
|
323
|
+
* @return {object} An instance of base.
|
|
324
|
+
*/
|
|
325
|
+
removeListener(event, obj, fn, capture)
|
|
326
|
+
{
|
|
327
|
+
/* we want to remove this from the active events */
|
|
328
|
+
this.events.remove(event, obj, fn, capture);
|
|
329
|
+
|
|
330
|
+
return this;
|
|
331
|
+
},
|
|
332
|
+
|
|
333
|
+
/**
|
|
334
|
+
* This will create a custom event.
|
|
335
|
+
*
|
|
336
|
+
* @protected
|
|
337
|
+
* @param {object} event
|
|
338
|
+
* @param {string} eventType
|
|
339
|
+
* @param {object} [settings]
|
|
340
|
+
* @param {object} [params]
|
|
341
|
+
* @return {object}
|
|
342
|
+
*/
|
|
343
|
+
_createEvent(event, eventType, settings, params)
|
|
344
|
+
{
|
|
345
|
+
let e;
|
|
346
|
+
if(eventType === 'HTMLEvents')
|
|
347
|
+
{
|
|
348
|
+
e = new Event(event);
|
|
349
|
+
}
|
|
350
|
+
else if(eventType === 'MouseEvents')
|
|
351
|
+
{
|
|
352
|
+
e = new MouseEvent(event, settings);
|
|
353
|
+
}
|
|
354
|
+
else
|
|
355
|
+
{
|
|
356
|
+
e = new CustomEvent(event, params);
|
|
357
|
+
}
|
|
358
|
+
return e;
|
|
359
|
+
},
|
|
360
|
+
|
|
361
|
+
/**
|
|
362
|
+
* This will create a custom event. This supports html, mouse,
|
|
363
|
+
* and customevents.
|
|
364
|
+
*
|
|
365
|
+
* @param {string} event
|
|
366
|
+
* @param {object} obj
|
|
367
|
+
* @param {object} [options]
|
|
368
|
+
* @param {object} [params]
|
|
369
|
+
* @return {object}
|
|
370
|
+
*/
|
|
371
|
+
createEvent(event, obj, options, params)
|
|
372
|
+
{
|
|
373
|
+
if(this.isObject(obj) === false)
|
|
374
|
+
{
|
|
375
|
+
return false;
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
let settings =
|
|
379
|
+
{
|
|
380
|
+
pointerX: 0,
|
|
381
|
+
pointerY: 0,
|
|
382
|
+
button: 0,
|
|
383
|
+
view: window,
|
|
384
|
+
detail: 1,
|
|
385
|
+
screenX: 0,
|
|
386
|
+
screenY: 0,
|
|
387
|
+
clientX: 0,
|
|
388
|
+
clientY: 0,
|
|
389
|
+
ctrlKey: false,
|
|
390
|
+
altKey: false,
|
|
391
|
+
shiftKey: false,
|
|
392
|
+
metaKey: false,
|
|
393
|
+
bubbles: true,
|
|
394
|
+
cancelable: true,
|
|
395
|
+
relatedTarget: null
|
|
396
|
+
};
|
|
397
|
+
|
|
398
|
+
if(base.isObject(options))
|
|
399
|
+
{
|
|
400
|
+
settings = Object.assign(settings, options);
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
let eventType = this._getEventType(event);
|
|
404
|
+
return this._createEvent(event, eventType, settings, params);
|
|
405
|
+
},
|
|
406
|
+
|
|
407
|
+
/**
|
|
408
|
+
* This will get thetype of an event.
|
|
409
|
+
*
|
|
410
|
+
* @protected
|
|
411
|
+
* @param {string} event
|
|
412
|
+
* @return {string}
|
|
413
|
+
*/
|
|
414
|
+
_getEventType(event)
|
|
415
|
+
{
|
|
416
|
+
let eventTypes = {
|
|
417
|
+
'HTMLEvents': /^(?:load|unload|abort|error|select|change|submit|reset|focus|blur|resize|scroll)$/,
|
|
418
|
+
'MouseEvents': /^(?:click|dblclick|mouse(?:down|up|over|move|out))$/
|
|
419
|
+
},
|
|
420
|
+
|
|
421
|
+
value,
|
|
422
|
+
eventType = 'CustomEvent';
|
|
423
|
+
for(var prop in eventTypes)
|
|
424
|
+
{
|
|
425
|
+
if(eventTypes.hasOwnProperty(prop))
|
|
426
|
+
{
|
|
427
|
+
value = eventTypes[prop];
|
|
428
|
+
if(event.match(value))
|
|
429
|
+
{
|
|
430
|
+
eventType = prop;
|
|
431
|
+
break;
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
return eventType;
|
|
436
|
+
},
|
|
437
|
+
|
|
438
|
+
/**
|
|
439
|
+
* This will trigger an event.
|
|
440
|
+
*
|
|
441
|
+
* @param {(string|object)} event
|
|
442
|
+
* @param {object} obj
|
|
443
|
+
* @param {object} [params]
|
|
444
|
+
* @return {object}
|
|
445
|
+
*/
|
|
446
|
+
trigger(event, obj, params)
|
|
447
|
+
{
|
|
448
|
+
if(this.isObject(obj) === false)
|
|
449
|
+
{
|
|
450
|
+
return this;
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
let e = (typeof event === 'string')? this.createEvent(event, obj, null, params) : event;
|
|
454
|
+
obj.dispatchEvent(e);
|
|
455
|
+
return this;
|
|
456
|
+
},
|
|
457
|
+
|
|
458
|
+
/**
|
|
459
|
+
* @member {string} mouseWheelEventType The mouse wheel event name.
|
|
460
|
+
* @protected
|
|
461
|
+
*/
|
|
462
|
+
mouseWheelEventType: null,
|
|
463
|
+
|
|
464
|
+
/**
|
|
465
|
+
* This will get the system mouse event.
|
|
466
|
+
*
|
|
467
|
+
* @protected
|
|
468
|
+
* @return {string}
|
|
469
|
+
*/
|
|
470
|
+
getWheelEventType()
|
|
471
|
+
{
|
|
472
|
+
/* this will check what mouse wheel type
|
|
473
|
+
the client supports
|
|
474
|
+
@return (string) the event name */
|
|
475
|
+
let getMouseWheelType = () =>
|
|
476
|
+
{
|
|
477
|
+
let type = 'wheel';
|
|
478
|
+
if('onmousewheel' in self)
|
|
479
|
+
{
|
|
480
|
+
type = 'mousewheel';
|
|
481
|
+
}
|
|
482
|
+
else if('DOMMouseScroll' in self)
|
|
483
|
+
{
|
|
484
|
+
type = 'DOMMouseScroll';
|
|
485
|
+
}
|
|
486
|
+
return type;
|
|
487
|
+
};
|
|
488
|
+
|
|
489
|
+
/* this will get the event type or
|
|
490
|
+
one time set the type and return the type */
|
|
491
|
+
return this.mouseWheelEventType || (
|
|
492
|
+
this.mouseWheelEventType = getMouseWheelType()
|
|
493
|
+
);
|
|
494
|
+
},
|
|
495
|
+
|
|
496
|
+
/**
|
|
497
|
+
* This will add a mouse event to an object.
|
|
498
|
+
*
|
|
499
|
+
* @param {function} callBackFn
|
|
500
|
+
* @param {object} [obj]
|
|
501
|
+
* @param {boolean} [cancelDefault]
|
|
502
|
+
* @param {boolean} capture
|
|
503
|
+
* @return {object} base object.
|
|
504
|
+
*/
|
|
505
|
+
onMouseWheel(callBackFn, obj, cancelDefault, capture)
|
|
506
|
+
{
|
|
507
|
+
if(typeof obj === "undefined")
|
|
508
|
+
{
|
|
509
|
+
obj = window;
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
/* we want to return the mousewheel data
|
|
513
|
+
to this private callback function before
|
|
514
|
+
returning to the call back function*/
|
|
515
|
+
let mouseWheelResults = (e) =>
|
|
516
|
+
{
|
|
517
|
+
e = e || window.event;
|
|
518
|
+
let delta = Math.max(-1, Math.min(1, (-e.deltaY || e.wheelDelta || -e.detail)));
|
|
519
|
+
|
|
520
|
+
/* we can now send the mouse wheel results to
|
|
521
|
+
the call back function */
|
|
522
|
+
if(typeof callBackFn === 'function')
|
|
523
|
+
{
|
|
524
|
+
callBackFn(delta, e);
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
/* we want to check to cancel default */
|
|
528
|
+
if(cancelDefault === true)
|
|
529
|
+
{
|
|
530
|
+
e.preventDefault();
|
|
531
|
+
}
|
|
532
|
+
};
|
|
533
|
+
|
|
534
|
+
let event = this.getWheelEventType();
|
|
535
|
+
this.events.add(event, obj, mouseWheelResults, capture, true, callBackFn);
|
|
536
|
+
return this;
|
|
537
|
+
},
|
|
538
|
+
|
|
539
|
+
/**
|
|
540
|
+
* This will remove a mouse event
|
|
541
|
+
*
|
|
542
|
+
* @param {function} callBackFn
|
|
543
|
+
* @param {object} [obj]
|
|
544
|
+
* @param {boolean} capture
|
|
545
|
+
* @return {object} base object.
|
|
546
|
+
*/
|
|
547
|
+
offMouseWheel(callBackFn, obj, capture)
|
|
548
|
+
{
|
|
549
|
+
if(typeof obj === "undefined")
|
|
550
|
+
{
|
|
551
|
+
obj = window;
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
let event = this.getWheelEventType();
|
|
555
|
+
this.off(event, obj, callBackFn, capture);
|
|
556
|
+
return this;
|
|
557
|
+
},
|
|
558
|
+
|
|
559
|
+
/**
|
|
560
|
+
* This will prevent default on an event.
|
|
561
|
+
*
|
|
562
|
+
* @param {object} e
|
|
563
|
+
* @return {object} base object.
|
|
564
|
+
*/
|
|
565
|
+
preventDefault(e)
|
|
566
|
+
{
|
|
567
|
+
e = e || window.event;
|
|
568
|
+
|
|
569
|
+
if(typeof e.preventDefault === 'function')
|
|
570
|
+
{
|
|
571
|
+
e.preventDefault();
|
|
572
|
+
}
|
|
573
|
+
else
|
|
574
|
+
{
|
|
575
|
+
e.returnValue = false;
|
|
576
|
+
}
|
|
577
|
+
|
|
578
|
+
return this;
|
|
579
|
+
},
|
|
580
|
+
|
|
581
|
+
/**
|
|
582
|
+
* This will stop an event from propigating.
|
|
583
|
+
*
|
|
584
|
+
* @param {object} e
|
|
585
|
+
* @return {object} base object.
|
|
586
|
+
*/
|
|
587
|
+
stopPropagation(e)
|
|
588
|
+
{
|
|
589
|
+
e = e || window.event;
|
|
590
|
+
|
|
591
|
+
if(typeof e.stopPropagation === 'function')
|
|
592
|
+
{
|
|
593
|
+
e.stopPropagation();
|
|
594
|
+
}
|
|
595
|
+
else
|
|
596
|
+
{
|
|
597
|
+
e.cancelBubble = true;
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
return this;
|
|
601
|
+
}
|
|
602
|
+
});
|