UNPKG

@cycle/dom

Version:

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

47 lines 2.16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var snabbdom_1 = require("snabbdom"); var snabbdom_selector_1 = require("snabbdom-selector"); var utils_1 = require("./utils"); var VNodeWrapper = /** @class */ (function () { function VNodeWrapper(rootElement) { this.rootElement = rootElement; } VNodeWrapper.prototype.call = function (vnode) { if (utils_1.isDocFrag(this.rootElement)) { return this.wrapDocFrag(vnode === null ? [] : [vnode]); } if (vnode === null) { return this.wrap([]); } var _a = snabbdom_selector_1.selectorParser(vnode), selTagName = _a.tagName, selId = _a.id; var vNodeClassName = snabbdom_selector_1.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 snabbdom_1.vnode('', { 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 = snabbdom_1.h("" + tagName.toLowerCase() + selId + selClass, {}, children); vnode.data = vnode.data || {}; vnode.data.isolate = vnode.data.isolate || []; return vnode; }; return VNodeWrapper; }()); exports.VNodeWrapper = VNodeWrapper; //# sourceMappingURL=VNodeWrapper.js.map