clearwater 1.0.1 → 1.0.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 256b1415eb03a7d7fc0387bdd857b8e882adc19b3b83ba9818d38229caca40c4
4
- data.tar.gz: 3511d3b1e82bd70c1f5c87db315da2aaf868f691badd8c4bb37e42aaddf39bc5
3
+ metadata.gz: 74e6964e3d0351bc60d8408eb61a7c1c1b0dfa4c104e1c6501bea0bb22efaad7
4
+ data.tar.gz: 8d26463d18d90090535dcb1ae2aec75d55523a946f00f61b77720b6ddc875ceb
5
5
  SHA512:
6
- metadata.gz: 2c7056cc47c9326a1f4c9f052eca901849fb6db268ec4677742fe69805d923106a7770ad342018ea4aea4e215771230630204e5326047f8c8aba2019444c0bc5
7
- data.tar.gz: 4e765e3f0fa5ef7a44a232376ea3e0f891a8d2c93f6954b2555d0c8b7127f95d0aaaace5d46b9b12d64105ddfc1cf47ec435e589f4b664e948546401886c0090
6
+ metadata.gz: 175b25be82482194d1611adf8caac80db9d6d586bc79d42888546693e5e239ac2e3c5b1754d12c777498e0c40d4ea26cd1174ebc4dac261e521d4e8dafad70ab
7
+ data.tar.gz: 6ffc68f9d021de1fc0f0b8cd7f924b33571ad882436a55fdcd4f894ffb486a02a869fc1a7149750eb9b109555ce7e1c7e7315aaf03496c70e4969f62e00e8c46
@@ -1,3 +1,3 @@
1
1
  module Clearwater
2
- VERSION = "1.0.1"
2
+ VERSION = "1.0.2"
3
3
  end
@@ -1,6 +1,8 @@
1
1
  require 'bowser'
2
2
  require 'clearwater/router'
3
3
  require 'clearwater/application_registry'
4
+ require 'clearwater/virtual_dom'
5
+ require 'clearwater/component'
4
6
  require 'native'
5
7
 
6
8
  module Clearwater
@@ -0,0 +1,26 @@
1
+ require 'clearwater/dom_reference'
2
+ require 'bowser/element/canvas'
3
+
4
+ module Clearwater
5
+ module Canvas
6
+ def canvas(**properties, &block)
7
+ ref = Canvas.new(block)
8
+
9
+ tag(:canvas, ref: ref, **properties)
10
+ end
11
+
12
+ class Canvas < Clearwater::DOMReference
13
+ def initialize block
14
+ @block = block || proc {}
15
+ end
16
+
17
+ def mount node, previous
18
+ super
19
+
20
+ Bowser.window.animation_frame do
21
+ @block.call node.context
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -53,7 +53,7 @@ module Clearwater
53
53
  def render node
54
54
  if rendered?
55
55
  diff = VirtualDOM.diff @node, node
56
- VirtualDOM.patch @tree, diff
56
+ @tree = VirtualDOM.patch @tree, diff
57
57
  @node = node
58
58
  else
59
59
  @node = node
@@ -16,7 +16,6 @@ module Clearwater
16
16
  body
17
17
  br
18
18
  button
19
- canvas
20
19
  caption
21
20
  cite
22
21
  code
@@ -140,6 +140,8 @@ module Clearwater
140
140
  end
141
141
 
142
142
  def set_outlets targets=targets_for_path(current_path)
143
+ return unless application.component.respond_to? :outlet=
144
+
143
145
  trigger_routing_callbacks(path: current_path, previous_path: self.class.previous_path)
144
146
 
145
147
  if targets.any?
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: clearwater
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jamie Gaskins
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-01-22 00:00:00.000000000 Z
11
+ date: 2018-03-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: opal
@@ -130,13 +130,13 @@ files:
130
130
  - opal/clearwater/black_box_node.rb
131
131
  - opal/clearwater/cached_render.rb
132
132
  - opal/clearwater/cached_render/wrapper.rb
133
+ - opal/clearwater/canvas.rb
133
134
  - opal/clearwater/component.rb
134
135
  - opal/clearwater/dom_reference.rb
135
136
  - opal/clearwater/link.rb
136
137
  - opal/clearwater/memoized_component.rb
137
138
  - opal/clearwater/svg_component.rb
138
139
  - opal/clearwater/virtual_dom.rb
139
- - opal/clearwater/virtual_dom/js/dom-delegator.js
140
140
  - opal/clearwater/virtual_dom/js/virtual_dom.js
141
141
  - shared/clearwater/component/html_tags.rb
142
142
  - shared/clearwater/router.rb
@@ -1,664 +0,0 @@
1
- (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.DOMDelegator = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
2
- var EvStore = require("ev-store")
3
-
4
- module.exports = addEvent
5
-
6
- function addEvent(target, type, handler) {
7
- var events = EvStore(target)
8
- var event = events[type]
9
-
10
- if (!event) {
11
- events[type] = handler
12
- } else if (Array.isArray(event)) {
13
- if (event.indexOf(handler) === -1) {
14
- event.push(handler)
15
- }
16
- } else if (event !== handler) {
17
- events[type] = [event, handler]
18
- }
19
- }
20
-
21
- },{"ev-store":5}],2:[function(require,module,exports){
22
- var globalDocument = require("global/document")
23
- var EvStore = require("ev-store")
24
- var createStore = require("weakmap-shim/create-store")
25
-
26
- var addEvent = require("./add-event.js")
27
- var removeEvent = require("./remove-event.js")
28
- var ProxyEvent = require("./proxy-event.js")
29
-
30
- var HANDLER_STORE = createStore()
31
-
32
- module.exports = DOMDelegator
33
-
34
- function DOMDelegator(document) {
35
- if (!(this instanceof DOMDelegator)) {
36
- return new DOMDelegator(document);
37
- }
38
-
39
- document = document || globalDocument
40
-
41
- this.target = document.documentElement
42
- this.events = {}
43
- this.rawEventListeners = {}
44
- this.globalListeners = {}
45
- }
46
-
47
- DOMDelegator.prototype.addEventListener = addEvent
48
- DOMDelegator.prototype.removeEventListener = removeEvent
49
-
50
- DOMDelegator.allocateHandle =
51
- function allocateHandle(func) {
52
- var handle = new Handle()
53
-
54
- HANDLER_STORE(handle).func = func;
55
-
56
- return handle
57
- }
58
-
59
- DOMDelegator.transformHandle =
60
- function transformHandle(handle, broadcast) {
61
- var func = HANDLER_STORE(handle).func
62
-
63
- return this.allocateHandle(function (ev) {
64
- broadcast(ev, func);
65
- })
66
- }
67
-
68
- DOMDelegator.prototype.addGlobalEventListener =
69
- function addGlobalEventListener(eventName, fn) {
70
- var listeners = this.globalListeners[eventName] || [];
71
- if (listeners.indexOf(fn) === -1) {
72
- listeners.push(fn)
73
- }
74
-
75
- this.globalListeners[eventName] = listeners;
76
- }
77
-
78
- DOMDelegator.prototype.removeGlobalEventListener =
79
- function removeGlobalEventListener(eventName, fn) {
80
- var listeners = this.globalListeners[eventName] || [];
81
-
82
- var index = listeners.indexOf(fn)
83
- if (index !== -1) {
84
- listeners.splice(index, 1)
85
- }
86
- }
87
-
88
- DOMDelegator.prototype.listenTo = function listenTo(eventName) {
89
- if (!(eventName in this.events)) {
90
- this.events[eventName] = 0;
91
- }
92
-
93
- this.events[eventName]++;
94
-
95
- if (this.events[eventName] !== 1) {
96
- return
97
- }
98
-
99
- var listener = this.rawEventListeners[eventName]
100
- if (!listener) {
101
- listener = this.rawEventListeners[eventName] =
102
- createHandler(eventName, this)
103
- }
104
-
105
- this.target.addEventListener(eventName, listener, true)
106
- }
107
-
108
- DOMDelegator.prototype.unlistenTo = function unlistenTo(eventName) {
109
- if (!(eventName in this.events)) {
110
- this.events[eventName] = 0;
111
- }
112
-
113
- if (this.events[eventName] === 0) {
114
- throw new Error("already unlistened to event.");
115
- }
116
-
117
- this.events[eventName]--;
118
-
119
- if (this.events[eventName] !== 0) {
120
- return
121
- }
122
-
123
- var listener = this.rawEventListeners[eventName]
124
-
125
- if (!listener) {
126
- throw new Error("dom-delegator#unlistenTo: cannot " +
127
- "unlisten to " + eventName)
128
- }
129
-
130
- this.target.removeEventListener(eventName, listener, true)
131
- }
132
-
133
- function createHandler(eventName, delegator) {
134
- var globalListeners = delegator.globalListeners;
135
- var delegatorTarget = delegator.target;
136
-
137
- return handler
138
-
139
- function handler(ev) {
140
- var globalHandlers = globalListeners[eventName] || []
141
-
142
- if (globalHandlers.length > 0) {
143
- var globalEvent = new ProxyEvent(ev);
144
- globalEvent.currentTarget = delegatorTarget;
145
- callListeners(globalHandlers, globalEvent)
146
- }
147
-
148
- findAndInvokeListeners(ev.target, ev, eventName)
149
- }
150
- }
151
-
152
- function findAndInvokeListeners(elem, ev, eventName) {
153
- var listener = getListener(elem, eventName)
154
-
155
- if (listener && listener.handlers.length > 0) {
156
- var listenerEvent = new ProxyEvent(ev);
157
- listenerEvent.currentTarget = listener.currentTarget
158
- callListeners(listener.handlers, listenerEvent)
159
-
160
- if (listenerEvent._bubbles) {
161
- var nextTarget = listener.currentTarget.parentNode
162
- findAndInvokeListeners(nextTarget, ev, eventName)
163
- }
164
- }
165
- }
166
-
167
- function getListener(target, type) {
168
- // terminate recursion if parent is `null`
169
- if (target === null || typeof target === "undefined") {
170
- return null
171
- }
172
-
173
- var events = EvStore(target)
174
- // fetch list of handler fns for this event
175
- var handler = events[type]
176
- var allHandler = events.event
177
-
178
- if (!handler && !allHandler) {
179
- return getListener(target.parentNode, type)
180
- }
181
-
182
- var handlers = [].concat(handler || [], allHandler || [])
183
- return new Listener(target, handlers)
184
- }
185
-
186
- function callListeners(handlers, ev) {
187
- handlers.forEach(function (handler) {
188
- if (typeof handler === "function") {
189
- handler(ev)
190
- } else if (typeof handler.handleEvent === "function") {
191
- handler.handleEvent(ev)
192
- } else if (handler.type === "dom-delegator-handle") {
193
- HANDLER_STORE(handler).func(ev)
194
- } else {
195
- throw new Error("dom-delegator: unknown handler " +
196
- "found: " + JSON.stringify(handlers));
197
- }
198
- })
199
- }
200
-
201
- function Listener(target, handlers) {
202
- this.currentTarget = target
203
- this.handlers = handlers
204
- }
205
-
206
- function Handle() {
207
- this.type = "dom-delegator-handle"
208
- }
209
-
210
- },{"./add-event.js":1,"./proxy-event.js":13,"./remove-event.js":14,"ev-store":5,"global/document":8,"weakmap-shim/create-store":11}],3:[function(require,module,exports){
211
- var Individual = require("individual")
212
- var cuid = require("cuid")
213
- var globalDocument = require("global/document")
214
-
215
- var DOMDelegator = require("./dom-delegator.js")
216
-
217
- var versionKey = "13"
218
- var cacheKey = "__DOM_DELEGATOR_CACHE@" + versionKey
219
- var cacheTokenKey = "__DOM_DELEGATOR_CACHE_TOKEN@" + versionKey
220
- var delegatorCache = Individual(cacheKey, {
221
- delegators: {}
222
- })
223
- var commonEvents = [
224
- "blur", "change", "click", "contextmenu", "dblclick",
225
- "error","focus", "focusin", "focusout", "input", "keydown",
226
- "keypress", "keyup", "load", "mousedown", "mouseup",
227
- "resize", "select", "submit", "touchcancel",
228
- "touchend", "touchstart", "unload"
229
- ]
230
-
231
- /* Delegator is a thin wrapper around a singleton `DOMDelegator`
232
- instance.
233
-
234
- Only one DOMDelegator should exist because we do not want
235
- duplicate event listeners bound to the DOM.
236
-
237
- `Delegator` will also `listenTo()` all events unless
238
- every caller opts out of it
239
- */
240
- module.exports = Delegator
241
-
242
- function Delegator(opts) {
243
- opts = opts || {}
244
- var document = opts.document || globalDocument
245
-
246
- var cacheKey = document[cacheTokenKey]
247
-
248
- if (!cacheKey) {
249
- cacheKey =
250
- document[cacheTokenKey] = cuid()
251
- }
252
-
253
- var delegator = delegatorCache.delegators[cacheKey]
254
-
255
- if (!delegator) {
256
- delegator = delegatorCache.delegators[cacheKey] =
257
- new DOMDelegator(document)
258
- }
259
-
260
- if (opts.defaultEvents !== false) {
261
- for (var i = 0; i < commonEvents.length; i++) {
262
- delegator.listenTo(commonEvents[i])
263
- }
264
- }
265
-
266
- return delegator
267
- }
268
-
269
- Delegator.allocateHandle = DOMDelegator.allocateHandle;
270
- Delegator.transformHandle = DOMDelegator.transformHandle;
271
-
272
- },{"./dom-delegator.js":2,"cuid":4,"global/document":8,"individual":9}],4:[function(require,module,exports){
273
- /**
274
- * cuid.js
275
- * Collision-resistant UID generator for browsers and node.
276
- * Sequential for fast db lookups and recency sorting.
277
- * Safe for element IDs and server-side lookups.
278
- *
279
- * Extracted from CLCTR
280
- *
281
- * Copyright (c) Eric Elliott 2012
282
- * MIT License
283
- */
284
-
285
- /*global window, navigator, document, require, process, module */
286
- (function (app) {
287
- 'use strict';
288
- var namespace = 'cuid',
289
- c = 0,
290
- blockSize = 4,
291
- base = 36,
292
- discreteValues = Math.pow(base, blockSize),
293
-
294
- pad = function pad(num, size) {
295
- var s = "000000000" + num;
296
- return s.substr(s.length-size);
297
- },
298
-
299
- randomBlock = function randomBlock() {
300
- return pad((Math.random() *
301
- discreteValues << 0)
302
- .toString(base), blockSize);
303
- },
304
-
305
- safeCounter = function () {
306
- c = (c < discreteValues) ? c : 0;
307
- c++; // this is not subliminal
308
- return c - 1;
309
- },
310
-
311
- api = function cuid() {
312
- // Starting with a lowercase letter makes
313
- // it HTML element ID friendly.
314
- var letter = 'c', // hard-coded allows for sequential access
315
-
316
- // timestamp
317
- // warning: this exposes the exact date and time
318
- // that the uid was created.
319
- timestamp = (new Date().getTime()).toString(base),
320
-
321
- // Prevent same-machine collisions.
322
- counter,
323
-
324
- // A few chars to generate distinct ids for different
325
- // clients (so different computers are far less
326
- // likely to generate the same id)
327
- fingerprint = api.fingerprint(),
328
-
329
- // Grab some more chars from Math.random()
330
- random = randomBlock() + randomBlock();
331
-
332
- counter = pad(safeCounter().toString(base), blockSize);
333
-
334
- return (letter + timestamp + counter + fingerprint + random);
335
- };
336
-
337
- api.slug = function slug() {
338
- var date = new Date().getTime().toString(36),
339
- counter,
340
- print = api.fingerprint().slice(0,1) +
341
- api.fingerprint().slice(-1),
342
- random = randomBlock().slice(-2);
343
-
344
- counter = safeCounter().toString(36).slice(-4);
345
-
346
- return date.slice(-2) +
347
- counter + print + random;
348
- };
349
-
350
- api.globalCount = function globalCount() {
351
- // We want to cache the results of this
352
- var cache = (function calc() {
353
- var i,
354
- count = 0;
355
-
356
- for (i in window) {
357
- count++;
358
- }
359
-
360
- return count;
361
- }());
362
-
363
- api.globalCount = function () { return cache; };
364
- return cache;
365
- };
366
-
367
- api.fingerprint = function browserPrint() {
368
- return pad((navigator.mimeTypes.length +
369
- navigator.userAgent.length).toString(36) +
370
- api.globalCount().toString(36), 4);
371
- };
372
-
373
- // don't change anything from here down.
374
- if (app.register) {
375
- app.register(namespace, api);
376
- } else if (typeof module !== 'undefined') {
377
- module.exports = api;
378
- } else {
379
- app[namespace] = api;
380
- }
381
-
382
- }(this.applitude || this));
383
-
384
- },{}],5:[function(require,module,exports){
385
- 'use strict';
386
-
387
- var OneVersionConstraint = require('individual/one-version');
388
-
389
- var MY_VERSION = '7';
390
- OneVersionConstraint('ev-store', MY_VERSION);
391
-
392
- var hashKey = '__EV_STORE_KEY@' + MY_VERSION;
393
-
394
- module.exports = EvStore;
395
-
396
- function EvStore(elem) {
397
- var hash = elem[hashKey];
398
-
399
- if (!hash) {
400
- hash = elem[hashKey] = {};
401
- }
402
-
403
- return hash;
404
- }
405
-
406
- },{"individual/one-version":7}],6:[function(require,module,exports){
407
- (function (global){
408
- 'use strict';
409
-
410
- /*global window, global*/
411
-
412
- var root = typeof window !== 'undefined' ?
413
- window : typeof global !== 'undefined' ?
414
- global : {};
415
-
416
- module.exports = Individual;
417
-
418
- function Individual(key, value) {
419
- if (key in root) {
420
- return root[key];
421
- }
422
-
423
- root[key] = value;
424
-
425
- return value;
426
- }
427
-
428
- }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
429
- },{}],7:[function(require,module,exports){
430
- 'use strict';
431
-
432
- var Individual = require('./index.js');
433
-
434
- module.exports = OneVersion;
435
-
436
- function OneVersion(moduleName, version, defaultValue) {
437
- var key = '__INDIVIDUAL_ONE_VERSION_' + moduleName;
438
- var enforceKey = key + '_ENFORCE_SINGLETON';
439
-
440
- var versionValue = Individual(enforceKey, version);
441
-
442
- if (versionValue !== version) {
443
- throw new Error('Can only have one copy of ' +
444
- moduleName + '.\n' +
445
- 'You already have version ' + versionValue +
446
- ' installed.\n' +
447
- 'This means you cannot install version ' + version);
448
- }
449
-
450
- return Individual(key, defaultValue);
451
- }
452
-
453
- },{"./index.js":6}],8:[function(require,module,exports){
454
- (function (global){
455
- var topLevel = typeof global !== 'undefined' ? global :
456
- typeof window !== 'undefined' ? window : {}
457
- var minDoc = require('min-document');
458
-
459
- var doccy;
460
-
461
- if (typeof document !== 'undefined') {
462
- doccy = document;
463
- } else {
464
- doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'];
465
-
466
- if (!doccy) {
467
- doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'] = minDoc;
468
- }
469
- }
470
-
471
- module.exports = doccy;
472
-
473
- }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
474
- },{"min-document":15}],9:[function(require,module,exports){
475
- (function (global){
476
- var root = typeof window !== 'undefined' ?
477
- window : typeof global !== 'undefined' ?
478
- global : {};
479
-
480
- module.exports = Individual
481
-
482
- function Individual(key, value) {
483
- if (root[key]) {
484
- return root[key]
485
- }
486
-
487
- Object.defineProperty(root, key, {
488
- value: value
489
- , configurable: true
490
- })
491
-
492
- return value
493
- }
494
-
495
- }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
496
- },{}],10:[function(require,module,exports){
497
- if (typeof Object.create === 'function') {
498
- // implementation from standard node.js 'util' module
499
- module.exports = function inherits(ctor, superCtor) {
500
- ctor.super_ = superCtor
501
- ctor.prototype = Object.create(superCtor.prototype, {
502
- constructor: {
503
- value: ctor,
504
- enumerable: false,
505
- writable: true,
506
- configurable: true
507
- }
508
- });
509
- };
510
- } else {
511
- // old school shim for old browsers
512
- module.exports = function inherits(ctor, superCtor) {
513
- ctor.super_ = superCtor
514
- var TempCtor = function () {}
515
- TempCtor.prototype = superCtor.prototype
516
- ctor.prototype = new TempCtor()
517
- ctor.prototype.constructor = ctor
518
- }
519
- }
520
-
521
- },{}],11:[function(require,module,exports){
522
- var hiddenStore = require('./hidden-store.js');
523
-
524
- module.exports = createStore;
525
-
526
- function createStore() {
527
- var key = {};
528
-
529
- return function (obj) {
530
- if ((typeof obj !== 'object' || obj === null) &&
531
- typeof obj !== 'function'
532
- ) {
533
- throw new Error('Weakmap-shim: Key must be object')
534
- }
535
-
536
- var store = obj.valueOf(key);
537
- return store && store.identity === key ?
538
- store : hiddenStore(obj, key);
539
- };
540
- }
541
-
542
- },{"./hidden-store.js":12}],12:[function(require,module,exports){
543
- module.exports = hiddenStore;
544
-
545
- function hiddenStore(obj, key) {
546
- var store = { identity: key };
547
- var valueOf = obj.valueOf;
548
-
549
- Object.defineProperty(obj, "valueOf", {
550
- value: function (value) {
551
- return value !== key ?
552
- valueOf.apply(this, arguments) : store;
553
- },
554
- writable: true
555
- });
556
-
557
- return store;
558
- }
559
-
560
- },{}],13:[function(require,module,exports){
561
- var inherits = require("inherits")
562
-
563
- var ALL_PROPS = [
564
- "altKey", "bubbles", "cancelable", "ctrlKey",
565
- "eventPhase", "metaKey", "relatedTarget", "shiftKey",
566
- "target", "timeStamp", "type", "view", "which"
567
- ]
568
- var KEY_PROPS = ["char", "charCode", "key", "keyCode"]
569
- var MOUSE_PROPS = [
570
- "button", "buttons", "clientX", "clientY", "layerX",
571
- "layerY", "offsetX", "offsetY", "pageX", "pageY",
572
- "screenX", "screenY", "toElement"
573
- ]
574
-
575
- var rkeyEvent = /^key|input/
576
- var rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/
577
-
578
- module.exports = ProxyEvent
579
-
580
- function ProxyEvent(ev) {
581
- if (!(this instanceof ProxyEvent)) {
582
- return new ProxyEvent(ev)
583
- }
584
-
585
- if (rkeyEvent.test(ev.type)) {
586
- return new KeyEvent(ev)
587
- } else if (rmouseEvent.test(ev.type)) {
588
- return new MouseEvent(ev)
589
- }
590
-
591
- for (var i = 0; i < ALL_PROPS.length; i++) {
592
- var propKey = ALL_PROPS[i]
593
- this[propKey] = ev[propKey]
594
- }
595
-
596
- this._rawEvent = ev
597
- this._bubbles = false;
598
- }
599
-
600
- ProxyEvent.prototype.preventDefault = function () {
601
- this._rawEvent.preventDefault()
602
- }
603
-
604
- ProxyEvent.prototype.startPropagation = function () {
605
- this._bubbles = true;
606
- }
607
-
608
- function MouseEvent(ev) {
609
- for (var i = 0; i < ALL_PROPS.length; i++) {
610
- var propKey = ALL_PROPS[i]
611
- this[propKey] = ev[propKey]
612
- }
613
-
614
- for (var j = 0; j < MOUSE_PROPS.length; j++) {
615
- var mousePropKey = MOUSE_PROPS[j]
616
- this[mousePropKey] = ev[mousePropKey]
617
- }
618
-
619
- this._rawEvent = ev
620
- }
621
-
622
- inherits(MouseEvent, ProxyEvent)
623
-
624
- function KeyEvent(ev) {
625
- for (var i = 0; i < ALL_PROPS.length; i++) {
626
- var propKey = ALL_PROPS[i]
627
- this[propKey] = ev[propKey]
628
- }
629
-
630
- for (var j = 0; j < KEY_PROPS.length; j++) {
631
- var keyPropKey = KEY_PROPS[j]
632
- this[keyPropKey] = ev[keyPropKey]
633
- }
634
-
635
- this._rawEvent = ev
636
- }
637
-
638
- inherits(KeyEvent, ProxyEvent)
639
-
640
- },{"inherits":10}],14:[function(require,module,exports){
641
- var EvStore = require("ev-store")
642
-
643
- module.exports = removeEvent
644
-
645
- function removeEvent(target, type, handler) {
646
- var events = EvStore(target)
647
- var event = events[type]
648
-
649
- if (!event) {
650
- return
651
- } else if (Array.isArray(event)) {
652
- var index = event.indexOf(handler)
653
- if (index !== -1) {
654
- event.splice(index, 1)
655
- }
656
- } else if (event === handler) {
657
- events[type] = null
658
- }
659
- }
660
-
661
- },{"ev-store":5}],15:[function(require,module,exports){
662
-
663
- },{}]},{},[3])(3)
664
- });