marko
Version:
UI Components + streaming, async, high performance, HTML templating for Node.js and the browser.
77 lines (65 loc) • 2.24 kB
JavaScript
var Component = require("../../../runtime/components/Component");
var req = require("@internal/require");
var getComponentForEl =
require("@internal/components-util").___getComponentForEl;
// eslint-disable-next-line no-constant-binary-expression
var complain = "MARKO_DEBUG" && require("complain");
// expose legacy
require("@internal/components-registry").___legacy = exports;
exports.load = function (typeName) {
return exports.defineWidget(req(typeName));
};
// legacy api
exports.defineComponent = require("../../../runtime/components/legacy/defineComponent-legacy");
exports.defineWidget = require("@internal/components-define-widget-legacy");
exports.defineRenderer = require("../../../runtime/components/legacy/defineRenderer-legacy");
exports.makeRenderable =
exports.renderable = require("../../../runtime/renderable");
// browser only
var Widget = (exports.Widget = Component);
exports.getWidgetForEl = exports.get = function (elOrId) {
var el = elOrId;
if (typeof elOrId === "string") {
el = document.getElementById(elOrId);
}
if (el && el.__widget) {
return el.__widget;
}
return getComponentForEl(el);
};
exports.initWidgets =
require("@internal/components-registry").___initServerRendered;
// monkey patch Widget
if (Widget) {
var WidgetProto = Widget.prototype;
WidgetProto.setProps = function (newInput) {
this.___isReceivingNewInput = true;
this.___setInput(newInput);
};
WidgetProto.rerender = function (newInput) {
if (newInput) {
this.setProps(newInput);
}
this.forceUpdate();
this.update();
};
}
var RenderResult = require("../../../runtime/RenderResult");
RenderResult.prototype.getWidget = function () {
// eslint-disable-next-line no-constant-condition
if ("MARKO_DEBUG") {
complain("getWidget is deprecated. use getComponent instead.");
}
return this.getWidgets()[0];
};
RenderResult.prototype.getWidgets = function () {
// eslint-disable-next-line no-constant-condition
if ("MARKO_DEBUG") {
complain("getWidgets is deprecated. use getComponents instead.");
}
return RenderResult.prototype.getComponents
.apply(this, arguments)
.filter(function (component) {
return component.___isLegacy;
});
};