/** | |
* Turn a string into a node | |
* @param {String} htmlString to convert | |
* @return {HTMLElement|Node} Converted node element | |
*/ | |
export const createNodeFromString = (htmlString) => { | |
const div = document.createElement('div'); | |
div.innerHTML = htmlString.trim(); | |
// Change this to div.childNodes to support multiple top-level nodes | |
return div.firstChild; | |
}; | |
/** | |
* Gets the CSS property from the given element | |
* @param {HTMLElement|Node} element | |
* @param {string} propertyName | |
* @param {boolean} prefixVendor | |
* @return {string} | |
*/ | |
export const getStyleProperty = (element, propertyName, prefixVendor = false) => { | |
if (prefixVendor) { | |
const prefixes = ['', '-webkit-', '-ms-', 'moz-', '-o-']; | |
for (let counter = 0; counter < prefixes.length; counter++) { | |
const prefixedProperty = prefixes[counter] + propertyName; | |
const foundValue = getStyleProperty(element, prefixedProperty); | |
if (foundValue) { | |
return foundValue; | |
} | |
} | |
return ''; | |
} | |
let propertyValue = ''; | |
if (element.currentStyle) { | |
propertyValue = element.currentStyle[propertyName]; | |
} else if (document.defaultView && document.defaultView.getComputedStyle) { | |
propertyValue = document.defaultView | |
.getComputedStyle(element, null) | |
.getPropertyValue(propertyName); | |
} | |
return propertyValue && propertyValue.toLowerCase ? propertyValue.toLowerCase() : propertyValue; | |
}; | |
/** | |
* Checks if the passed element is dom object or not | |
* @param element | |
* @returns {boolean} | |
*/ | |
export const isDomElement = function (element) { | |
return element && typeof element === 'object' && 'nodeType' in element; | |
}; | |