From 71813ff5583a01813296a4604326f47f7c2dfb15 Mon Sep 17 00:00:00 2001 From: iambumblehead Date: Wed, 25 Oct 2023 12:36:00 -0700 Subject: [PATCH] feat: optimise detection of data and svg names (#1058) Co-authored-by: chris --- src/h.ts | 10 ++++------ src/tovnode.ts | 12 ++---------- 2 files changed, 6 insertions(+), 16 deletions(-) diff --git a/src/h.ts b/src/h.ts index 351126c..52f6b1c 100644 --- a/src/h.ts +++ b/src/h.ts @@ -16,7 +16,7 @@ export type VNodeChildren = ArrayOrElement; export function addNS( data: any, children: Array | undefined, - sel: string | undefined + sel: string | undefined, ): void { data.ns = "http://www.w3.org/2000/svg"; if (sel !== "foreignObject" && children !== undefined) { @@ -37,7 +37,7 @@ export function h(sel: string, children: VNodeChildren): VNode; export function h( sel: string, data: VNodeData | null, - children: VNodeChildren + children: VNodeChildren, ): VNode; export function h(sel: any, b?: any, c?: any): VNode { let data: VNodeData = {}; @@ -74,14 +74,12 @@ export function h(sel: any, b?: any, c?: any): VNode { undefined, undefined, children[i], - undefined + undefined, ); } } if ( - sel[0] === "s" && - sel[1] === "v" && - sel[2] === "g" && + sel.startsWith("svg") && (sel.length === 3 || sel[3] === "." || sel[3] === "#") ) { addNS(data, children, sel); diff --git a/src/tovnode.ts b/src/tovnode.ts index e93ba6f..58c6d2c 100644 --- a/src/tovnode.ts +++ b/src/tovnode.ts @@ -21,13 +21,7 @@ export function toVNode(node: Node, domApi?: DOMAPI): VNode { const elmChildren = node.childNodes; for (i = 0, n = elmAttrs.length; i < n; i++) { name = elmAttrs[i].nodeName; - if ( - name[0] === "d" && - name[1] === "a" && - name[2] === "t" && - name[3] === "a" && - name[4] === "-" - ) { + if (name.startsWith("data-")) { dataset[name.slice(5)] = elmAttrs[i].nodeValue || ""; } else if (name !== "id" && name !== "class") { attrs[name] = elmAttrs[i].nodeValue; @@ -41,9 +35,7 @@ export function toVNode(node: Node, domApi?: DOMAPI): VNode { if (Object.keys(dataset).length > 0) data.dataset = dataset; if ( - sel[0] === "s" && - sel[1] === "v" && - sel[2] === "g" && + sel.startsWith("svg") && (sel.length === 3 || sel[3] === "." || sel[3] === "#") ) { addNS(data, children, sel);