mostly-dom
Version:
A virtual-dom for TypeScript
63 lines • 2.51 kB
JavaScript
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
}
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var BaseModule_1 = require("./BaseModule");
var emptyVNode_1 = require("./emptyVNode");
function createEventsModule() {
return new EventsModule();
}
exports.createEventsModule = createEventsModule;
var EventsModule = /** @class */ (function (_super) {
__extends(EventsModule, _super);
function EventsModule() {
return _super !== null && _super.apply(this, arguments) || this;
}
EventsModule.prototype.create = function (vNode) {
updateEventHandlers(emptyVNode_1.emptyVNode, vNode);
};
EventsModule.prototype.update = function (formerVNode, vNode) {
updateEventHandlers(formerVNode, vNode);
};
EventsModule.prototype.destroy = function (vNode) {
updateEventHandlers(vNode, emptyVNode_1.emptyVNode);
};
return EventsModule;
}(BaseModule_1.BaseModule));
function updateEventHandlers(formerVNode, vNode) {
var formerElement = formerVNode.element, _a = formerVNode.props, _b = _a.on, formerOn = _b === void 0 ? {} : _b, _c = _a.listener, formerListener = _c === void 0 ? createListener(vNode) : _c;
var element = vNode.element, _d = vNode.props.on, on = _d === void 0 ? {} : _d;
if (formerOn === on)
return;
var listener = vNode.props.listener = formerListener;
for (var name_1 in formerOn)
if (!on[name_1])
formerElement.removeEventListener(name_1, listener, false);
for (var name_2 in on)
if (!formerOn[name_2])
element.addEventListener(name_2, listener, false);
}
function createListener(vNode) {
return function (event) {
handleEvent(event, vNode);
};
}
function handleEvent(event, vNode) {
var type = event.type;
var _a = vNode.props.on, on = _a === void 0 ? {} : _a;
var handler = on[type];
if (handler)
handler(event, vNode);
}
//# sourceMappingURL=events.js.map
;