Compare commits

..

No commits in common. "bf9908ded12e2e68cf02feb7a051664f2e2a46b2" and "18e3b13fdc0566768cdd675c6755f133894a8935" have entirely different histories.

65
main.js
View file

@ -27,8 +27,6 @@ const pools = {
}; };
const stears = [];
/** Stear class */ /** Stear class */
export class Stear{ export class Stear{
@ -44,13 +42,6 @@ export class Stear {
constructor(elem){ constructor(elem){
this.elem = elem; this.elem = elem;
elem.style.position="relative"; elem.style.position="relative";
stears.push(this);
}
destroy() {
let i = stears.indexOf(this);
if (i == -1) return;
stears.splice(i, 1);
delete this;
} }
/** /**
@ -154,7 +145,8 @@ export class Stear {
*/ */
static addAnimation(steps, name = "stearAnimation_" + counter++){ static addAnimation(steps, name = "stearAnimation_" + counter++){
Stear.addGlobalStyleText(`@keyframes ${name} { Stear.addGlobalStyleText(`@keyframes ${name} {
${Object.entries(steps).map(([k, d]) => ${
Object.entries(steps).map(([k,d])=>
` ${k} { ` ${k} {
${Object.entries(d).map(d => " " + toCssAttr(d[0]) + ": " + d[1] + ";").join("\n")} ${Object.entries(d).map(d => " " + toCssAttr(d[0]) + ": " + d[1] + ";").join("\n")}
}`).join("\n") }`).join("\n")
@ -212,7 +204,7 @@ ${Object.entries(json).map(d => " " + toCssAttr(d[0]) + ": " + d[1] + ";").jo
Object.entries(pools).forEach(([k, d]) => { Object.entries(pools).forEach(([k, d]) => {
d.lang = lang; d.lang = lang;
}); });
stears.forEach(s => s.rerenderGlobal()); this.globalRenderRequest();
} }
/** /**
@ -502,8 +494,6 @@ export class class_ {
#find; #find;
#doBuild; #doBuild;
#dynamicState = 0;
/** /**
* Generate a new Stear render Node. * Generate a new Stear render Node.
* *
@ -544,7 +534,6 @@ export class class_ {
set childs(childs){ set childs(childs){
if (!this.#doBuild) return; if (!this.#doBuild) return;
this.#childs = Array.isArray(childs) ? childs : [childs]; this.#childs = Array.isArray(childs) ? childs : [childs];
this.#dynamicState = 0;
} }
/** /**
@ -566,20 +555,6 @@ export class class_ {
} }
} }
async #syncBuild(args) {
for (let i = 0; i < this.#childs.length; i++) {
let elem = this.#childs[i];
if (Array.isArray(elem)) {
for (let j = 0; j < elem.length; j++) {
if (elem[j] instanceof class_) await elem[j].build(args);
}
} else {
if (elem instanceof class_) await elem.build(args);
}
}
}
/** /**
* Build Stear Structure * Build Stear Structure
* *
@ -587,15 +562,11 @@ export class class_ {
*/ */
async build (args) { async build (args) {
if(!this.#doBuild)return; if(!this.#doBuild)return;
if (this.#dynamicState < 0) return void await this.#syncBuild(args);
this.#build = []; this.#build = [];
for (let i = 0; i < this.#childs.length; i++) { for (let i = 0; i < this.#childs.length; i++) {
let elem = this.#childs[i]; let elem = this.#childs[i];
if (typeof elem == "function") { if (typeof elem == "function") elem = (await elem(...args))??[];
elem = (await elem(...args)) ?? [];
this.#dynamicState = 2;
}
if(Array.isArray(elem)){ if(Array.isArray(elem)){
for (let j = 0; j < elem.length; j++) { for (let j = 0; j < elem.length; j++) {
@ -607,17 +578,6 @@ export class class_ {
this.#build.push(elem); this.#build.push(elem);
} }
} }
if (this.#dynamicState <= 0) this.#dynamicState = -1;
}
#syncRender() {
let out = [];
for (let i = 0; i < this.#build.length; i++) {
const elem = this.#build[i];
if (typeof elem != "string" && !(elem instanceof LanguagePoolString)) {
out[i] = elem.render;
}
}
} }
/** /**
@ -627,21 +587,15 @@ export class class_ {
*/ */
get render (){ get render (){
if (!this.#doBuild) return this.#elem; if (!this.#doBuild) return this.#elem;
if (this.#dynamicState < -1) { this.#elem.innerHTML = "";
this.#syncRender();
return this.#elem;
}
let out = [];
for (let i = 0; i < this.#build.length; i++) { for (let i = 0; i < this.#build.length; i++) {
const elem = this.#build[i]; const elem = this.#build[i];
if (typeof elem == "string" || elem instanceof LanguagePoolString) { if (typeof elem == "string" || elem instanceof LanguagePoolString) {
out[i] = document.createTextNode(String(elem)); this.#elem.appendChild(document.createTextNode(String(elem)));
} else { } else {
out[i] = elem.render; this.#elem.appendChild(elem.render);
} }
} }
this.#elem.replaceChildren(...out);
if (this.#dynamicState < 0) this.#dynamicState = -2;
return this.#elem; return this.#elem;
} }
@ -652,11 +606,6 @@ export class class_ {
return this.#elem; return this.#elem;
} }
async rerender(args = []) {
await this.build(args);
this.render;
}
/** /**
* Returns find Object * Returns find Object
* *