Comparing version 0.2.5 to 0.2.6
@@ -6,3 +6,3 @@ "use strict"; | ||
}); | ||
exports.fromKefir = undefined; | ||
exports.fromClass = exports.fromKefir = undefined; | ||
@@ -244,13 +244,20 @@ var _react = require("react"); | ||
if (n === 1) { | ||
this.values = this; | ||
var handlers = function handlers(e) { | ||
return _this2.doHandle1(e); | ||
}; | ||
this.handlers = handlers; | ||
forEach(props, handlers, onAny1); | ||
} else { | ||
this.values = Array(n).fill(this); | ||
this.handlers = []; | ||
forEach(props, this, onAny); | ||
switch (n) { | ||
case 0: | ||
this.values = _infestines.array0; | ||
break; | ||
case 1: | ||
{ | ||
this.values = this; | ||
var handlers = function handlers(e) { | ||
return _this2.doHandle1(e); | ||
}; | ||
this.handlers = handlers; | ||
forEach(props, handlers, onAny1); | ||
break; | ||
} | ||
default: | ||
this.values = Array(n).fill(this); | ||
this.handlers = []; | ||
forEach(props, this, onAny); | ||
} | ||
@@ -368,2 +375,10 @@ }, | ||
exports.default = (0, _infestines.assocPartialU)("createElement", createElement, _react2.default); | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9rYXJldC5qcyJdLCJuYW1lcyI6WyJyZWFjdEVsZW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiQ29tcG9uZW50IiwiaXNPYnMiLCJ4IiwiTGlmdGVkQ29tcG9uZW50IiwicHJvcHMiLCJjYWxsIiwiY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyIsIm5leHRQcm9wcyIsImRvVW5zdWJzY3JpYmUiLCJkb1N1YnNjcmliZSIsImNvbXBvbmVudFdpbGxNb3VudCIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwiRnJvbUtlZmlyIiwiY2FsbGJhY2siLCJyZW5kZXJlZCIsIm9ic2VydmFibGUiLCJvZmZBbnkiLCJlIiwidHlwZSIsInZhbHVlIiwiZm9yY2VVcGRhdGUiLCJvbkFueSIsInJlbmRlciIsImZyb21LZWZpciIsImhhc09icyIsImtleSIsInZhbCIsImsiLCJ2YWxLIiwiZm9yRWFjaCIsImV4dHJhIiwiZm4iLCJjaGlsZHJlbiIsImNvbnN0cnVjdG9yIiwiQXJyYXkiLCJpIiwibGVuZ3RoIiwidmFsdWVzIiwibmV3UHJvcHMiLCJuZXdDaGlsZHJlbiIsIm4iLCJ2YWxJIiwiaiIsInJlZiIsIm5ld1N0eWxlIiwic3R5bGUiLCJhcHBseSIsImNvbmNhdCIsImluY1ZhbHVlcyIsInNlbGYiLCJvZmZBbnkxIiwiaGFuZGxlcnMiLCJvYnMiLCJoYW5kbGVyIiwicG9wIiwib25BbnkxIiwiZG9IYW5kbGVOIiwicHVzaCIsIkZyb21DbGFzcyIsIkZ1bmN0aW9uIiwicmV2ZXJzZSIsImRvSGFuZGxlMSIsImZpbGwiLCJpZHgiLCJoYXNBbnlPYnMiLCJhcmdzIiwiYXJnIiwiaXNBcnJheSIsIm0iLCJmaWx0ZXJQcm9wcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOzs7O0FBQ0E7O0FBQ0E7Ozs7QUFFQTs7QUFFQSxJQUFNQSxlQUFlLGdCQUFNQyxhQUEzQjtBQUNBLElBQU1DLFlBQVksZ0JBQU1BLFNBQXhCOztBQUVBLElBQU1DLFFBQVEsU0FBUkEsS0FBUTtB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R0FBcEIsQ0FERixLQUVLLElBQUksaUJBQWlCRCxHQUFyQixFQUNIYSxTQUFTYixHQUFULElBQWdCQyxHQUFoQjtBQUNIO0FBQ0QsU0FBT1ksUUFBUDtBQUNEOztBQUVELFNBQVN2QyxhQUFULEdBQWdDO0FBQUEsb0NBQU5rRSxJQUFNO0FBQU5BLFFBQU07QUFBQTs7QUFDOUIsTUFBTS9DLE9BQU8rQyxLQUFLLENBQUwsQ0FBYjtBQUNBLE1BQU03RCxRQUFRNkQsS0FBSyxDQUFMLENBQWQ7QUFDQSxNQUFJLE9BQU8vQyxJQUFQLEtBQWdCLFFBQWhCLElBQTRCOEMsVUFBVTVELEtBQVYsRUFBaUI2RCxJQUFqQixDQUFoQyxFQUF3RDtBQUN0REEsU0FBSyxDQUFMLElBQVVJLFlBQVluRCxJQUFaLEVBQWtCZCxLQUFsQixDQUFWO0FBQ0E2RCxTQUFLLENBQUwsSUFBVVAsU0FBVjtBQUNELEdBSEQsTUFHTyxJQUFJdEQsU0FBU0EsTUFBTSxZQUFOLE1BQXdCLElBQXJDLEVBQTJDO0FBQ2hELFFBQUk0RCxVQUFVNUQsS0FBVixFQUFpQjZELElBQWpCLENBQUosRUFBNEI7QUFDMUJBLFdBQUssQ0FBTCxJQUFVSSxZQUFZbkQsSUFBWixFQUFrQmQsS0FBbEIsQ0FBVjtBQUNBNkQsV0FBSyxDQUFMLElBQVVQLFNBQVY7QUFDRCxLQUhELE1BR087QUFDTE8sV0FBSyxDQUFMLElBQVUsZ0NBQWUsWUFBZixFQUE2QjdELEtBQTdCLHdCQUFWO0FBQ0Q7QUFDRjtBQUNELFNBQU9OLDhCQUFnQm1FLElBQWhCLENBQVA7QUFDRDs7a0JBRWMsK0JBQWMsZUFBZCxFQUErQmxFLGFBQS9CLGtCIiwiZmlsZSI6ImthcmV0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gXCJrZWZpclwiXG5pbXBvcnQge2Fzc29jUGFydGlhbFUsIGRpc3NvY1BhcnRpYWxVLCBvYmplY3QwLCBpbmhlcml0fSBmcm9tIFwiaW5mZXN0aW5lc1wiXG5cbi8vXG5cbmNvbnN0IHJlYWN0RWxlbWVudCA9IFJlYWN0LmNyZWF0ZUVsZW1lbnRcbmNvbnN0IENvbXBvbmVudCA9IFJlYWN0LkNvbXBvbmVudFxuXG5jb25zdCBpc09icyA9IHggPT4geCBpbnN0YW5jZW9mIE9ic2VydmFibGVcblxuLy9cblxuZnVuY3Rpb24gTGlmdGVkQ29tcG9uZW50KHByb3BzKSB7XG4gIENvbXBvbmVudC5jYWxsKHRoaXMsIHByb3BzKVxufVxuXG5pbmhlcml0KExpZnRlZENvbXBvbmVudCwgQ29tcG9uZW50LCB7XG4gIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobmV4dFByb3BzKSB7XG4gICAgdGhpcy5kb1Vuc3Vic2NyaWJlKClcbiAgICB0aGlzLmRvU3Vic2NyaWJlKG5leHRQcm9wcylcbiAgfSxcbiAgY29tcG9uZW50V2lsbE1vdW50KCkge1xuICAgIHRoaXMuZG9TdWJzY3JpYmUodGhpcy5wcm9wcylcbiAgfSxcbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgdGhpcy5kb1Vuc3Vic2NyaWJlKClcbiAgfVxufSlcblxuLy9cblxuZnVuY3Rpb24gRnJvbUtlZmlyKHByb3BzKSB7XG4gIExpZnRlZENvbXBvbmVudC5jYWxsKHRoaXMsIHByb3BzKVxuICB0aGlzLmNhbGxiYWNrID0gbnVsbFxuICB0aGlzLnJlbmRlcmVkID0gbnVsbFxufVxuXG5pbmhlcml0KEZyb21LZWZpciwgTGlmdGVkQ29tcG9uZW50LCB7XG4gIGRvVW5zdWJzY3JpYmUoKSB7XG4gICAgY29uc3QgY2FsbGJhY2sgPSB0aGlzLmNhbGxiYWNrXG4gICAgaWYgKGNhbGxiYWNrKVxuICAgICAgdGhpcy5wcm9wcy5vYnNlcnZhYmxlLm9mZkFueShjYWxsYmFjaylcbiAgfSxcbiAgZG9TdWJzY3JpYmUoe29ic2VydmFibGV9KSB7XG4gICAgaWYgKGlzT2JzKG9ic2VydmFibGUpKSB7XG4gICAgICBjb25zdCBjYWxsYmFjayA9IGUgPT4ge1xuICAgICAgICBzd2l0Y2ggKGUudHlwZSkge1xuICAgICAgICAgIGNhc2UgXCJ2YWx1ZVwiOlxuICAgICAgICAgICAgdGhpcy5yZW5kZXJlZCA9IGUudmFsdWUgfHwgbnVsbFxuICAgICAgICAgICAgdGhpcy5mb3JjZVVwZGF0ZSgpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIGNhc2UgXCJlcnJvclwiOlxuICAgICAgICAgICAgdGhyb3cgZS52YWx1ZVxuICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgIHRoaXMuY2FsbGJhY2sgPSBudWxsXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuY2FsbGJhY2sgPSBjYWxsYmFja1xuICAgICAgb2JzZXJ2YWJsZS5vbkFueShjYWxsYmFjaylcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZW5kZXJlZCA9IG9ic2VydmFibGUgfHwgbnVsbFxuICAgIH1cbiAgfSxcbiAgcmVuZGVyKCkge1xuICAgIHJldHVybiB0aGlzLnJlbmRlcmVkXG4gIH1cbn0pXG5cbmV4cG9ydCBjb25zdCBmcm9tS2VmaXIgPSBvYnNlcnZhYmxlID0+IHJlYWN0RWxlbWVudChGcm9tS2VmaXIsIHtvYnNlcnZhYmxlfSlcblxuLy9cblxuZnVuY3Rpb24gaGFzT2JzKHByb3BzKSB7XG4gIGZvciAoY29uc3Qga2V5IGluIHByb3BzKSB7XG4gICAgY29uc3QgdmFsID0gcHJvcHNba2V5XVxuICAgIGlmIChpc09icyh2YWwpKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH0gZWxzZSBpZiAoXCJzdHlsZVwiID09PSBrZXkpIHtcbiAgICAgIGZvciAoY29uc3QgayBpbiB2YWwpIHtcbiAgICAgICAgY29uc3QgdmFsSyA9IHZhbFtrXVxuICAgICAgICBpZiAoaXNPYnModmFsSykpXG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmZ1bmN0aW9uIGZvckVhY2gocHJvcHMsIGV4dHJhLCBmbikge1xuICBmb3IgKGNvbnN0IGtleSBpbiBwcm9wcykge1xuICAgIGNvbnN0IHZhbCA9IHByb3BzW2tleV1cbiAgICBpZiAoaXNPYnModmFsKSkge1xuICAgICAgZm4oZXh0cmEsIHZhbClcbiAgICB9IGVsc2UgaWYgKFwiY2hpbGRyZW5cIiA9PT0ga2V5KSB7XG4gICAgICBjb25zdCBjaGlsZHJlbiA9IHByb3BzW2tleV1cbiAgICAgIGlmIChjaGlsZHJlbi5jb25zdHJ1Y3RvciA9PT0gQXJyYXkpIHtcbiAgICAgICAgZm9yIChsZXQgaT0wOyBpPGNoaWxkcmVuLmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgY29uc3QgdmFsID0gY2hpbGRyZW5baV1cbiAgICAgICAgICBpZiAoaXNPYnModmFsKSlcbiAgICAgICAgICAgIGZuKGV4dHJhLCB2YWwpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKFwic3R5bGVcIiA9PT0ga2V5KSB7XG4gICAgICBmb3IgKGNvbnN0IGsgaW4gdmFsKSB7XG4gICAgICAgIGNvbnN0IHZhbEsgPSB2YWxba11cbiAgICAgICAgaWYgKGlzT2JzKHZhbEspKVxuICAgICAgICAgIGZuKGV4dHJhLCB2YWxLKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiByZW5kZXIocHJvcHMsIHZhbHVlcykge1xuICBsZXQgdHlwZSA9IG51bGxcbiAgbGV0IG5ld1Byb3BzID0gbnVsbFxuICBsZXQgbmV3Q2hpbGRyZW4gPSBudWxsXG5cbiAgbGV0IGsgPSAtMVxuXG4gIGZvciAoY29uc3Qga2V5IGluIHByb3BzKSB7XG4gICAgY29uc3QgdmFsID0gcHJvcHNba2V5XVxuICAgIGlmIChcImNoaWxkcmVuXCIgPT09IGtleSkge1xuICAgICAgaWYgKGlzT2JzKHZhbCkpIHtcbiAgICAgICAgbmV3Q2hpbGRyZW4gPSB2YWx1ZXNbKytrXVxuICAgICAgfSBlbHNlIGlmICh2YWwuY29uc3RydWN0b3IgPT09IEFycmF5KSB7XG4gICAgICAgIGZvciAobGV0IGk9MCwgbj12YWwubGVuZ3RoOyBpPG47ICsraSkge1xuICAgICAgICAgIGNvbnN0IHZhbEkgPSB2YWxbaV1cbiAgICAgICAgICBpZiAoaXNPYnModmFsSSkpIHtcbiAgICAgICAgICAgIGlmICghbmV3Q2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgbmV3Q2hpbGRyZW4gPSBBcnJheSh2YWwubGVuZ3RoKVxuICAgICAgICAgICAgICBmb3IgKGxldCBqPTA7IGo8aTsgKytqKVxuICAgICAgICAgICAgICAgIG5ld0NoaWxkcmVuW2pdID0gdmFsW2pdXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBuZXdDaGlsZHJlbltpXSA9IHZhbHVlc1srK2tdXG4gICAgICAgICAgfSBlbHNlIGlmIChuZXdDaGlsZHJlbilcbiAgICAgICAgICAgIG5ld0NoaWxkcmVuW2ldID0gdmFsSVxuICAgICAgICB9XG4gICAgICAgIGlmICghbmV3Q2hpbGRyZW4pXG4gICAgICAgICAgbmV3Q2hpbGRyZW4gPSB2YWxcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld0NoaWxkcmVuID0gdmFsXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChcIiQkcmVmXCIgPT09IGtleSkge1xuICAgICAgbmV3UHJvcHMgPSBuZXdQcm9wcyB8fCB7fVxuICAgICAgbmV3UHJvcHMucmVmID0gaXNPYnModmFsKSA/IHZhbHVlc1srK2tdIDogdmFsXG4gICAgfSBlbHNlIGlmIChpc09icyh2YWwpKSB7XG4gICAgICBuZXdQcm9wcyA9IG5ld1Byb3BzIHx8IHt9XG4gICAgICBuZXdQcm9wc1trZXldID0gdmFsdWVzWysra11cbiAgICB9IGVsc2UgaWYgKFwic3R5bGVcIiA9PT0ga2V5KSB7XG4gICAgICBsZXQgbmV3U3R5bGVcbiAgICAgIGZvciAoY29uc3QgaSBpbiB2YWwpIHtcbiAgICAgICAgY29uc3QgdmFsSSA9IHZhbFtpXVxuICAgICAgICBpZiAoaXNPYnModmFsSSkpIHtcbiAgICAgICAgICBpZiAoIW5ld1N0eWxlKSB7XG4gICAgICAgICAgICBuZXdTdHlsZSA9IHt9XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGogaW4gdmFsKSB7XG4gICAgICAgICAgICAgIGlmIChqID09PSBpKVxuICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgIG5ld1N0eWxlW2pdID0gdmFsW2pdXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIG5ld1N0eWxlW2ldID0gdmFsdWVzWysra11cbiAgICAgICAgfSBlbHNlIGlmIChuZXdTdHlsZSkge1xuICAgICAgICAgIG5ld1N0eWxlW2ldID0gdmFsSVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBuZXdQcm9wcyA9IG5ld1Byb3BzIHx8IHt9XG4gICAgICBuZXdQcm9wcy5zdHlsZSA9IG5ld1N0eWxlIHx8IHZhbFxuICAgIH0gZWxzZSBpZiAoXCIkJHR5cGVcIiA9PT0ga2V5KSB7XG4gICAgICB0eXBlID0gcHJvcHNba2V5XVxuICAgIH0gZWxzZSB7XG4gICAgICBuZXdQcm9wcyA9IG5ld1Byb3BzIHx8IHt9XG4gICAgICBuZXdQcm9wc1trZXldID0gdmFsXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ld0NoaWxkcmVuIGluc3RhbmNlb2YgQXJyYXlcbiAgICA/IHJlYWN0RWxlbWVudC5hcHBseShudWxsLCBbdHlwZSwgbmV3UHJvcHNdLmNvbmNhdChuZXdDaGlsZHJlbikpXG4gICAgOiBuZXdDaGlsZHJlblxuICAgID8gcmVhY3RFbGVtZW50KHR5cGUsIG5ld1Byb3BzLCBuZXdDaGlsZHJlbilcbiAgICA6IHJlYWN0RWxlbWVudCh0eXBlLCBuZXdQcm9wcylcbn1cblxuLy9cblxuZnVuY3Rpb24gaW5jVmFsdWVzKHNlbGYpIHsgc2VsZi52YWx1ZXMgKz0gMSB9XG5mdW5jdGlvbiBvZmZBbnkxKGhhbmRsZXJzLCBvYnMpIHsgb2JzLm9mZkFueShoYW5kbGVycykgfVxuZnVuY3Rpb24gb2ZmQW55KGhhbmRsZXJzLCBvYnMpIHtcbiAgY29uc3QgaGFuZGxlciA9IGhhbmRsZXJzLnBvcCgpXG4gIGlmIChoYW5kbGVyKVxuICAgIG9icy5vZmZBbnkoaGFuZGxlcilcbn1cbmZ1bmN0aW9uIG9uQW55MShoYW5kbGVycywgb2JzKSB7IG9icy5vbkFueShoYW5kbGVycykgfVxuZnVuY3Rpb24gb25Bbnkoc2VsZiwgb2JzKSB7XG4gIGNvbnN0IGhhbmRsZXIgPSBlID0+IHNlbGYuZG9IYW5kbGVOKGhhbmRsZXIsIGUpXG4gIHNlbGYuaGFuZGxlcnMucHVzaChoYW5kbGVyKVxuICBvYnMub25BbnkoaGFuZGxlcilcbn1cblxuZnVuY3Rpb24gRnJvbUNsYXNzKHByb3BzKSB7XG4gIExpZnRlZENvbXBvbmVudC5jYWxsKHRoaXMsIHByb3BzKVxuICB0aGlzLnZhbHVlcyA9IHRoaXNcbiAgdGhpcy5oYW5kbGVycyA9IG51bGxcbn1cblxuaW5oZXJpdChGcm9tQ2xhc3MsIExpZnRlZENvbXBvbmVudCwge1xuICBkb1Vuc3Vic2NyaWJlKCkge1xuICAgIGNvbnN0IGhhbmRsZXJzID0gdGhpcy5oYW5kbGVyc1xuICAgIGlmIChoYW5kbGVycykge1xuICAgICAgaWYgKGhhbmRsZXJzIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcbiAgICAgICAgZm9yRWFjaCh0aGlzLnByb3BzLCBoYW5kbGVycywgb2ZmQW55MSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvckVhY2godGhpcy5wcm9wcywgaGFuZGxlcnMucmV2ZXJzZSgpLCBvZmZBbnkpXG4gICAgICB9XG4gICAgfVxuICB9LFxuICBkb1N1YnNjcmliZShwcm9wcykge1xuICAgIHRoaXMudmFsdWVzID0gMFxuICAgIGZvckVhY2gocHJvcHMsIHRoaXMsIGluY1ZhbHVlcylcbiAgICBjb25zdCBuID0gdGhpcy52YWx1ZXNcblxuICAgIGlmIChuID09PSAxKSB7XG4gICAgICB0aGlzLnZhbHVlcyA9IHRoaXNcbiAgICAgIGNvbnN0IGhhbmRsZXJzID0gZSA9PiB0aGlzLmRvSGFuZGxlMShlKVxuICAgICAgdGhpcy5oYW5kbGVycyA9IGhhbmRsZXJzXG4gICAgICBmb3JFYWNoKHByb3BzLCBoYW5kbGVycywgb25BbnkxKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnZhbHVlcyA9IEFycmF5KG4pLmZpbGwodGhpcylcbiAgICAgIHRoaXMuaGFuZGxlcnMgPSBbXVxuICAgICAgZm9yRWFjaChwcm9wcywgdGhpcywgb25BbnkpXG4gICAgfVxuICB9LFxuICBkb0hhbmRsZTEoZSkge1xuICAgIHN3aXRjaCAoZS50eXBlKSB7XG4gICAgICBjYXNlIFwidmFsdWVcIjoge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGUudmFsdWVcbiAgICAgICAgaWYgKHRoaXMudmFsdWVzICE9PSB2YWx1ZSkge1xuICAgICAgICAgIHRoaXMudmFsdWVzID0gdmFsdWVcbiAgICAgICAgICB0aGlzLmZvcmNlVXBkYXRlKClcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSBcImVycm9yXCI6IHRocm93IGUudmFsdWVcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgdGhpcy52YWx1ZXMgPSBbdGhpcy52YWx1ZXNdXG4gICAgICAgIHRoaXMuaGFuZGxlcnMgPSBudWxsXG4gICAgICB9XG4gICAgfVxuICB9LFxuICBkb0hhbmRsZU4oaGFuZGxlciwgZSkge1xuICAgIGNvbnN0IGhhbmRsZXJzID0gdGhpcy5oYW5kbGVyc1xuICAgIGxldCBpZHg9MFxuICAgIHdoaWxlIChoYW5kbGVyc1tpZHhdICE9PSBoYW5kbGVyKVxuICAgICAgKytpZHhcbiAgICBzd2l0Y2ggKGUudHlwZSkge1xuICAgICAgY2FzZSBcInZhbHVlXCI6IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBlLnZhbHVlXG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IHRoaXMudmFsdWVzXG4gICAgICAgIGlmICh2YWx1ZXNbaWR4XSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICB2YWx1ZXNbaWR4XSA9IHZhbHVlXG4gICAgICAgICAgdGhpcy5mb3JjZVVwZGF0ZSgpXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJlcnJvclwiOiB0aHJvdyBlLnZhbHVlXG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGhhbmRsZXJzW2lkeF0gPSBudWxsXG4gICAgICAgIGNvbnN0IG4gPSBoYW5kbGVycy5sZW5ndGhcbiAgICAgICAgaWYgKG4gIT09IHRoaXMudmFsdWVzLmxlbmd0aClcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgZm9yIChsZXQgaT0wOyBpIDwgbjsgKytpKVxuICAgICAgICAgIGlmIChoYW5kbGVyc1tpXSlcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICB0aGlzLmhhbmRsZXJzID0gbnVsbFxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgcmVuZGVyKCkge1xuICAgIGlmICh0aGlzLmhhbmRsZXJzIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy52YWx1ZXNcbiAgICAgIGlmICh2YWx1ZSA9PT0gdGhpcylcbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIHJldHVybiByZW5kZXIodGhpcy5wcm9wcywgW3ZhbHVlXSlcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdmFsdWVzID0gdGhpcy52YWx1ZXNcbiAgICAgIGZvciAobGV0IGk9MCwgbj12YWx1ZXMubGVuZ3RoOyBpPG47ICsraSlcbiAgICAgICAgaWYgKHZhbHVlc1tpXSA9PT0gdGhpcylcbiAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgcmV0dXJuIHJlbmRlcih0aGlzLnByb3BzLCB2YWx1ZXMpXG4gICAgfVxuICB9XG59KVxuXG4vL1xuXG5mdW5jdGlvbiBoYXNBbnlPYnMocHJvcHMsIGFyZ3MpIHtcbiAgZm9yIChsZXQgaT0yLCBuPWFyZ3MubGVuZ3RoOyBpPG47ICsraSkge1xuICAgIGNvbnN0IGFyZyA9IGFyZ3NbaV1cbiAgICBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7XG4gICAgICBmb3IgKGxldCBqPTAsIG09YXJnLmxlbmd0aDsgajxtOyArK2opXG4gICAgICAgIGlmIChpc09icyhhcmdbal0pKVxuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgfSBlbHNlIGlmIChpc09icyhhcmcpKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxuICByZXR1cm4gaGFzT2JzKGFyZ3NbMV0pXG59XG5cbmZ1bmN0aW9uIGZpbHRlclByb3BzKHR5cGUsIHByb3BzKSB7XG4gIGNvbnN0IG5ld1Byb3BzID0ge1wiJCR0eXBlXCI6IHR5cGV9XG4gIGZvciAoY29uc3Qga2V5IGluIHByb3BzKSB7XG4gICAgY29uc3QgdmFsID0gcHJvcHNba2V5XVxuICAgIGlmIChcInJlZlwiID09PSBrZXkpXG4gICAgICBuZXdQcm9wc1tcIiQkcmVmXCJdID0gdmFsXG4gICAgZWxzZSBpZiAoXCJrYXJldC1saWZ0XCIgIT09IGtleSlcbiAgICAgIG5ld1Byb3BzW2tleV0gPSB2YWxcbiAgfVxuICByZXR1cm4gbmV3UHJvcHNcbn1cblxuZnVuY3Rpb24gY3JlYXRlRWxlbWVudCguLi5hcmdzKSB7XG4gIGNvbnN0IHR5cGUgPSBhcmdzWzBdXG4gIGNvbnN0IHByb3BzID0gYXJnc1sxXVxuICBpZiAodHlwZW9mIHR5cGUgPT09IFwic3RyaW5nXCIgJiYgaGFzQW55T2JzKHByb3BzLCBhcmdzKSkge1xuICAgIGFyZ3NbMV0gPSBmaWx0ZXJQcm9wcyh0eXBlLCBwcm9wcylcbiAgICBhcmdzWzBdID0gRnJvbUNsYXNzXG4gIH0gZWxzZSBpZiAocHJvcHMgJiYgcHJvcHNbXCJrYXJldC1saWZ0XCJdID09PSB0cnVlKSB7XG4gICAgaWYgKGhhc0FueU9icyhwcm9wcywgYXJncykpIHtcbiAgICAgIGFyZ3NbMV0gPSBmaWx0ZXJQcm9wcyh0eXBlLCBwcm9wcylcbiAgICAgIGFyZ3NbMF0gPSBGcm9tQ2xhc3NcbiAgICB9IGVsc2Uge1xuICAgICAgYXJnc1sxXSA9IGRpc3NvY1BhcnRpYWxVKFwia2FyZXQtbGlmdFwiLCBwcm9wcykgfHwgb2JqZWN0MFxuICAgIH1cbiAgfVxuICByZXR1cm4gcmVhY3RFbGVtZW50KC4uLmFyZ3MpXG59XG5cbmV4cG9ydCBkZWZhdWx0IGFzc29jUGFydGlhbFUoXCJjcmVhdGVFbGVtZW50XCIsIGNyZWF0ZUVsZW1lbnQsIFJlYWN0KVxuIl19 | ||
// | ||
var fromClass = exports.fromClass = function fromClass(Class) { | ||
return function (props) { | ||
return reactElement(FromClass, filterProps(Class, props)); | ||
}; | ||
}; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9rYXJldC5qcyJdLCJuYW1lcyI6WyJyZWFjdEVsZW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiQ29tcG9uZW50IiwiaXNPYnMiLCJ4IiwiTGlmdGVkQ29tcG9uZW50IiwicHJvcHMiLCJjYWxsIiwiY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyIsIm5leHRQcm9wcyIsImRvVW5zdWJzY3JpYmUiLCJkb1N1YnNjcmliZSIsImNvbXBvbmVudFdpbGxNb3VudCIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwiRnJvbUtlZmlyIiwiY2FsbGJhY2siLCJyZW5kZXJlZCIsIm9ic2VydmFibGUiLCJvZmZBbnkiLCJlIiwidHlwZSIsInZhbHVlIiwiZm9yY2VVcGRhdGUiLCJvbkFueSIsInJlbmRlciIsImZyb21LZWZpciIsImhhc09icyIsImtleSIsInZhbCIsImsiLCJ2YWxLIiwiZm9yRWFjaCIsImV4dHJhIiwiZm4iLCJjaGlsZHJlbiIsImNvbnN0cnVjdG9yIiwiQXJyYXkiLCJpIiwibGVuZ3RoIiwidmFsdWVzIiwibmV3UHJvcHMiLCJuZXdDaGlsZHJlbiIsIm4iLCJ2YWxJIiwiaiIsInJlZiIsIm5ld1N0eWxlIiwic3R5bGUiLCJhcHBseSIsImNvbmNhdCIsImluY1ZhbHVlcyIsInNlbGYiLCJvZmZBbnkxIiwiaGFuZGxlcnMiLCJvYnMiLCJoYW5kbGVyIiwicG9wIiwib25BbnkxIiwiZG9IYW5kbGVOIiwicHVzaCIsIkZyb21DbGFzcyIsIkZ1bmN0aW9uIiwicmV2ZXJzZSIsImRvSGFuZGxlMSIsImZpbGwiLCJpZHgiLCJoYXNBbnlPYnMiLCJhcmdzIiwiYXJnIiwiaXNBcnJheSIsIm0iLCJmaWx0ZXJQcm9wcyIsImZyb21DbGFzcyIsIkNsYXNzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7Ozs7QUFDQTs7QUFDQTs7OztBQVFBOztBQUVBLElBQU1BLGVBQWUsZ0JBQU1DLGFBQTNCO0FBQ0EsSUFBTUMsWUFBWSxnQkFBTUEsU0FBeEI7O0FBRUEsSUFB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QUFBQSxHQUFUO0FBQUEsQ0FBbEIiLCJmaWxlIjoia2FyZXQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7T2JzZXJ2YWJsZX0gZnJvbSBcImtlZmlyXCJcbmltcG9ydCB7XG4gIGFycmF5MCxcbiAgYXNzb2NQYXJ0aWFsVSxcbiAgZGlzc29jUGFydGlhbFUsXG4gIG9iamVjdDAsXG4gIGluaGVyaXRcbn0gZnJvbSBcImluZmVzdGluZXNcIlxuXG4vL1xuXG5jb25zdCByZWFjdEVsZW1lbnQgPSBSZWFjdC5jcmVhdGVFbGVtZW50XG5jb25zdCBDb21wb25lbnQgPSBSZWFjdC5Db21wb25lbnRcblxuY29uc3QgaXNPYnMgPSB4ID0+IHggaW5zdGFuY2VvZiBPYnNlcnZhYmxlXG5cbi8vXG5cbmZ1bmN0aW9uIExpZnRlZENvbXBvbmVudChwcm9wcykge1xuICBDb21wb25lbnQuY2FsbCh0aGlzLCBwcm9wcylcbn1cblxuaW5oZXJpdChMaWZ0ZWRDb21wb25lbnQsIENvbXBvbmVudCwge1xuICBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG5leHRQcm9wcykge1xuICAgIHRoaXMuZG9VbnN1YnNjcmliZSgpXG4gICAgdGhpcy5kb1N1YnNjcmliZShuZXh0UHJvcHMpXG4gIH0sXG4gIGNvbXBvbmVudFdpbGxNb3VudCgpIHtcbiAgICB0aGlzLmRvU3Vic2NyaWJlKHRoaXMucHJvcHMpXG4gIH0sXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIHRoaXMuZG9VbnN1YnNjcmliZSgpXG4gIH1cbn0pXG5cbi8vXG5cbmZ1bmN0aW9uIEZyb21LZWZpcihwcm9wcykge1xuICBMaWZ0ZWRDb21wb25lbnQuY2FsbCh0aGlzLCBwcm9wcylcbiAgdGhpcy5jYWxsYmFjayA9IG51bGxcbiAgdGhpcy5yZW5kZXJlZCA9IG51bGxcbn1cblxuaW5oZXJpdChGcm9tS2VmaXIsIExpZnRlZENvbXBvbmVudCwge1xuICBkb1Vuc3Vic2NyaWJlKCkge1xuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja1xuICAgIGlmIChjYWxsYmFjaylcbiAgICAgIHRoaXMucHJvcHMub2JzZXJ2YWJsZS5vZmZBbnkoY2FsbGJhY2spXG4gIH0sXG4gIGRvU3Vic2NyaWJlKHtvYnNlcnZhYmxlfSkge1xuICAgIGlmIChpc09icyhvYnNlcnZhYmxlKSkge1xuICAgICAgY29uc3QgY2FsbGJhY2sgPSBlID0+IHtcbiAgICAgICAgc3dpdGNoIChlLnR5cGUpIHtcbiAgICAgICAgICBjYXNlIFwidmFsdWVcIjpcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZWQgPSBlLnZhbHVlIHx8IG51bGxcbiAgICAgICAgICAgIHRoaXMuZm9yY2VVcGRhdGUoKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICBjYXNlIFwiZXJyb3JcIjpcbiAgICAgICAgICAgIHRocm93IGUudmFsdWVcbiAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICB0aGlzLmNhbGxiYWNrID0gbnVsbFxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLmNhbGxiYWNrID0gY2FsbGJhY2tcbiAgICAgIG9ic2VydmFibGUub25BbnkoY2FsbGJhY2spXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVuZGVyZWQgPSBvYnNlcnZhYmxlIHx8IG51bGxcbiAgICB9XG4gIH0sXG4gIHJlbmRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5yZW5kZXJlZFxuICB9XG59KVxuXG5leHBvcnQgY29uc3QgZnJvbUtlZmlyID0gb2JzZXJ2YWJsZSA9PiByZWFjdEVsZW1lbnQoRnJvbUtlZmlyLCB7b2JzZXJ2YWJsZX0pXG5cbi8vXG5cbmZ1bmN0aW9uIGhhc09icyhwcm9wcykge1xuICBmb3IgKGNvbnN0IGtleSBpbiBwcm9wcykge1xuICAgIGNvbnN0IHZhbCA9IHByb3BzW2tleV1cbiAgICBpZiAoaXNPYnModmFsKSkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9IGVsc2UgaWYgKFwic3R5bGVcIiA9PT0ga2V5KSB7XG4gICAgICBmb3IgKGNvbnN0IGsgaW4gdmFsKSB7XG4gICAgICAgIGNvbnN0IHZhbEsgPSB2YWxba11cbiAgICAgICAgaWYgKGlzT2JzKHZhbEspKVxuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZVxufVxuXG5mdW5jdGlvbiBmb3JFYWNoKHByb3BzLCBleHRyYSwgZm4pIHtcbiAgZm9yIChjb25zdCBrZXkgaW4gcHJvcHMpIHtcbiAgICBjb25zdCB2YWwgPSBwcm9wc1trZXldXG4gICAgaWYgKGlzT2JzKHZhbCkpIHtcbiAgICAgIGZuKGV4dHJhLCB2YWwpXG4gICAgfSBlbHNlIGlmIChcImNoaWxkcmVuXCIgPT09IGtleSkge1xuICAgICAgY29uc3QgY2hpbGRyZW4gPSBwcm9wc1trZXldXG4gICAgICBpZiAoY2hpbGRyZW4uY29uc3RydWN0b3IgPT09IEFycmF5KSB7XG4gICAgICAgIGZvciAobGV0IGk9MDsgaTxjaGlsZHJlbi5sZW5ndGg7ICsraSkge1xuICAgICAgICAgIGNvbnN0IHZhbCA9IGNoaWxkcmVuW2ldXG4gICAgICAgICAgaWYgKGlzT2JzKHZhbCkpXG4gICAgICAgICAgICBmbihleHRyYSwgdmFsKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChcInN0eWxlXCIgPT09IGtleSkge1xuICAgICAgZm9yIChjb25zdCBrIGluIHZhbCkge1xuICAgICAgICBjb25zdCB2YWxLID0gdmFsW2tdXG4gICAgICAgIGlmIChpc09icyh2YWxLKSlcbiAgICAgICAgICBmbihleHRyYSwgdmFsSylcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVuZGVyKHByb3BzLCB2YWx1ZXMpIHtcbiAgbGV0IHR5cGUgPSBudWxsXG4gIGxldCBuZXdQcm9wcyA9IG51bGxcbiAgbGV0IG5ld0NoaWxkcmVuID0gbnVsbFxuXG4gIGxldCBrID0gLTFcblxuICBmb3IgKGNvbnN0IGtleSBpbiBwcm9wcykge1xuICAgIGNvbnN0IHZhbCA9IHByb3BzW2tleV1cbiAgICBpZiAoXCJjaGlsZHJlblwiID09PSBrZXkpIHtcbiAgICAgIGlmIChpc09icyh2YWwpKSB7XG4gICAgICAgIG5ld0NoaWxkcmVuID0gdmFsdWVzWysra11cbiAgICAgIH0gZWxzZSBpZiAodmFsLmNvbnN0cnVjdG9yID09PSBBcnJheSkge1xuICAgICAgICBmb3IgKGxldCBpPTAsIG49dmFsLmxlbmd0aDsgaTxuOyArK2kpIHtcbiAgICAgICAgICBjb25zdCB2YWxJID0gdmFsW2ldXG4gICAgICAgICAgaWYgKGlzT2JzKHZhbEkpKSB7XG4gICAgICAgICAgICBpZiAoIW5ld0NoaWxkcmVuKSB7XG4gICAgICAgICAgICAgIG5ld0NoaWxkcmVuID0gQXJyYXkodmFsLmxlbmd0aClcbiAgICAgICAgICAgICAgZm9yIChsZXQgaj0wOyBqPGk7ICsrailcbiAgICAgICAgICAgICAgICBuZXdDaGlsZHJlbltqXSA9IHZhbFtqXVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbmV3Q2hpbGRyZW5baV0gPSB2YWx1ZXNbKytrXVxuICAgICAgICAgIH0gZWxzZSBpZiAobmV3Q2hpbGRyZW4pXG4gICAgICAgICAgICBuZXdDaGlsZHJlbltpXSA9IHZhbElcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW5ld0NoaWxkcmVuKVxuICAgICAgICAgIG5ld0NoaWxkcmVuID0gdmFsXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXdDaGlsZHJlbiA9IHZhbFxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoXCIkJHJlZlwiID09PSBrZXkpIHtcbiAgICAgIG5ld1Byb3BzID0gbmV3UHJvcHMgfHwge31cbiAgICAgIG5ld1Byb3BzLnJlZiA9IGlzT2JzKHZhbCkgPyB2YWx1ZXNbKytrXSA6IHZhbFxuICAgIH0gZWxzZSBpZiAoaXNPYnModmFsKSkge1xuICAgICAgbmV3UHJvcHMgPSBuZXdQcm9wcyB8fCB7fVxuICAgICAgbmV3UHJvcHNba2V5XSA9IHZhbHVlc1srK2tdXG4gICAgfSBlbHNlIGlmIChcInN0eWxlXCIgPT09IGtleSkge1xuICAgICAgbGV0IG5ld1N0eWxlXG4gICAgICBmb3IgKGNvbnN0IGkgaW4gdmFsKSB7XG4gICAgICAgIGNvbnN0IHZhbEkgPSB2YWxbaV1cbiAgICAgICAgaWYgKGlzT2JzKHZhbEkpKSB7XG4gICAgICAgICAgaWYgKCFuZXdTdHlsZSkge1xuICAgICAgICAgICAgbmV3U3R5bGUgPSB7fVxuICAgICAgICAgICAgZm9yIChjb25zdCBqIGluIHZhbCkge1xuICAgICAgICAgICAgICBpZiAoaiA9PT0gaSlcbiAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICBuZXdTdHlsZVtqXSA9IHZhbFtqXVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBuZXdTdHlsZVtpXSA9IHZhbHVlc1srK2tdXG4gICAgICAgIH0gZWxzZSBpZiAobmV3U3R5bGUpIHtcbiAgICAgICAgICBuZXdTdHlsZVtpXSA9IHZhbElcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbmV3UHJvcHMgPSBuZXdQcm9wcyB8fCB7fVxuICAgICAgbmV3UHJvcHMuc3R5bGUgPSBuZXdTdHlsZSB8fCB2YWxcbiAgICB9IGVsc2UgaWYgKFwiJCR0eXBlXCIgPT09IGtleSkge1xuICAgICAgdHlwZSA9IHByb3BzW2tleV1cbiAgICB9IGVsc2Uge1xuICAgICAgbmV3UHJvcHMgPSBuZXdQcm9wcyB8fCB7fVxuICAgICAgbmV3UHJvcHNba2V5XSA9IHZhbFxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXdDaGlsZHJlbiBpbnN0YW5jZW9mIEFycmF5XG4gICAgPyByZWFjdEVsZW1lbnQuYXBwbHkobnVsbCwgW3R5cGUsIG5ld1Byb3BzXS5jb25jYXQobmV3Q2hpbGRyZW4pKVxuICAgIDogbmV3Q2hpbGRyZW5cbiAgICA/IHJlYWN0RWxlbWVudCh0eXBlLCBuZXdQcm9wcywgbmV3Q2hpbGRyZW4pXG4gICAgOiByZWFjdEVsZW1lbnQodHlwZSwgbmV3UHJvcHMpXG59XG5cbi8vXG5cbmZ1bmN0aW9uIGluY1ZhbHVlcyhzZWxmKSB7IHNlbGYudmFsdWVzICs9IDEgfVxuZnVuY3Rpb24gb2ZmQW55MShoYW5kbGVycywgb2JzKSB7IG9icy5vZmZBbnkoaGFuZGxlcnMpIH1cbmZ1bmN0aW9uIG9mZkFueShoYW5kbGVycywgb2JzKSB7XG4gIGNvbnN0IGhhbmRsZXIgPSBoYW5kbGVycy5wb3AoKVxuICBpZiAoaGFuZGxlcilcbiAgICBvYnMub2ZmQW55KGhhbmRsZXIpXG59XG5mdW5jdGlvbiBvbkFueTEoaGFuZGxlcnMsIG9icykgeyBvYnMub25BbnkoaGFuZGxlcnMpIH1cbmZ1bmN0aW9uIG9uQW55KHNlbGYsIG9icykge1xuICBjb25zdCBoYW5kbGVyID0gZSA9PiBzZWxmLmRvSGFuZGxlTihoYW5kbGVyLCBlKVxuICBzZWxmLmhhbmRsZXJzLnB1c2goaGFuZGxlcilcbiAgb2JzLm9uQW55KGhhbmRsZXIpXG59XG5cbmZ1bmN0aW9uIEZyb21DbGFzcyhwcm9wcykge1xuICBMaWZ0ZWRDb21wb25lbnQuY2FsbCh0aGlzLCBwcm9wcylcbiAgdGhpcy52YWx1ZXMgPSB0aGlzXG4gIHRoaXMuaGFuZGxlcnMgPSBudWxsXG59XG5cbmluaGVyaXQoRnJvbUNsYXNzLCBMaWZ0ZWRDb21wb25lbnQsIHtcbiAgZG9VbnN1YnNjcmliZSgpIHtcbiAgICBjb25zdCBoYW5kbGVycyA9IHRoaXMuaGFuZGxlcnNcbiAgICBpZiAoaGFuZGxlcnMpIHtcbiAgICAgIGlmIChoYW5kbGVycyBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG4gICAgICAgIGZvckVhY2godGhpcy5wcm9wcywgaGFuZGxlcnMsIG9mZkFueTEpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3JFYWNoKHRoaXMucHJvcHMsIGhhbmRsZXJzLnJldmVyc2UoKSwgb2ZmQW55KVxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZG9TdWJzY3JpYmUocHJvcHMpIHtcbiAgICB0aGlzLnZhbHVlcyA9IDBcbiAgICBmb3JFYWNoKHByb3BzLCB0aGlzLCBpbmNWYWx1ZXMpXG4gICAgY29uc3QgbiA9IHRoaXMudmFsdWVzXG5cbiAgICBzd2l0Y2ggKG4pIHtcbiAgICAgIGNhc2UgMDpcbiAgICAgICAgdGhpcy52YWx1ZXMgPSBhcnJheTBcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgMToge1xuICAgICAgICB0aGlzLnZhbHVlcyA9IHRoaXNcbiAgICAgICAgY29uc3QgaGFuZGxlcnMgPSBlID0+IHRoaXMuZG9IYW5kbGUxKGUpXG4gICAgICAgIHRoaXMuaGFuZGxlcnMgPSBoYW5kbGVyc1xuICAgICAgICBmb3JFYWNoKHByb3BzLCBoYW5kbGVycywgb25BbnkxKVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy52YWx1ZXMgPSBBcnJheShuKS5maWxsKHRoaXMpXG4gICAgICAgIHRoaXMuaGFuZGxlcnMgPSBbXVxuICAgICAgICBmb3JFYWNoKHByb3BzLCB0aGlzLCBvbkFueSlcbiAgICB9XG4gIH0sXG4gIGRvSGFuZGxlMShlKSB7XG4gICAgc3dpdGNoIChlLnR5cGUpIHtcbiAgICAgIGNhc2UgXCJ2YWx1ZVwiOiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZS52YWx1ZVxuICAgICAgICBpZiAodGhpcy52YWx1ZXMgIT09IHZhbHVlKSB7XG4gICAgICAgICAgdGhpcy52YWx1ZXMgPSB2YWx1ZVxuICAgICAgICAgIHRoaXMuZm9yY2VVcGRhdGUoKVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgICBjYXNlIFwiZXJyb3JcIjogdGhyb3cgZS52YWx1ZVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICB0aGlzLnZhbHVlcyA9IFt0aGlzLnZhbHVlc11cbiAgICAgICAgdGhpcy5oYW5kbGVycyA9IG51bGxcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGRvSGFuZGxlTihoYW5kbGVyLCBlKSB7XG4gICAgY29uc3QgaGFuZGxlcnMgPSB0aGlzLmhhbmRsZXJzXG4gICAgbGV0IGlkeD0wXG4gICAgd2hpbGUgKGhhbmRsZXJzW2lkeF0gIT09IGhhbmRsZXIpXG4gICAgICArK2lkeFxuICAgIHN3aXRjaCAoZS50eXBlKSB7XG4gICAgICBjYXNlIFwidmFsdWVcIjoge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGUudmFsdWVcbiAgICAgICAgY29uc3QgdmFsdWVzID0gdGhpcy52YWx1ZXNcbiAgICAgICAgaWYgKHZhbHVlc1tpZHhdICE9PSB2YWx1ZSkge1xuICAgICAgICAgIHZhbHVlc1tpZHhdID0gdmFsdWVcbiAgICAgICAgICB0aGlzLmZvcmNlVXBkYXRlKClcbiAgICAgICAgfVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgICAgY2FzZSBcImVycm9yXCI6IHRocm93IGUudmFsdWVcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgaGFuZGxlcnNbaWR4XSA9IG51bGxcbiAgICAgICAgY29uc3QgbiA9IGhhbmRsZXJzLmxlbmd0aFxuICAgICAgICBpZiAobiAhPT0gdGhpcy52YWx1ZXMubGVuZ3RoKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICBmb3IgKGxldCBpPTA7IGkgPCBuOyArK2kpXG4gICAgICAgICAgaWYgKGhhbmRsZXJzW2ldKVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgIHRoaXMuaGFuZGxlcnMgPSBudWxsXG4gICAgICB9XG4gICAgfVxuICB9LFxuICByZW5kZXIoKSB7XG4gICAgaWYgKHRoaXMuaGFuZGxlcnMgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnZhbHVlc1xuICAgICAgaWYgKHZhbHVlID09PSB0aGlzKVxuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgcmV0dXJuIHJlbmRlcih0aGlzLnByb3BzLCBbdmFsdWVdKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLnZhbHVlc1xuICAgICAgZm9yIChsZXQgaT0wLCBuPXZhbHVlcy5sZW5ndGg7IGk8bjsgKytpKVxuICAgICAgICBpZiAodmFsdWVzW2ldID09PSB0aGlzKVxuICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICByZXR1cm4gcmVuZGVyKHRoaXMucHJvcHMsIHZhbHVlcylcbiAgICB9XG4gIH1cbn0pXG5cbi8vXG5cbmZ1bmN0aW9uIGhhc0FueU9icyhwcm9wcywgYXJncykge1xuICBmb3IgKGxldCBpPTIsIG49YXJncy5sZW5ndGg7IGk8bjsgKytpKSB7XG4gICAgY29uc3QgYXJnID0gYXJnc1tpXVxuICAgIGlmIChBcnJheS5pc0FycmF5KGFyZykpIHtcbiAgICAgIGZvciAobGV0IGo9MCwgbT1hcmcubGVuZ3RoOyBqPG07ICsrailcbiAgICAgICAgaWYgKGlzT2JzKGFyZ1tqXSkpXG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICB9IGVsc2UgaWYgKGlzT2JzKGFyZykpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICB9XG4gIHJldHVybiBoYXNPYnMoYXJnc1sxXSlcbn1cblxuZnVuY3Rpb24gZmlsdGVyUHJvcHModHlwZSwgcHJvcHMpIHtcbiAgY29uc3QgbmV3UHJvcHMgPSB7XCIkJHR5cGVcIjogdHlwZX1cbiAgZm9yIChjb25zdCBrZXkgaW4gcHJvcHMpIHtcbiAgICBjb25zdCB2YWwgPSBwcm9wc1trZXldXG4gICAgaWYgKFwicmVmXCIgPT09IGtleSlcbiAgICAgIG5ld1Byb3BzW1wiJCRyZWZcIl0gPSB2YWxcbiAgICBlbHNlIGlmIChcImthcmV0LWxpZnRcIiAhPT0ga2V5KVxuICAgICAgbmV3UHJvcHNba2V5XSA9IHZhbFxuICB9XG4gIHJldHVybiBuZXdQcm9wc1xufVxuXG5mdW5jdGlvbiBjcmVhdGVFbGVtZW50KC4uLmFyZ3MpIHtcbiAgY29uc3QgdHlwZSA9IGFyZ3NbMF1cbiAgY29uc3QgcHJvcHMgPSBhcmdzWzFdXG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gXCJzdHJpbmdcIiAmJiBoYXNBbnlPYnMocHJvcHMsIGFyZ3MpKSB7XG4gICAgYXJnc1sxXSA9IGZpbHRlclByb3BzKHR5cGUsIHByb3BzKVxuICAgIGFyZ3NbMF0gPSBGcm9tQ2xhc3NcbiAgfSBlbHNlIGlmIChwcm9wcyAmJiBwcm9wc1tcImthcmV0LWxpZnRcIl0gPT09IHRydWUpIHtcbiAgICBpZiAoaGFzQW55T2JzKHByb3BzLCBhcmdzKSkge1xuICAgICAgYXJnc1sxXSA9IGZpbHRlclByb3BzKHR5cGUsIHByb3BzKVxuICAgICAgYXJnc1swXSA9IEZyb21DbGFzc1xuICAgIH0gZWxzZSB7XG4gICAgICBhcmdzWzFdID0gZGlzc29jUGFydGlhbFUoXCJrYXJldC1saWZ0XCIsIHByb3BzKSB8fCBvYmplY3QwXG4gICAgfVxuICB9XG4gIHJldHVybiByZWFjdEVsZW1lbnQoLi4uYXJncylcbn1cblxuZXhwb3J0IGRlZmF1bHQgYXNzb2NQYXJ0aWFsVShcImNyZWF0ZUVsZW1lbnRcIiwgY3JlYXRlRWxlbWVudCwgUmVhY3QpXG5cbi8vXG5cbmV4cG9ydCBjb25zdCBmcm9tQ2xhc3MgPSBDbGFzcyA9PiBwcm9wcyA9PlxuICByZWFjdEVsZW1lbnQoRnJvbUNsYXNzLCBmaWx0ZXJQcm9wcyhDbGFzcywgcHJvcHMpKVxuIl19 |
{ | ||
"name": "karet", | ||
"version": "0.2.5", | ||
"version": "0.2.6", | ||
"description": "Concise reactive components by embedding Kefir into React VDOM", | ||
@@ -30,9 +30,9 @@ "main": "lib/karet.js", | ||
"devDependencies": { | ||
"babel-cli": "^6.18.0", | ||
"babel-cli": "^6.22.2", | ||
"babel-eslint": "^7.1.1", | ||
"babel-plugin-transform-es2015-modules-commonjs": "^6.18.0", | ||
"babel-preset-es2015": "^6.18.0", | ||
"babel-preset-react": "^6.16.0", | ||
"babel-preset-stage-2": "^6.18.0", | ||
"babel-register": "^6.18.0", | ||
"babel-plugin-transform-es2015-modules-commonjs": "^6.22.0", | ||
"babel-preset-es2015": "^6.22.0", | ||
"babel-preset-react": "^6.22.0", | ||
"babel-preset-stage-2": "^6.22.0", | ||
"babel-register": "^6.22.0", | ||
"codecov": "^1.0.1", | ||
@@ -42,3 +42,3 @@ "eslint": "^3.13.1", | ||
"mocha": "^3.2.0", | ||
"nyc": "^10.0.0", | ||
"nyc": "^10.1.2", | ||
"react-addons-test-utils": "^15.4.2", | ||
@@ -45,0 +45,0 @@ "react-dom": "^15.4.2" |
111
README.md
@@ -1,9 +0,22 @@ | ||
[![npm version](https://badge.fury.io/js/karet.svg)](http://badge.fury.io/js/karet) [![Build Status](https://travis-ci.org/calmm-js/karet.svg?branch=master)](https://travis-ci.org/calmm-js/karet) [![Code Coverage](https://img.shields.io/codecov/c/github/calmm-js/karet/master.svg)](https://codecov.io/github/calmm-js/karet?branch=master) [![](https://david-dm.org/calmm-js/karet.svg)](https://david-dm.org/calmm-js/karet) [![](https://david-dm.org/calmm-js/karet/dev-status.svg)](https://david-dm.org/calmm-js/karet?type=dev) | ||
[ [≡](#contents) | [Tutorial](#tutorial) | [Reference](#reference) ] | ||
This is an experimental library that allows you to | ||
# Karet | ||
Karet is an experimental library that allows you to | ||
embed [Kefir](http://rpominov.github.io/kefir/) observables | ||
into [React](https://facebook.github.io/react/) Virtual DOM. | ||
## Reference | ||
[![npm version](https://badge.fury.io/js/karet.svg)](http://badge.fury.io/js/karet) [![Build Status](https://travis-ci.org/calmm-js/karet.svg?branch=master)](https://travis-ci.org/calmm-js/karet) [![Code Coverage](https://img.shields.io/codecov/c/github/calmm-js/karet/master.svg)](https://codecov.io/github/calmm-js/karet?branch=master) [![](https://david-dm.org/calmm-js/karet.svg)](https://david-dm.org/calmm-js/karet) [![](https://david-dm.org/calmm-js/karet/dev-status.svg)](https://david-dm.org/calmm-js/karet?type=dev) | ||
## Contents | ||
* [Tutorial](#tutorial) | ||
* [Reference](#reference) | ||
* [`karet-lift` attribute](#karet-lift) | ||
* [`fromKefir(observableVDOM)`](#fromKefir "fromKefir: Observable VDOM -> VDOM") | ||
* [`fromClass(Component)`](#fromClass "fromClass: Component props -> Component (Observable props)") | ||
* [`$$ref` attribute](#ref) | ||
## Tutorial | ||
To use Karet, you simply import it as `React`: | ||
@@ -29,8 +42,15 @@ | ||
### `karet-lift` attribute | ||
**NOTE:** The result, like the `Clock` above, is *just* a React component. If | ||
you export it, you can use it just like any other React component and even in | ||
modules that do not import `karet`. | ||
Karet only lifts built-in HTML elements implicitly. You can instruct Karet to | ||
lift non-primitive elements by adding the `karet-lift` attribute to them. For | ||
example, you could write: | ||
## Reference | ||
### <a name="karet-lift"></a> [≡](#contents) [`karet-lift` attribute](#karet-lift) | ||
Karet only lifts built-in HTML elements implicitly. The `karet-lift` attribute | ||
on a non-primitive element instructs Karet to lift the element. | ||
For example, you could write: | ||
```jsx | ||
@@ -40,14 +60,79 @@ import * as RR from "react-router" | ||
const Link = ({...props}) => <RR.Link karet-lift {...props}/> | ||
const Link1 = ({...props}) => <RR.Link karet-lift {...props}/> | ||
``` | ||
to be able to use `Link` with embedded [Kefir](http://rpominov.github.io/kefir/) | ||
observables: | ||
to be able to use `Link1` with | ||
embedded [Kefir](http://rpominov.github.io/kefir/) observables: | ||
```jsx | ||
<Link href="https://www.youtube.com/watch?v=Rbm6GXllBiw"> | ||
<Link1 href="https://www.youtube.com/watch?v=Rbm6GXllBiw" | ||
ref={elem => elem && elem.focus()}> | ||
{Kefir.sequentially(1000, [3, 2, 1, "Boom!"])} | ||
</Link> | ||
</Link1> | ||
``` | ||
So, that's about it. **_Rock 'n' Roll!_** | ||
Note that the `ref` attribute is only there as an example to contrast | ||
with [`$$ref`](#ref). | ||
### <a name="fromKefir"></a> [≡](#contents) [`fromKefir(observableVDOM)`](#fromKefir "fromKefir: Observable VDOM -> VDOM") | ||
`fromKefir` allows one to convert a Kefir observable of React elements into a | ||
React element. It is useful in case the top-most element of a component depends | ||
on a Kefir observable. | ||
For example: | ||
```jsx | ||
import {fromKefir} from "karet" | ||
import {ifte} from "karet.util" | ||
const Chosen = ({choice}) => | ||
fromKefir(ifte(choice, <True/>, <False/>)) | ||
``` | ||
Here `ifte` from `karet-util` returns an observable that is `<True/>` when | ||
`choice` is true and otherwise `<False/>`. | ||
Note that the point of using `fromKefir` in the above example is that we don't | ||
want to wrap the `ifte(...)` inside an additional element like this: | ||
```jsx | ||
const Chosen = ({choice}) => | ||
<div> | ||
{ifte(choice, <True/>, <False/>)} | ||
</div> | ||
``` | ||
### <a name="fromClass"></a> [≡](#contents) [`fromClass(Component)`](#fromClass "fromClass: Component props -> Component (Observable props)") | ||
`fromClass` allows one the lift a React component. | ||
For example: | ||
```jsx | ||
import * as RR from "react-router" | ||
import {fromClass} from "karet" | ||
const Link2 = fromClass(RR.Link) | ||
``` | ||
**WARNING:** A difficulty with lifting components is that you will then need to | ||
use the [`$$ref`](#ref) attribute, which is not necessary when | ||
using [`karet-lift`](#karet-lift) to lift an element. | ||
#### <a name="ref"></a> [≡](#contents) [`$$ref` attribute](#ref) | ||
The `$$ref` attribute on an element whose component is lifted using `fromClass` | ||
```jsx | ||
<Link2 href="https://www.youtube.com/watch?v=Rbm6GXllBiw" | ||
$$ref={elem => elem && elem.focus()}> | ||
{Kefir.sequentially(1000, [3, 2, 1, "Boom!"])} | ||
</Link2> | ||
``` | ||
does the same thing as the ordinary | ||
JSX | ||
[`ref` attribute](https://facebook.github.io/react/docs/more-about-refs.html#the-ref-callback-attribute): | ||
JSX/React treats `ref` as a special case and it is not passed to components, so | ||
a special name had to be introduced for it. |
import React from "react" | ||
import {Observable} from "kefir" | ||
import {assocPartialU, dissocPartialU, object0, inherit} from "infestines" | ||
import { | ||
array0, | ||
assocPartialU, | ||
dissocPartialU, | ||
object0, | ||
inherit | ||
} from "infestines" | ||
@@ -223,11 +229,17 @@ // | ||
if (n === 1) { | ||
this.values = this | ||
const handlers = e => this.doHandle1(e) | ||
this.handlers = handlers | ||
forEach(props, handlers, onAny1) | ||
} else { | ||
this.values = Array(n).fill(this) | ||
this.handlers = [] | ||
forEach(props, this, onAny) | ||
switch (n) { | ||
case 0: | ||
this.values = array0 | ||
break | ||
case 1: { | ||
this.values = this | ||
const handlers = e => this.doHandle1(e) | ||
this.handlers = handlers | ||
forEach(props, handlers, onAny1) | ||
break | ||
} | ||
default: | ||
this.values = Array(n).fill(this) | ||
this.handlers = [] | ||
forEach(props, this, onAny) | ||
} | ||
@@ -342,1 +354,6 @@ }, | ||
export default assocPartialU("createElement", createElement, React) | ||
// | ||
export const fromClass = Class => props => | ||
reactElement(FromClass, filterProps(Class, props)) |
87778
669
137