feat: integrate XSLT Tools with toolbox portal
This commit is contained in:
@@ -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.'));
|
||||
|
||||
Reference in New Issue
Block a user