browser-sprite.js 977 B

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