UNPKG

@purtuga/dom-data-bind

Version:

DOM Data Bind utility. Bind data to DOM

35 lines (29 loc) 1.23 kB
import {view} from "./view.js"; import {DOM_DATA_BIND_PROP} from "./utils.js"; import {TemplateInstance} from "./TemplateInstance.js"; import {applyBindingsToTemplateInstance, Template} from "./Template.js"; //========================================================================== /** * Returns a DocumentFragment representation of the given `html` code provided on * input bound to the given data. * * @param {String|HTMLTemplateElement|Template} html * @param {Object} [data] * @param {Array<Directive>} [directives] * * @return {DocumentFragment} * Document Fragment returned will have a property named 'DomDataBind', which is * a TemplateInstance class instance */ export function render(html, data, directives) { const viewTemplate = html instanceof Template ? html : view(html, directives); const response = document.importNode(viewTemplate.ele.content, true); response[DOM_DATA_BIND_PROP] = new TemplateInstance( response, applyBindingsToTemplateInstance(response, viewTemplate._bindings, viewTemplate._directives), viewTemplate.id ); response[DOM_DATA_BIND_PROP].setData(data); return response; } export default render;