1 | import { h, vnode as vnodeFn } from 'snabbdom';
|
2 | import { classNameFromVNode, selectorParser } from 'snabbdom-selector';
|
3 | import { isDocFrag } from './utils';
|
4 | var VNodeWrapper = (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 | }());
|
44 | export { VNodeWrapper };
|
45 |
|
\ | No newline at end of file |