UNPKG

@cycle/dom

Version:

The standard DOM Driver for Cycle.js, based on Snabbdom

45 lines 2.03 kB
import { h, vnode as vnodeFn } from 'snabbdom'; import { classNameFromVNode, selectorParser } from 'snabbdom-selector'; import { isDocFrag } from './utils'; var VNodeWrapper = /** @class */ (function () { function VNodeWrapper(rootElement) { this.rootElement = rootElement; } VNodeWrapper.prototype.call = function (vnode) { if (isDocFrag(this.rootElement)) { return this.wrapDocFrag(vnode === null ? [] : [vnode]); } if (vnode === null) { return this.wrap([]); } var _a = selectorParser(vnode), selTagName = _a.tagName, selId = _a.id; var vNodeClassName = classNameFromVNode(vnode); var vNodeData = vnode.data || {}; var vNodeDataProps = vNodeData.props || {}; var _b = vNodeDataProps.id, vNodeId = _b === void 0 ? selId : _b; var isVNodeAndRootElementIdentical = typeof vNodeId === 'string' && vNodeId.toUpperCase() === this.rootElement.id.toUpperCase() && selTagName.toUpperCase() === this.rootElement.tagName.toUpperCase() && vNodeClassName.toUpperCase() === this.rootElement.className.toUpperCase(); if (isVNodeAndRootElementIdentical) { return vnode; } return this.wrap([vnode]); }; VNodeWrapper.prototype.wrapDocFrag = function (children) { return vnodeFn('', { isolate: [] }, children, undefined, this .rootElement); }; VNodeWrapper.prototype.wrap = function (children) { var _a = this.rootElement, tagName = _a.tagName, id = _a.id, className = _a.className; var selId = id ? "#" + id : ''; var selClass = className ? "." + className.split(" ").join(".") : ''; var vnode = h("" + tagName.toLowerCase() + selId + selClass, {}, children); vnode.data = vnode.data || {}; vnode.data.isolate = vnode.data.isolate || []; return vnode; }; return VNodeWrapper; }()); export { VNodeWrapper }; //# sourceMappingURL=VNodeWrapper.js.map