You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import octiconChevronDown from '../../public/img/svg/octicon-chevron-down.svg';
  2. import octiconChevronRight from '../../public/img/svg/octicon-chevron-right.svg';
  3. import octiconGitMerge from '../../public/img/svg/octicon-git-merge.svg';
  4. import octiconGitPullRequest from '../../public/img/svg/octicon-git-pull-request.svg';
  5. import octiconIssueClosed from '../../public/img/svg/octicon-issue-closed.svg';
  6. import octiconIssueOpened from '../../public/img/svg/octicon-issue-opened.svg';
  7. import octiconLink from '../../public/img/svg/octicon-link.svg';
  8. import octiconLock from '../../public/img/svg/octicon-lock.svg';
  9. import octiconMilestone from '../../public/img/svg/octicon-milestone.svg';
  10. import octiconMirror from '../../public/img/svg/octicon-mirror.svg';
  11. import octiconProject from '../../public/img/svg/octicon-project.svg';
  12. import octiconRepo from '../../public/img/svg/octicon-repo.svg';
  13. import octiconRepoForked from '../../public/img/svg/octicon-repo-forked.svg';
  14. import octiconRepoTemplate from '../../public/img/svg/octicon-repo-template.svg';
  15. export const svgs = {
  16. 'octicon-chevron-down': octiconChevronDown,
  17. 'octicon-chevron-right': octiconChevronRight,
  18. 'octicon-git-merge': octiconGitMerge,
  19. 'octicon-git-pull-request': octiconGitPullRequest,
  20. 'octicon-issue-closed': octiconIssueClosed,
  21. 'octicon-issue-opened': octiconIssueOpened,
  22. 'octicon-link': octiconLink,
  23. 'octicon-lock': octiconLock,
  24. 'octicon-milestone': octiconMilestone,
  25. 'octicon-mirror': octiconMirror,
  26. 'octicon-project': octiconProject,
  27. 'octicon-repo': octiconRepo,
  28. 'octicon-repo-forked': octiconRepoForked,
  29. 'octicon-repo-template': octiconRepoTemplate,
  30. };
  31. const parser = new DOMParser();
  32. const serializer = new XMLSerializer();
  33. // retrieve a HTML string for given SVG icon name, size and additional classes
  34. export function svg(name, size = 16, className = '') {
  35. if (!(name in svgs)) return '';
  36. if (size === 16 && !className) return svgs[name];
  37. const document = parser.parseFromString(svgs[name], 'image/svg+xml');
  38. const svgNode = document.firstChild;
  39. if (size !== 16) svgNode.setAttribute('width', String(size));
  40. if (size !== 16) svgNode.setAttribute('height', String(size));
  41. if (className) svgNode.classList.add(...className.split(/\s+/));
  42. return serializer.serializeToString(svgNode);
  43. }