36 lines
964 B
JavaScript
36 lines
964 B
JavaScript
/**
|
|
* TT-Core Script Loader
|
|
* Dynamically load external scripts
|
|
*/
|
|
|
|
/**
|
|
* Load external script dynamically
|
|
* @param {string} src - Script URL
|
|
* @returns {Promise<void>} - Resolves when script is loaded
|
|
*/
|
|
export function loadScript(src) {
|
|
return new Promise((resolve, reject) => {
|
|
// Check if already loaded
|
|
if (document.querySelector(`script[src="${src}"]`)) {
|
|
return resolve();
|
|
}
|
|
|
|
const script = document.createElement('script');
|
|
script.src = src;
|
|
script.onload = resolve;
|
|
script.onerror = () => reject(new Error(`Script load error for ${src}`));
|
|
document.head.appendChild(script);
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Load multiple scripts sequentially
|
|
* @param {string[]} scripts - Array of script URLs
|
|
* @returns {Promise<void>} - Resolves when all scripts are loaded
|
|
*/
|
|
export async function loadScripts(scripts) {
|
|
for (const src of scripts) {
|
|
await loadScript(src);
|
|
}
|
|
}
|