feat: integrate XSLT Tools with toolbox portal

This commit is contained in:
2026-07-20 18:16:18 +02:00
parent 3193cc395c
commit 8f8a59e76c
36 changed files with 1737 additions and 243 deletions

View File

@@ -9,10 +9,16 @@ type SaxonXdmMap = {
inSituPut: (key: unknown, value: unknown[]) => void;
};
const SAXON_SCRIPT_URL = '/vendor/saxon/SaxonJS2.js';
let saxonLoadPromise: Promise<void> | null = null;
export function resolveSaxonScriptUrl(
baseUrl = import.meta.env.BASE_URL,
pageUrl = window.location.href
): string {
const appBase = new URL(baseUrl, pageUrl);
return new URL('vendor/saxon/SaxonJS2.js', appBase).href;
}
type SaxonPrivateRuntime = {
getPlatform?: () => {
resource?: (name: string) => unknown;
@@ -60,8 +66,9 @@ async function ensureSaxonLoaded(): Promise<void> {
if (window.SaxonJS) return;
saxonLoadPromise ??= new Promise<void>((resolve, reject) => {
const saxonScriptUrl = resolveSaxonScriptUrl();
const existingScript = document.querySelector<HTMLScriptElement>(
`script[src="${SAXON_SCRIPT_URL}"]`
`script[src="${saxonScriptUrl}"]`
);
if (existingScript) {
@@ -75,7 +82,7 @@ async function ensureSaxonLoaded(): Promise<void> {
}
const script = document.createElement('script');
script.src = SAXON_SCRIPT_URL;
script.src = saxonScriptUrl;
script.async = true;
script.onload = () => resolve();
script.onerror = () => reject(new Error('Failed to load SaxonJS2.js.'));