UNPKG

977 BJavaScriptView Raw
1import BrowserSprite from 'svg-baker-runtime/src/browser-sprite';
2import domready from 'domready';
3
4const spriteNodeId = '__SVG_SPRITE_NODE__';
5const spriteGlobalVarName = '__SVG_SPRITE__';
6const isSpriteExists = !!window[spriteGlobalVarName];
7
8// eslint-disable-next-line import/no-mutable-exports
9let sprite;
10
11if (isSpriteExists) {
12 sprite = window[spriteGlobalVarName];
13} else {
14 sprite = new BrowserSprite({
15 attrs: {
16 id: spriteNodeId,
17 'aria-hidden': 'true'
18 }
19 });
20 window[spriteGlobalVarName] = sprite;
21}
22
23const loadSprite = () => {
24 /**
25 * Check for page already contains sprite node
26 * If found - attach to and reuse it's content
27 * If not - render and mount the new sprite
28 */
29 const existing = document.getElementById(spriteNodeId);
30
31 if (existing) {
32 sprite.attach(existing);
33 } else {
34 sprite.mount(document.body, true);
35 }
36};
37
38if (document.body) {
39 loadSprite();
40} else {
41 domready(loadSprite);
42}
43
44export default sprite;