UNPKG

mostly-dom

Version:
60 lines 2.35 kB
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 __()); }; })(); import { BaseModule } from './BaseModule'; import { emptyVNode } from './emptyVNode'; export function createEventsModule() { return new EventsModule(); } 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, vNode); }; EventsModule.prototype.update = function (formerVNode, vNode) { updateEventHandlers(formerVNode, vNode); }; EventsModule.prototype.destroy = function (vNode) { updateEventHandlers(vNode, emptyVNode); }; return EventsModule; }(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