-
Notifications
You must be signed in to change notification settings - Fork 1
/
svgSprite.js.map
1 lines (1 loc) · 17.4 KB
/
svgSprite.js.map
1
{"version":3,"file":null,"sources":["src/utils.js","src/dom/css.js","src/dom/insert.js","src/dom/loaded.js","src/svg/parse.js","src/svg/cache.js","src/svg/xlink.js","src/svg/inject.js","src/svg/inline.js","src/index.js"],"sourcesContent":["// do nothing\nexport function noop () {}\n\n// map array-like lists\nexport function map (mapper, list) { return [].map.call(list, mapper) }\n\n// is string utility\nexport function string (x) { return 'string' === typeof x }\n\n// minification purpose\nexport const doc = document\n\n// matches polyfill\nexport const matches = Element.prototype.matches\n\t|| function (selector) { return -1 !== [].indexOf.call(doc.querySelectorAll(selector), this) }\n\n// query selector helper\nexport function find (selector, element) {\n\treturn element ? element.querySelector(selector) : null\n}\n\n// data-attr dataset read even when no support (IE10)\nexport function dataset (name, element) {\n\treturn element.dataset ?\n\t\telement.dataset[name]\n\t\t: element.getAttribute('data-' + name.replace(/[A-Z]/, uppercase => `-${uppercase.toLowerCase()}`))\n}\n\n// simple XHR get\nexport function get (url, callback) {\n\tconst request = new XMLHttpRequest\n\trequest.onreadystatechange = () => {\n\t\tconst status = 4 === request.readyState && request.status\n\t\tif (200 > status)\n\t\t\treturn\n\t\tif (!status || 400 <= status)\n\t\t\tthrow Error(`${status} ${request.statusText} ${url}`)\n\t\tcallback(request.responseXML || request.responseText)\n\t}\n\trequest.open('GET', url)\n\trequest.send()\n\treturn request\n}\n\n// raf wrapper / polyfill\nconst w = window\nconst raf = w.requestAnimationFrame\nexport const async = raf || (callback => setTimeout(callback, 16))\nasync.cancel = raf ? w.cancelAnimationFrame : clearTimeout\n\n// wait predicate to be true before calling callback (use polling)\nexport function wait (predicate, callback) {\n\tasync(predicate() ? callback : () => wait(predicate, callback))\n}\n","import {doc} from 'utils'\n\nconst sheet = doc.head.appendChild(doc.createElement('style')).sheet // inject a styleseet in the document\n\n/**\n * Inject CSS rules\n *\n * @param {String} selector CSS selector\n * @param {String} properties CSS rule body properties\n * @return {Function} Remove the inserted CSS rule\n */\nexport default function css (selector, properties) {\n\t// see https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet/insertRule#Restrictions\n\tconst index = sheet.insertRule(`${selector} { ${properties} }`, sheet.cssRules.length)\n\treturn () => (sheet.deleteRule(index), sheet.insertRule('x{}', index))\n}\n","import {doc, matches} from 'utils'\nimport css from 'dom/css'\n\nconst animation = 'svg-insert'\n\n// init: add svg-insert animation css rule\nArray('', '-webkit-', '-moz-', '-ms-', '-o-').some(vendor => {\n\ttry { // insertRule throws on invalid @keyframes\n\t\treturn css(`@${vendor}keyframes ${animation}`, 'from { opacity: .99 } to { opacity: 1 }')\n\t} catch (error) {}\n})\n\n// add / remove animationstart event listener (with vendor prefixes)\nfunction listener (action, handler) { \n\tconst events = ['animationstart', 'MSAnimationStart', 'webkitAnimationStart']\n\tfor (let vendor in events)\n\t\tdoc[`${action}EventListener`](events[vendor], handler)\n}\n\n/**\n * Watch specific elements insertion in DOM (using animationstart event trick)\n *\n * @param {Function} callback Callback recieving every targeted element inserted in DOM\n * @param {String} selector CSS selector to target specific elements\n * @return {Function} Return the list of processed elements, stop watching if called with truthy argument\n */\nexport default function insert (callback, selector) {\n\tconst rule = `animation: ${animation} 1ms !important`\n\tconst remove = css(selector, `-webkit-${rule}; ${rule}`)\n\tconst inserted = []\n\tconst handler = event => {\n\t\tconst target = event.target\n\t\tif (event.animationName === animation\n\t\t\t&& matches.call(target, selector)\n\t\t\t&& -1 === inserted.indexOf(target)) { // only once, even if animation start again\n\t\t\tinserted.push(target)\n\t\t\tcallback(target)\n\t\t}\n\t}\n\tlistener('add', handler)\n\treturn clean => {\n\t\tif (clean) {\n\t\t\tremove()\n\t\t\tlistener('remove', handler)\n\t\t}\n\t\treturn inserted\n\t}\n}\n","import {doc} from 'utils'\n\n/**\n * Is the document loaded ?\n *\n * @return {Boolean}\n */\nexport default function loaded () {\n\treturn /interactive|complete/.test(doc.readyState)\n}\n","import {doc} from 'utils'\n\nconst dom = doc.createElement('div')\n\n/**\n * Parse SVG source\n *\n * @param {Document|String} source SVG source (usually returned by XHR as XMLDocument or markup source text)\n * @throws {Error} When source can't be parsed\n * @return {Element} Parsed SVG DOM Element\n */\nexport default function parse (source) {\n\tconst svg = source.documentElement || ((dom.innerHTML = String(source).trim()), dom.firstChild)\n\tif (!/svg/i.test(svg.nodeName))\n\t\tthrow Error(`Not a svg ${source}`)\n\treturn svg\n}\n","import {noop, doc, get, wait} from 'utils'\nimport loaded from 'dom/loaded'\nimport parse from 'svg/parse'\n\n/**\n * Cache SVG sprites and inject them in DOM\n *\n * @param {String} source SVG sprite source (URL or markup)\n * @param {Function?} callback Optional callback recieving the sprite SVG DOM Element injected\n * @return {Object} Request as stored in cache: a decorated XHR object or a simple object when markup is provided\n */\nexport default function cache (source, callback = noop) {\n\tlet request = cache[source]\n\tif (request) {\n\t\tconst cb = request.cb\n\t\trequest.svg ?\n\t\t\tcallback(request.svg) // done\n\t\t\t: (request.cb = svg => { cb(svg), callback(svg) }) // pending\n\t\treturn request\n\t}\n\tconst markup = /^\\s*<svg\\b/.test(source)\n\tconst append = function (svg) {\n\t\tsvg = doc.body.appendChild(parse(svg))\n\t\tsvg.setAttribute('data-source', markup ? 'markup' : source)\n\t\tsvg.setAttribute('display', 'none')\n\t\trequest.svg = svg\n\t\trequest.cb(svg)\n\t}\n\trequest = markup ?\n\t\t(wait(loaded, append.bind(null, source)), {}) // wait document to be loaded\n\t\t: get(source, append) // XHR request\n\trequest.cb = callback\n\tcache[source] = request\n\treturn request\n}\n","/**\n * Getter / setter of xlink attibute\n *\n * @param {Element} element DOM Element\n * @param {String?} href Optional for getter, a href link for setter\n * @return {String|null} Attribute value when called as getter / void when setter\n */\nexport default function xlink (element, href) {\n\treturn element[`${href ? 'set' : 'get'}AttributeNS`]('http://www.w3.org/1999/xlink', 'href', href)\n}\n","import {dataset, find} from 'utils'\nimport cache from 'svg/cache'\nimport parse from 'svg/parse'\nimport xlink from 'svg/xlink'\n\n/**\n * Create callback that append to given DOM element a SVG pointing to an inlined SVG sprite\n *\n * @param {Function} before Callback to validate / customize the injected SVG\n * @param {String} source SVG sprite source\n * @return {Function} Cache the sprite, inject it in DOM only once. In given element, append a SVG pointing to one of the sprite symbol\n */\nexport default function inject (before, source) {\n\treturn element => {\n\t\tcache(source, sprite => {\n\t\t\tconst fragment = dataset('svg', element)\n\t\t\tconst svg = parse(`<svg role=\"presentation\"><use xlink:href=\"#${fragment}\"/></svg>`)\n\t\t\tif (false !== before(svg, fragment, xlink.bind(null, find('use', svg)), element, sprite, source))\n\t\t\t\telement.appendChild(svg)\n\t\t})\n\t}\n}\n","import cache from 'svg/cache'\nimport xlink from 'svg/xlink'\n\n/**\n * Create callback that swap SVG use's xlink:href referencing external SVG sprite to point to the inlined SVG sprite\n *\n * @param {Function} before Callback to validate / customize the SVG use's xlink:href attribute swapping\n * @return {Function} Cache the sprite, inject it in DOM only once. For given SVG element, change the use's xlink:href to point to the inlined sprite symbol\n */\nexport default function inline (before) {\n\treturn element => {\n\t\tconst asset = xlink(element)\n\t\tif (asset)\n\t\t\tasset.replace(/^(.+?)(#(.+))$/, (_, url, hash, fragment) => {\n\t\t\t\tcache(url, sprite => {\n\t\t\t\t\tif (false !== before(element.ownerSVGElement, fragment, sprite, url))\n\t\t\t\t\t\txlink(element, hash)\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","import {string, map, find, noop} from 'utils'\nimport insert from 'dom/insert'\nimport inject from 'svg/inject'\nimport inline from 'svg/inline'\n\n/**\n * Apply the handler to every elements\n *\n * @param {Function} handler How to process each element\n * @param {HTMLCollection|NodeList|Array|String} elements List of elements or CSS selector\n * @param {Function} finder Find SVG Element relative to processed element\n * @return {Function} Return the list of processed elements. If 'elements' is a selector stop processing new elements if called with truthy argument\n */\nfunction call (handler, elements, finder) {\n\tif (string(elements)) {\n\t\tconst inserted = insert(handler, elements)\n\t\treturn (clean) => map(finder, inserted(clean))\n\t}\n\tmap(handler, elements)\n\treturn () => map(finder, elements)\n} \n\n/**\n * Target use tags pointing to external resource\n * \n * @param {HTMLCollection|NodeList|Array|String} elements List of elements or CSS selector\n * @return {String|Array} Filtered list / modified selector to target use tag pointing to external resource\n */\nfunction use (elements) {\n\tconst external = 'use[*|href]:not([*|href^=\"#\"])'\n\treturn string(elements) ?\n\t\t`${elements} ${external}`\n\t\t: map(find.bind(null, external), elements).filter(Boolean)\n}\n\n/**\n * Inject SVGs using SVG sprite symbols\n * \n * @param {Object} settings Specify 'source' of the sprite. Optionally, 'elements' as CSS selector or DOM list and 'before' callback\n * @return {Function} List processed SVG, stop processing new elements when called with truthy argument\n */\nexport default function svgSprite (settings) {\n\treturn call(\n\t\tinject(settings.before || noop, settings.source)\n\t\t, settings.elements || '[data-svg]'\n\t\t, find.bind(null, 'svg')\n\t)\n}\n\n/**\n * Inline SVGs pointing to external resources\n *\n * @param {Object?} settings Optional, 'elements' as CSS selector or DOM list and 'before' callback\n * @return {Function} List processed SVG, stop processing new elements when called with truthy argument\n */\nsvgSprite.inline = function (settings = {}) {\n\treturn call(\n\t\tinline(settings.before || noop)\n\t\t, use(settings.elements || 'svg')\n\t\t, element => element.ownerSVGElement\n\t)\n}\n"],"names":["const","let"],"mappings":"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"}