/** * 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; };