@domql/render 2.5.185 → 2.5.186
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.js +3 -3
- package/dist/esm/append.js +35 -0
- package/dist/esm/cache.js +65 -0
- package/dist/esm/create.js +5 -0
- package/dist/esm/index.js +3 -0
- package/index.js +3 -3
- package/package.json +9 -8
package/dist/cjs/index.js
CHANGED
|
@@ -15,6 +15,6 @@ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "defau
|
|
|
15
15
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
16
16
|
var render_exports = {};
|
|
17
17
|
module.exports = __toCommonJS(render_exports);
|
|
18
|
-
__reExport(render_exports, require("./create"), module.exports);
|
|
19
|
-
__reExport(render_exports, require("./cache"), module.exports);
|
|
20
|
-
__reExport(render_exports, require("./append"), module.exports);
|
|
18
|
+
__reExport(render_exports, require("./create.js"), module.exports);
|
|
19
|
+
__reExport(render_exports, require("./cache.js"), module.exports);
|
|
20
|
+
__reExport(render_exports, require("./append.js"), module.exports);
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
const appendNode = (node, parentNode) => {
|
|
2
|
+
parentNode.appendChild(node);
|
|
3
|
+
return node;
|
|
4
|
+
};
|
|
5
|
+
const insertNodeAfter = (node, siblingNode, parentNode) => {
|
|
6
|
+
const parent = parentNode || siblingNode.parentNode;
|
|
7
|
+
if (siblingNode.nextSibling) {
|
|
8
|
+
parent && parent.insertBefore(node, siblingNode.nextSibling);
|
|
9
|
+
} else if (siblingNode == null ? void 0 : siblingNode.insertAdjacentElement) {
|
|
10
|
+
siblingNode.insertAdjacentElement("afterend", node);
|
|
11
|
+
} else {
|
|
12
|
+
parent.insertBefore(node, siblingNode);
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
const insertNodeBefore = (node, siblingNode, parentNode) => {
|
|
16
|
+
const parent = parentNode || siblingNode.parentNode;
|
|
17
|
+
parent && parent.insertBefore(node, siblingNode);
|
|
18
|
+
};
|
|
19
|
+
const assignNode = (element, parent, key, attachOptions) => {
|
|
20
|
+
parent[key || element.key] = element;
|
|
21
|
+
if (element.tag !== "shadow") {
|
|
22
|
+
if (attachOptions && attachOptions.position) {
|
|
23
|
+
(attachOptions.position === "before" ? insertNodeBefore : insertNodeAfter)(element.node, attachOptions.node || parent.node);
|
|
24
|
+
} else {
|
|
25
|
+
appendNode(element.node, parent.node);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return element;
|
|
29
|
+
};
|
|
30
|
+
export {
|
|
31
|
+
appendNode,
|
|
32
|
+
assignNode,
|
|
33
|
+
insertNodeAfter,
|
|
34
|
+
insertNodeBefore
|
|
35
|
+
};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { report } from "@domql/report";
|
|
2
|
+
import { canRenderTag } from "@domql/event";
|
|
3
|
+
import { exec, isObject, isString, isValidHtmlTag, document } from "@domql/utils";
|
|
4
|
+
const createHTMLNode = (element) => {
|
|
5
|
+
const { tag, context } = element;
|
|
6
|
+
const doc = context.document || document;
|
|
7
|
+
if (tag) {
|
|
8
|
+
if (tag === "string")
|
|
9
|
+
return doc.createTextNode(element.text);
|
|
10
|
+
else if (tag === "fragment") {
|
|
11
|
+
return doc.createDocumentFragment();
|
|
12
|
+
} else if (tag === "svg" || tag === "path") {
|
|
13
|
+
return doc.createElementNS("http://www.w3.org/2000/svg", tag);
|
|
14
|
+
} else
|
|
15
|
+
return doc.createElement(tag);
|
|
16
|
+
} else {
|
|
17
|
+
return doc.createElement("div");
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
const detectTag = (element) => {
|
|
21
|
+
let { tag, key, props } = element;
|
|
22
|
+
tag = exec(tag, element);
|
|
23
|
+
if (tag === true)
|
|
24
|
+
tag = key;
|
|
25
|
+
if (isObject(props) && isString(props.tag)) {
|
|
26
|
+
const tagExists = isValidHtmlTag(props.tag);
|
|
27
|
+
if (tagExists)
|
|
28
|
+
return props.tag;
|
|
29
|
+
}
|
|
30
|
+
if (isString(tag)) {
|
|
31
|
+
if (isValidHtmlTag(tag))
|
|
32
|
+
return tag;
|
|
33
|
+
} else {
|
|
34
|
+
let keyAsTag = key.toLowerCase();
|
|
35
|
+
if (keyAsTag.includes("."))
|
|
36
|
+
keyAsTag = keyAsTag.split(".")[0];
|
|
37
|
+
if (keyAsTag.includes("_"))
|
|
38
|
+
keyAsTag = keyAsTag.split("_")[0];
|
|
39
|
+
if (isValidHtmlTag(keyAsTag))
|
|
40
|
+
return keyAsTag;
|
|
41
|
+
}
|
|
42
|
+
return "div";
|
|
43
|
+
};
|
|
44
|
+
const cacheNode = (element) => {
|
|
45
|
+
const { context } = element;
|
|
46
|
+
const win = context.window || window;
|
|
47
|
+
const tag = element.tag = detectTag(element);
|
|
48
|
+
if (!canRenderTag(tag)) {
|
|
49
|
+
return report("HTMLInvalidTag", element.tag, element);
|
|
50
|
+
}
|
|
51
|
+
if (!win.nodeCaches)
|
|
52
|
+
win.nodeCaches = {};
|
|
53
|
+
let cachedTag = win.nodeCaches[tag];
|
|
54
|
+
if (!cachedTag)
|
|
55
|
+
cachedTag = win.nodeCaches[tag] = createHTMLNode(element);
|
|
56
|
+
const clonedNode = cachedTag.cloneNode(true);
|
|
57
|
+
if (tag === "string")
|
|
58
|
+
clonedNode.nodeValue = element.text;
|
|
59
|
+
return clonedNode;
|
|
60
|
+
};
|
|
61
|
+
export {
|
|
62
|
+
cacheNode,
|
|
63
|
+
createHTMLNode,
|
|
64
|
+
detectTag
|
|
65
|
+
};
|
package/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,32 +1,33 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@domql/render",
|
|
3
|
-
"version": "2.5.
|
|
3
|
+
"version": "2.5.186",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"module": "index.js",
|
|
7
7
|
"main": "index.js",
|
|
8
|
+
"source": "index.js",
|
|
8
9
|
"exports": {
|
|
9
10
|
".": {
|
|
10
|
-
"
|
|
11
|
-
"
|
|
11
|
+
"default": "./dist/esm/index.js",
|
|
12
|
+
"import": "./dist/esm/index.js",
|
|
13
|
+
"require": "./dist/cjs/index.js"
|
|
12
14
|
}
|
|
13
15
|
},
|
|
14
|
-
"source": "index.js",
|
|
15
16
|
"files": [
|
|
16
17
|
"*.js",
|
|
17
18
|
"dist"
|
|
18
19
|
],
|
|
19
20
|
"dependencies": {
|
|
20
|
-
"@domql/event": "^2.5.
|
|
21
|
-
"@domql/report": "^2.5.
|
|
21
|
+
"@domql/event": "^2.5.186",
|
|
22
|
+
"@domql/report": "^2.5.186",
|
|
22
23
|
"@domql/utils": "^2.5.185"
|
|
23
24
|
},
|
|
24
25
|
"scripts": {
|
|
25
26
|
"copy:package:cjs": "cp ../../build/package-cjs.json dist/cjs/package.json",
|
|
26
27
|
"build:esm": "npx esbuild *.js --target=es2017 --format=esm --outdir=dist/esm",
|
|
27
28
|
"build:cjs": "npx esbuild *.js --target=node16 --format=cjs --outdir=dist/cjs",
|
|
28
|
-
"build": "npm run build:cjs",
|
|
29
|
+
"build": "rimraf -I dist; npm run build:cjs; npm run build:esm",
|
|
29
30
|
"prepublish": "rimraf -I dist && npm run build && npm run copy:package:cjs"
|
|
30
31
|
},
|
|
31
|
-
"gitHead": "
|
|
32
|
+
"gitHead": "1fa4d0c2683c11578893632ca11a765c3997685e"
|
|
32
33
|
}
|