Spaces:
Runtime error
Runtime error
(function () { | |
if (!globalThis.posex) globalThis.posex = {}; | |
const posex = globalThis.posex; | |
function load(cont) { | |
function load_() { | |
if (posex.script_loading || posex.script_loaded) return; | |
posex.script_loading = true; | |
const scripts = cont.textContent.trim().split('\n'); | |
const base_path = `/file=${scripts.shift()}/js`; | |
cont.textContent = ''; | |
const df = document.createDocumentFragment(); | |
for (let src of scripts) { | |
console.log(`[Posex] loading ${src}`); | |
const script = document.createElement('script'); | |
script.async = true; | |
script.type = 'module'; | |
script.src = `file=${src}`; | |
df.appendChild(script); | |
} | |
globalThis.posex.import = async () => { | |
const THREE = await import(`${base_path}/three.module.js`); | |
const { TrackballControls } = await import(`${base_path}/TrackballControls.js`); | |
const { DragControls } = await import(`${base_path}/DragControls.js`); | |
const { MeshLine, MeshLineMaterial } = await import(`${base_path}/THREE.MeshLine.Module.min.js`); | |
return { THREE, TrackballControls, DragControls, MeshLine, MeshLineMaterial }; | |
}; | |
if (!globalThis.posex.imports) globalThis.posex.imports = {}; | |
if (!globalThis.posex.imports.three) globalThis.posex.imports.three = async () => await import(`${base_path}/three.module.js`); | |
if (!globalThis.posex.imports.posex) globalThis.posex.imports.posex = async () => await import(`${base_path}/posex.js`); | |
cont.appendChild(df); | |
} | |
return posex.script_loaded ? Promise.resolve() : new Promise(resolve => { | |
document.addEventListener('posexscriptloaded', () => resolve(), false); | |
load_(); | |
}); | |
} | |
function lazy(fn, timeout) { | |
if (timeout === undefined) timeout = 500; | |
return new Promise(function callback(resolve) { | |
const result = fn(); | |
if (result) { | |
resolve(result); | |
} else { | |
setTimeout(() => callback(resolve), timeout); | |
} | |
}); | |
} | |
function hook_acc(acc, fn) { | |
const observer = new MutationObserver(list => { | |
for (let mut of list) { | |
if (mut.type === 'childList') { | |
if (mut.addedNodes.length != 0) { | |
// closed -> opened | |
fn(); | |
} else { | |
// opened -> closed | |
// do nothing | |
} | |
} | |
} | |
}); | |
observer.observe(acc, { childList: true, attributes: false, subtree: false }); | |
} | |
function launch1(type) { | |
return lazy(() => gradioApp()?.querySelector(`#posex-${type}-tab`)). | |
then(async acc => { | |
const cont = Array.from(acc.querySelectorAll(`#posex-${type}-js`)).at(-1); // ! | |
const enabled = acc.querySelector(`#posex-${type}-enabled input[type=checkbox]`); | |
await load(cont); | |
await posex[`init_${type}`](); | |
console.log(`[Posex] ${type} initialized`); | |
}); | |
} | |
// function launch(type) { | |
// return lazy(() => gradioApp()?.querySelector(`#posex-${type}-accordion`)). | |
// then(acc => hook_acc(acc, async () => { | |
// const cont = Array.from(acc.querySelectorAll(`#posex-${type}-js`)).at(-1); // ! | |
// const enabled = acc.querySelector(`#posex-${type}-enabled input[type=checkbox]`); | |
// await load(cont); | |
// if (enabled.checked) { | |
// await posex[`init_${type}`](); | |
// console.log(`[Posex] ${type} initialized`); | |
// } else { | |
// enabled.addEventListener('change', async () => { | |
// await posex[`init_${type}`](); | |
// console.log(`[Posex] ${type} initialized`); | |
// }, { once: true }); | |
// } | |
// })); | |
// } | |
launch1('t2i'); | |
// launch('i2i'); | |
})(); | |