import { argumentNotNull } from "@implab/core-amd/safe"; import { RenditionBase } from "./RenditionBase"; export class FunctionRendition extends RenditionBase { private _component: (...args: any[]) => any; private _node: Node | undefined; constructor(component: (...args: any[]) => any) { super(); argumentNotNull(component, "component"); this._component = component; } protected _create(attrs: object, children: any[]) { const _attrs: any = attrs || {}; const _children = children.map(x => this.getItemDom(x)); this._node = this.getItemDom( this._component.length === 2 ? this._component.call(null, { ..._attrs }, _children) : this._component.call(null, { ..._attrs, children: _children }) ); } protected _getDomNode() { if (!this._node) throw new Error("The instance of the widget isn't created"); return this._node; } }