UNPKG

kickstart-node

Version:

A front-end framework for clean HTML and fast performance

63 lines (57 loc) 1.77 kB
icons = () -> #! svg4everybody v1.0.0 | github.com/jonathantneal/svg4everybody uses = document.getElementsByTagName("use") requestAnimationFrame = window.requestAnimationFrame or window.setTimeout CACHE = {} # IE9TO11 = /Trident\/[567]\b/.test(navigator.userAgent) or (navigator.userAgent.match(/AppleWebKit\/(\d+)/) or [])[1] < 537 IE9TO11 = true # Forcing this to shim regardless. embed = (svg, g) -> if g viewBox = g.getAttribute("viewBox") fragment = document.createDocumentFragment() clone = g.cloneNode(true) svg.setAttribute "viewBox", viewBox if viewBox fragment.appendChild clone.childNodes[0] while clone.childNodes.length svg.appendChild fragment return onload = -> xhr = this x = document.createElement("x") s = xhr.s x.innerHTML = xhr.responseText xhr.onload = -> s.splice(0).map (array) -> embed array[0], x.querySelector("#" + array[1].replace(/(\W)/g, "\\$1")) return return xhr.onload() return onframe = -> use = undefined while (use = uses[0]) svg = use.parentNode url = use.getAttribute("xlink:href").split("#") url_root = url[0] url_hash = url[1] svg.removeChild use if url_root.length xhr = CACHE[url_root] = CACHE[url_root] or new XMLHttpRequest() unless xhr.s xhr.s = [] xhr.open "GET", url_root xhr.onload = onload xhr.send() xhr.s.push [ svg url_hash ] xhr.onload() if xhr.readyState is 4 else embed svg, document.getElementById(url_hash) requestAnimationFrame onframe return onframe() if IE9TO11 return k$.icons = icons module.exports = icons