jiro-ui
Version:
A Mithril.js UI library based from construct-ui
40 lines (39 loc) • 1.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.AbstractComponent = void 0;
var tslib_1 = require("tslib");
var AbstractComponent = /** @class */ (function () {
function AbstractComponent() {
var _this = this;
this.timeoutStack = [];
this.attrs = {};
this.setTimeout = function (callback, timeout) {
var handle = window.setTimeout(callback, timeout);
_this.timeoutStack.push(handle);
return function () { return window.clearTimeout(handle); };
};
this.clearTimeouts = function () {
if (_this.timeoutStack.length) {
_this.timeoutStack.map(function (timeout) { return clearTimeout(timeout); });
_this.timeoutStack = [];
}
};
}
AbstractComponent.prototype.oninit = function (vnode) {
vnode.attrs = vnode.attrs || {};
this.setAttrs(vnode);
};
AbstractComponent.prototype.onbeforeupdate = function (vnode, prev) {
this.setAttrs(vnode);
this.prevAttrs = prev.attrs;
};
AbstractComponent.prototype.setAttrs = function (vnode) {
vnode.attrs = this.getAttrs(vnode.attrs);
this.attrs = vnode.attrs;
};
AbstractComponent.prototype.getAttrs = function (attrs) {
return tslib_1.__assign(tslib_1.__assign({}, this.getDefaultAttrs()), attrs);
};
return AbstractComponent;
}());
exports.AbstractComponent = AbstractComponent;