hirol's picture
Upload 27 files
a637d5e
raw history blame
No virus
4.33 kB
(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');
})();