UNPKG

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