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.

44 lines
1.9 KiB

  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 octiconMirror from '../../public/img/svg/octicon-mirror.svg';
  10. import octiconRepo from '../../public/img/svg/octicon-repo.svg';
  11. import octiconRepoForked from '../../public/img/svg/octicon-repo-forked.svg';
  12. import octiconRepoTemplate from '../../public/img/svg/octicon-repo-template.svg';
  13. export const svgs = {
  14. 'octicon-chevron-down': octiconChevronDown,
  15. 'octicon-chevron-right': octiconChevronRight,
  16. 'octicon-git-merge': octiconGitMerge,
  17. 'octicon-git-pull-request': octiconGitPullRequest,
  18. 'octicon-issue-closed': octiconIssueClosed,
  19. 'octicon-issue-opened': octiconIssueOpened,
  20. 'octicon-link': octiconLink,
  21. 'octicon-lock': octiconLock,
  22. 'octicon-mirror': octiconMirror,
  23. 'octicon-repo': octiconRepo,
  24. 'octicon-repo-forked': octiconRepoForked,
  25. 'octicon-repo-template': octiconRepoTemplate,
  26. };
  27. const parser = new DOMParser();
  28. const serializer = new XMLSerializer();
  29. // retrieve a HTML string for given SVG icon name and size in pixels
  30. export function svg(name, size = 16) {
  31. if (name in svgs) {
  32. if (size === 16) return svgs[name];
  33. const document = parser.parseFromString(svgs[name], 'image/svg+xml');
  34. const svgNode = document.firstChild;
  35. svgNode.setAttribute('width', String(size));
  36. svgNode.setAttribute('height', String(size));
  37. return serializer.serializeToString(svgNode);
  38. }
  39. return '';
  40. }