34 lines
975 B
TypeScript
34 lines
975 B
TypeScript
|
/**
|
||
|
* createElement
|
||
|
* Edited from:
|
||
|
* @link https://stackoverflow.com/a/42405694
|
||
|
*/
|
||
|
function createElement(tag, attrs, children) {
|
||
|
var element = document.createElement(tag);
|
||
|
|
||
|
for (let name in attrs) {
|
||
|
if (name && attrs.hasOwnProperty(name)) {
|
||
|
let value = attrs[name];
|
||
|
|
||
|
if (name == "dangerouslySetInnerHTML") {
|
||
|
element.innerHTML = value.__html;
|
||
|
}
|
||
|
else if (value === true) {
|
||
|
element.setAttribute(name, name);
|
||
|
} else if (value !== false && value != null) {
|
||
|
element.setAttribute(name, value.toString());
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
for (let i = 2; i < arguments.length; i++) {
|
||
|
let child = arguments[i];
|
||
|
if (child) {
|
||
|
element.appendChild(
|
||
|
child.nodeType == null ?
|
||
|
document.createTextNode(child.toString()) : child);
|
||
|
}
|
||
|
}
|
||
|
return element;
|
||
|
}
|
||
|
|
||
|
export default createElement;
|