1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- 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;
|