import BrowserSprite from 'svg-baker-runtime/src/browser-sprite'; import domready from 'domready'; const spriteNodeId = '__SVG_SPRITE_NODE__'; const spriteGlobalVarName = '__SVG_SPRITE__'; const isSpriteExists = !!window[spriteGlobalVarName]; // eslint-disable-next-line import/no-mutable-exports let sprite; if (isSpriteExists) { sprite = window[spriteGlobalVarName]; } else { sprite = new BrowserSprite({ attrs: { id: spriteNodeId, 'aria-hidden': 'true' } }); window[spriteGlobalVarName] = sprite; } const loadSprite = () => { /** * Check for page already contains sprite node * If found - attach to and reuse it's content * If not - render and mount the new sprite */ const existing = document.getElementById(spriteNodeId); if (existing) { sprite.attach(existing); } else { sprite.mount(document.body, true); } }; if (document.body) { loadSprite(); } else { domready(loadSprite); } export default sprite;