1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | var vnode_1 = require("snabbdom/vnode");
|
4 | var h_1 = require("snabbdom/h");
|
5 | var snabbdom_selector_1 = require("snabbdom-selector");
|
6 | var utils_1 = require("./utils");
|
7 | var VNodeWrapper = (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 | }());
|
47 | exports.VNodeWrapper = VNodeWrapper;
|
48 |
|
\ | No newline at end of file |