mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-30 18:36:22 +01:00 
			
		
		
		
	Convert frontend code to typescript (#31559)
None of the frontend js/ts files was touched besides these two commands
(edit: no longer true, I touched one file in
61105d0618
because of a deprecation that was not showing before the rename).
`tsc` currently reports 778 errors, so I have disabled it in CI as
planned.
Everything appears to work fine.
			
			
This commit is contained in:
		
							
								
								
									
										47
									
								
								web_src/js/markup/math.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								web_src/js/markup/math.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,47 @@ | ||||
| import {displayError} from './common.ts'; | ||||
|  | ||||
| function targetElement(el) { | ||||
|   // The target element is either the current element if it has the | ||||
|   // `is-loading` class or the pre that contains it | ||||
|   return el.classList.contains('is-loading') ? el : el.closest('pre'); | ||||
| } | ||||
|  | ||||
| export async function renderMath() { | ||||
|   const els = document.querySelectorAll('.markup code.language-math'); | ||||
|   if (!els.length) return; | ||||
|  | ||||
|   const [{default: katex}] = await Promise.all([ | ||||
|     import(/* webpackChunkName: "katex" */'katex'), | ||||
|     import(/* webpackChunkName: "katex" */'katex/dist/katex.css'), | ||||
|   ]); | ||||
|  | ||||
|   const MAX_CHARS = 1000; | ||||
|   const MAX_SIZE = 25; | ||||
|   const MAX_EXPAND = 1000; | ||||
|  | ||||
|   for (const el of els) { | ||||
|     const target = targetElement(el); | ||||
|     if (target.hasAttribute('data-render-done')) continue; | ||||
|     const source = el.textContent; | ||||
|  | ||||
|     if (source.length > MAX_CHARS) { | ||||
|       displayError(target, new Error(`Math source of ${source.length} characters exceeds the maximum allowed length of ${MAX_CHARS}.`)); | ||||
|       continue; | ||||
|     } | ||||
|  | ||||
|     const displayMode = el.classList.contains('display'); | ||||
|     const nodeName = displayMode ? 'p' : 'span'; | ||||
|  | ||||
|     try { | ||||
|       const tempEl = document.createElement(nodeName); | ||||
|       katex.render(source, tempEl, { | ||||
|         maxSize: MAX_SIZE, | ||||
|         maxExpand: MAX_EXPAND, | ||||
|         displayMode, | ||||
|       }); | ||||
|       target.replaceWith(tempEl); | ||||
|     } catch (error) { | ||||
|       displayError(target, error); | ||||
|     } | ||||
|   } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user