UNPKG

932 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({ attrs: { id: spriteNodeId } });
15 window[spriteGlobalVarName] = sprite;
16}
17
18const loadSprite = () => {
19 /**
20 * Check for page already contains sprite node
21 * If found - attach to and reuse it's content
22 * If not - render and mount the new sprite
23 */
24 const existing = document.getElementById(spriteNodeId);
25
26 if (existing) {
27 sprite.attach(existing);
28 } else {
29 sprite.mount(document.body, true);
30 }
31};
32
33if (document.body) {
34 loadSprite();
35} else {
36 domready(loadSprite);
37}
38
39export default sprite;