30 lines
		
	
	
	
		
			759 B
			
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
	
		
			759 B
			
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
async function getOcticonSvg (name: string) {
 | 
						|
  try {
 | 
						|
    const response = await fetch(`octicon/${name}.svg`)
 | 
						|
    const div = document.createElement('div')
 | 
						|
    div.innerHTML = await response.text()
 | 
						|
    return div
 | 
						|
  } catch {
 | 
						|
    return null
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
async function loadSVG (element: HTMLSpanElement) {
 | 
						|
  for (const cssClass of element.classList) {
 | 
						|
    if (cssClass.startsWith('octicon-')) {
 | 
						|
      const icon = await getOcticonSvg(cssClass.substr(8))
 | 
						|
      if (icon) {
 | 
						|
        for (const elemClass of element.classList) {
 | 
						|
          icon.classList.add(elemClass)
 | 
						|
        }
 | 
						|
        element.before(icon)
 | 
						|
        element.remove()
 | 
						|
        break
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
for (const element of document.querySelectorAll<HTMLSpanElement>('.octicon')) {
 | 
						|
  loadSVG(element)
 | 
						|
}
 |