mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-30 06:38:37 -04:00 
			
		
		
		
	| @@ -4,6 +4,7 @@ import {initMarkupCodeCopy} from './codecopy.ts'; | ||||
| import {initMarkupRenderAsciicast} from './asciicast.ts'; | ||||
| import {initMarkupTasklist} from './tasklist.ts'; | ||||
| import {registerGlobalSelectorFunc} from '../modules/observer.ts'; | ||||
| import {initMarkupRenderIframe} from './render-iframe.ts'; | ||||
|  | ||||
| // code that runs for all markup content | ||||
| export function initMarkupContent(): void { | ||||
| @@ -13,5 +14,6 @@ export function initMarkupContent(): void { | ||||
|     initMarkupCodeMermaid(el); | ||||
|     initMarkupCodeMath(el); | ||||
|     initMarkupRenderAsciicast(el); | ||||
|     initMarkupRenderIframe(el); | ||||
|   }); | ||||
| } | ||||
|   | ||||
							
								
								
									
										32
									
								
								web_src/js/markup/render-iframe.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								web_src/js/markup/render-iframe.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | ||||
| import {generateElemId, queryElemChildren} from '../utils/dom.ts'; | ||||
| import {isDarkTheme} from '../utils.ts'; | ||||
|  | ||||
| export async function loadRenderIframeContent(iframe: HTMLIFrameElement) { | ||||
|   const iframeSrcUrl = iframe.getAttribute('data-src'); | ||||
|   if (!iframe.id) iframe.id = generateElemId('gitea-iframe-'); | ||||
|  | ||||
|   window.addEventListener('message', (e) => { | ||||
|     if (!e.data?.giteaIframeCmd || e.data?.giteaIframeId !== iframe.id) return; | ||||
|     const cmd = e.data.giteaIframeCmd; | ||||
|     if (cmd === 'resize') { | ||||
|       iframe.style.height = `${e.data.iframeHeight}px`; | ||||
|     } else if (cmd === 'open-link') { | ||||
|       if (e.data.anchorTarget === '_blank') { | ||||
|         window.open(e.data.openLink, '_blank'); | ||||
|       } else { | ||||
|         window.location.href = e.data.openLink; | ||||
|       } | ||||
|     } else { | ||||
|       throw new Error(`Unknown gitea iframe cmd: ${cmd}`); | ||||
|     } | ||||
|   }); | ||||
|  | ||||
|   const u = new URL(iframeSrcUrl, window.location.origin); | ||||
|   u.searchParams.set('gitea-is-dark-theme', String(isDarkTheme())); | ||||
|   u.searchParams.set('gitea-iframe-id', iframe.id); | ||||
|   iframe.src = u.href; | ||||
| } | ||||
|  | ||||
| export function initMarkupRenderIframe(el: HTMLElement) { | ||||
|   queryElemChildren(el, 'iframe.external-render-iframe', loadRenderIframeContent); | ||||
| } | ||||
		Reference in New Issue
	
	Block a user