UNPKG

2.18 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3var vnode_1 = require("snabbdom/vnode");
4var h_1 = require("snabbdom/h");
5var snabbdom_selector_1 = require("snabbdom-selector");
6var utils_1 = require("./utils");
7var VNodeWrapper = /** @class */ (function () {
8 function VNodeWrapper(rootElement) {
9 this.rootElement = rootElement;
10 }
11 VNodeWrapper.prototype.call = function (vnode) {
12 if (utils_1.isDocFrag(this.rootElement)) {
13 return this.wrapDocFrag(vnode === null ? [] : [vnode]);
14 }
15 if (vnode === null) {
16 return this.wrap([]);
17 }
18 var _a = snabbdom_selector_1.selectorParser(vnode), selTagName = _a.tagName, selId = _a.id;
19 var vNodeClassName = snabbdom_selector_1.classNameFromVNode(vnode);
20 var vNodeData = vnode.data || {};
21 var vNodeDataProps = vNodeData.props || {};
22 var _b = vNodeDataProps.id, vNodeId = _b === void 0 ? selId : _b;
23 var isVNodeAndRootElementIdentical = typeof vNodeId === 'string' &&
24 vNodeId.toUpperCase() === this.rootElement.id.toUpperCase() &&
25 selTagName.toUpperCase() === this.rootElement.tagName.toUpperCase() &&
26 vNodeClassName.toUpperCase() === this.rootElement.className.toUpperCase();
27 if (isVNodeAndRootElementIdentical) {
28 return vnode;
29 }
30 return this.wrap([vnode]);
31 };
32 VNodeWrapper.prototype.wrapDocFrag = function (children) {
33 return vnode_1.vnode('', { isolate: [] }, children, undefined, this
34 .rootElement);
35 };
36 VNodeWrapper.prototype.wrap = function (children) {
37 var _a = this.rootElement, tagName = _a.tagName, id = _a.id, className = _a.className;
38 var selId = id ? "#" + id : '';
39 var selClass = className ? "." + className.split(" ").join(".") : '';
40 var vnode = h_1.h("" + tagName.toLowerCase() + selId + selClass, {}, children);
41 vnode.data = vnode.data || {};
42 vnode.data.isolate = vnode.data.isolate || [];
43 return vnode;
44 };
45 return VNodeWrapper;
46}());
47exports.VNodeWrapper = VNodeWrapper;
48//# sourceMappingURL=VNodeWrapper.js.map
\No newline at end of file