Comparing version 5.1.2 to 5.1.3
135
browser.js
var hyperx = require('hyperx') | ||
var appendChild = require('./appendChild') | ||
var trailingNewlineRegex = /\n[\s]+$/ | ||
var leadingNewlineRegex = /^\n[\s]+/ | ||
var trailingSpaceRegex = /[\s]+$/ | ||
var leadingSpaceRegex = /^[\s]+/ | ||
var multiSpaceRegex = /[\n\s]+/g | ||
var SVGNS = 'http://www.w3.org/2000/svg' | ||
@@ -19,12 +14,2 @@ var XLINKNS = 'http://www.w3.org/1999/xlink' | ||
var TEXT_TAGS = [ | ||
'a', 'abbr', 'b', 'bdi', 'bdo', 'br', 'cite', 'data', 'dfn', 'em', 'i', | ||
'kbd', 'mark', 'q', 'rp', 'rt', 'rtc', 'ruby', 's', 'amp', 'small', 'span', | ||
'strong', 'sub', 'sup', 'time', 'u', 'var', 'wbr' | ||
] | ||
var CODE_TAGS = [ | ||
'code', 'pre' | ||
] | ||
var SVG_TAGS = [ | ||
@@ -71,4 +56,2 @@ 'svg', 'altGlyph', 'altGlyphDef', 'altGlyphItem', 'animate', 'animateColor', | ||
var nodeName = el.nodeName.toLowerCase() | ||
// Create the properties | ||
@@ -112,118 +95,4 @@ for (var p in props) { | ||
appendChild(children) | ||
appendChild(el, children) | ||
return el | ||
function appendChild (childs) { | ||
if (!Array.isArray(childs)) return | ||
var hadText = false | ||
var value, leader | ||
for (var i = 0, len = childs.length; i < len; i++) { | ||
var node = childs[i] | ||
if (Array.isArray(node)) { | ||
appendChild(node) | ||
continue | ||
} | ||
if (typeof node === 'number' || | ||
typeof node === 'boolean' || | ||
typeof node === 'function' || | ||
node instanceof Date || | ||
node instanceof RegExp) { | ||
node = node.toString() | ||
} | ||
var lastChild = el.childNodes[el.childNodes.length - 1] | ||
// Iterate over text nodes | ||
if (typeof node === 'string') { | ||
hadText = true | ||
// If we already had text, append to the existing text | ||
if (lastChild && lastChild.nodeName === '#text') { | ||
lastChild.nodeValue += node | ||
// We didn't have a text node yet, create one | ||
} else { | ||
node = document.createTextNode(node) | ||
el.appendChild(node) | ||
lastChild = node | ||
} | ||
// If this is the last of the child nodes, make sure we close it out | ||
// right | ||
if (i === len - 1) { | ||
hadText = false | ||
// Trim the child text nodes if the current node isn't a | ||
// node where whitespace matters. | ||
if (TEXT_TAGS.indexOf(nodeName) === -1 && | ||
CODE_TAGS.indexOf(nodeName) === -1) { | ||
value = lastChild.nodeValue | ||
.replace(leadingNewlineRegex, '') | ||
.replace(trailingSpaceRegex, '') | ||
.replace(trailingNewlineRegex, '') | ||
.replace(multiSpaceRegex, ' ') | ||
if (value === '') { | ||
el.removeChild(lastChild) | ||
} else { | ||
lastChild.nodeValue = value | ||
} | ||
} else if (CODE_TAGS.indexOf(nodeName) === -1) { | ||
// The very first node in the list should not have leading | ||
// whitespace. Sibling text nodes should have whitespace if there | ||
// was any. | ||
leader = i === 0 ? '' : ' ' | ||
value = lastChild.nodeValue | ||
.replace(leadingNewlineRegex, leader) | ||
.replace(leadingSpaceRegex, ' ') | ||
.replace(trailingSpaceRegex, '') | ||
.replace(trailingNewlineRegex, '') | ||
.replace(multiSpaceRegex, ' ') | ||
lastChild.nodeValue = value | ||
} | ||
} | ||
// Iterate over DOM nodes | ||
} else if (node && node.nodeType) { | ||
// If the last node was a text node, make sure it is properly closed out | ||
if (hadText) { | ||
hadText = false | ||
// Trim the child text nodes if the current node isn't a | ||
// text node or a code node | ||
if (TEXT_TAGS.indexOf(nodeName) === -1 && | ||
CODE_TAGS.indexOf(nodeName) === -1) { | ||
value = lastChild.nodeValue | ||
.replace(leadingNewlineRegex, '') | ||
.replace(trailingNewlineRegex, '') | ||
.replace(multiSpaceRegex, ' ') | ||
// Remove empty text nodes, append otherwise | ||
if (value === '') { | ||
el.removeChild(lastChild) | ||
} else { | ||
lastChild.nodeValue = value | ||
} | ||
// Trim the child nodes if the current node is not a node | ||
// where all whitespace must be preserved | ||
} else if (CODE_TAGS.indexOf(nodeName) === -1) { | ||
value = lastChild.nodeValue | ||
.replace(leadingSpaceRegex, ' ') | ||
.replace(leadingNewlineRegex, '') | ||
.replace(trailingNewlineRegex, '') | ||
.replace(multiSpaceRegex, ' ') | ||
lastChild.nodeValue = value | ||
} | ||
} | ||
// Store the last nodename | ||
var _nodeName = node.nodeName | ||
if (_nodeName) nodeName = _nodeName.toLowerCase() | ||
// Append the node to the DOM | ||
el.appendChild(node) | ||
} | ||
} | ||
} | ||
} | ||
@@ -230,0 +99,0 @@ |
{ | ||
"name": "bel", | ||
"version": "5.1.2", | ||
"version": "5.1.3", | ||
"description": "A simple extension to native elements", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
17
534
0
24051