[Alt] alternative function names; add RequireScript options

This commit is contained in:
octospacc 2024-10-22 00:18:41 +02:00
parent 9a20834ac0
commit 1374d68bd7
2 changed files with 16 additions and 9 deletions

View File

@ -1,4 +1,4 @@
#!/bin/sh #!/bin/sh
for file in ./SpaccDotWeb*.js for file in ./SpaccDotWeb.js ./SpaccDotWeb.*.js
do node ./SpaccDotWeb.Build.js "BuildScriptFile('${file}')" do node ./SpaccDotWeb.Build.js "BuildScriptFile('${file}')"
done done

View File

@ -1,4 +1,4 @@
(function(){ (function(currentScript){
const SpaccDotWeb = {}; const SpaccDotWeb = {};
SpaccDotWeb.AppInit = (meta) => { SpaccDotWeb.AppInit = (meta) => {
@ -12,22 +12,27 @@
localStorage[value !== undefined ? 'setItem' : 'getItem']( localStorage[value !== undefined ? 'setItem' : 'getItem'](
`${prefix}/${key}`, JSON.stringify(value)) || null); `${prefix}/${key}`, JSON.stringify(value)) || null);
SpaccDotWeb.RequireScript = (src, type) => { SpaccDotWeb.requireScript = (src, params={}) => {
return (new Promise((resolve) => { return (new Promise((resolve) => {
const scriptElem = document.createElement('script'); const scriptElem = document.createElement('script');
//if (type) { //if (type) {
// scriptElem.type = type; // scriptElem.type = type;
//} //}
scriptElem.onload = (event) => { if (params.useCurrentPath) {
resolve(event); const currentPath = currentScript.src;
}; if (currentPath) {
src = `${currentPath.split('/').slice(0, -1).join('/')}/${src}`;
}
}
scriptElem.onload = resolve;
scriptElem.src = src; scriptElem.src = src;
document.body.appendChild(scriptElem); document.body.appendChild(scriptElem);
})); }));
}; };
// .RequireScripts = (...) => {} // .RequireScripts = (...) => {}
SpaccDotWeb.RequireScript = SpaccDotWeb.requireScript;
SpaccDotWeb.ShowModal = async (params) => { SpaccDotWeb.showModal = async (params) => {
// TODO: delete dialogs from DOM after use (garbage collect)? // TODO: delete dialogs from DOM after use (garbage collect)?
if (!window.HTMLDialogElement && !window.dialogPolyfill) { if (!window.HTMLDialogElement && !window.dialogPolyfill) {
// TODO include in dependencies, don't load from external server // TODO include in dependencies, don't load from external server
@ -83,8 +88,10 @@
modal.showModal(); modal.showModal();
return modal; return modal;
}; };
SpaccDotWeb.ShowModal = SpaccDotWeb.showModal;
SpaccDotWeb.Sleep = (ms) => (new Promise((resolve) => setTimeout(resolve, ms))); SpaccDotWeb.sleep = (ms) => (new Promise((resolve) => setTimeout(resolve, ms)));
SpaccDotWeb.Sleep = SpaccDotWeb.sleep;
window.SpaccDotWeb ||= SpaccDotWeb; window.SpaccDotWeb ||= SpaccDotWeb;
})(); })(document.currentScript);