UNPKG

cnl

Version:
183 lines (167 loc) 5.15 kB
var Component, Event, extend = require("extends__"), hasProp = {}.hasOwnProperty; Event = require('ecl/dist/event'); module.exports = Component = (function(superClass) { extend(Component, superClass); function Component() { var fn, i, j, len, len1, ref, ref1, type; Component.__super__.constructor.apply(this, arguments); ref = ['grab', 'release', 'drag']; fn = (function(_this) { return function(type) { _this.addListener({ type: type, capture: true, listener: function(event) { var ref1; if (!((ref1 = this.events) != null ? ref1[type] : void 0)) { return event.cancel().stop(); } } }); return _this.addListener({ type: type, capture: false, listener: function(event) { var ref1; if (!((ref1 = this.events) != null ? ref1[type] : void 0)) { return event.cancel().stop(); } } }); }; })(this); for (i = 0, len = ref.length; i < len; i++) { type = ref[i]; fn(type); } ref1 = ['grab', 'release', 'drag']; for (j = 0, len1 = ref1.length; j < len1; j++) { type = ref1[j]; this.addListener(type, this[type + "CaptureListener"], true); this.addListener(type, this[type + "Listener"], false); } } Component.prototype.mousemoveCaptureListener = function(event) { var $, ref, ref1, ref2, ref3, ref4, regions; Component.__super__.mousemoveCaptureListener.apply(this, arguments); if (event) { $ = this.___runtime; this.state = null; if ($.grab) { this.state = 'active'; if ((ref = this.events) != null ? ref.drag : void 0) { this.broadcastEvent(new Event({ type: 'drag', x: event.x, y: event.y, offsetX: event.x - (((ref1 = $.dragEvent) != null ? ref1.x : void 0) || ((ref2 = $.grabEvent) != null ? ref2.x : void 0) || 0), offsetY: event.y - (((ref3 = $.dragEvent) != null ? ref3.y : void 0) || ((ref4 = $.grabEvent) != null ? ref4.y : void 0) || 0) })); } } else if (regions = event.regions) { this.state = (regions.hover ? 'hover' : regions.normal ? 'normal' : void 0); } } return this; }; Component.prototype.mousedownCaptureListener = function(event) { var i, len, name, ref, regions, state; Component.__super__.mousedownCaptureListener.apply(this, arguments); if (event && (regions = event.regions)) { ref = ['active', 'hover', 'normal']; for (i = 0, len = ref.length; i < len; i++) { name = ref[i]; if (!regions[name]) { continue; } state = name; break; } if ((this.state = state || null)) { event.target = this; } } return this; }; Component.prototype.mouseupCaptureListener = function(event) { var $, i, len, name, ref, ref1, regions, state; Component.__super__.mouseupCaptureListener.apply(this, arguments); if (event) { $ = this.___runtime; if (regions = event.regions) { ref = ['active', 'hover', 'normal']; for (i = 0, len = ref.length; i < len; i++) { name = ref[i]; if (!regions[name]) { continue; } state = name; break; } } if ((this.state = state || null)) { event.target = this; } if ($.grab) { $.grab = false; if ((ref1 = this.events) != null ? ref1.release : void 0) { this.broadcastEvent($.releaseEvent = new Event({ type: 'release', x: event.x, y: event.y })); } } } return this; }; Component.prototype.mousedownListener = function(event) { var $, ref; Component.__super__.mousedownListener.apply(this, arguments); if (event) { if ((this.state === 'active') && ((ref = this.events) != null ? ref.grab : void 0)) { ($ = this.___runtime).grab = true; $.dragEvent = null; this.broadcastEvent(new Event({ type: 'grab', x: event.x, y: event.y })); } } return this; }; Component.prototype.dragCaptureListener = function(event) { if (event) { this.___runtime.dragEvent = event; this.localizeEventCoordinates(event); } return this; }; Component.prototype.grabCaptureListener = function(event) { if (event) { this.___runtime.grabEvent = event; this.localizeEventCoordinates(event); } return this; }; Component.prototype.releaseCaptureListener = function(event) { if (event) { this.___runtime.releaseEvent = event; this.localizeEventCoordinates(event); } return this; }; Component.prototype.dragListener = function() { return this; }; Component.prototype.grabListener = function() { return this; }; Component.prototype.releaseListener = function() { return this; }; return Component; })(require('./shape'));