wip fix scope

This commit is contained in:
Rizky 2023-12-01 13:28:25 +07:00
parent 59b7c28ca4
commit 18ee61fdd6
4 changed files with 34 additions and 3 deletions

View File

@ -82,7 +82,6 @@ export const edInitSync = (p: PG) => {
if (arg.src) {
const w = window as any;
console.clear();
const module = evalCJS(decoder.decode(decompress(arg.src)));
if (typeof module === "object") {
for (const [k, v] of Object.entries(module)) {

View File

@ -8,7 +8,6 @@ import { code } from "../popup/code/code";
export const EdMain = () => {
const p = useGlobal(EDGlobal, "EDITOR");
const root = p.page.tree.find((e) => e.parent === "root");
return (
<div
className={cx(

View File

@ -200,7 +200,6 @@ const spreadScope = (
}
};
console.clear();
mergeScopes(parents, each, {});
};

View File

@ -13,6 +13,8 @@ import { createPassProp } from "./script/create-pass-prop";
import { ErrorBox } from "./script/error-box";
import { mergeScopeUpwards } from "./script/merge-upward";
const renderLimit = {} as Record<string, Record<string, { ts: number, count: number; cache: ReactNode }>>;
export const ViewMetaScript: FC<{
v: VG;
item: IItem | IText | ISection;
@ -26,6 +28,37 @@ export const ViewMetaScript: FC<{
hover: v.view.hover ? v.view.hover.get(meta) : undefined,
active: v.view.active ? v.view.active.get(meta) : undefined,
});
if (!renderLimit[v.current.page_id]) {
renderLimit[v.current.page_id] = {}
}
if (!renderLimit[v.current.page_id][item.id]) {
renderLimit[v.current.page_id][item.id] = {
ts: Date.now(),
count: 1,
cache: null
}
}
if (renderLimit[v.current.page_id][item.id].ts - Date.now() < 100) {
renderLimit[v.current.page_id][item.id].count++
} else {
renderLimit[v.current.page_id][item.id].ts = Date.now();
renderLimit[v.current.page_id][item.id].count = 1;
}
if (renderLimit[v.current.page_id][item.id].count > 100) {
let js = '';
if (typeof item.adv?.js === 'string') {
js = item.adv.js;
}
console.warn(`Maximum render limit (100 render in 100ms) reached in item [${item.name}]:\n${js.length > 30 ? js.substring(0, 30) + '...' : js}`)
return renderLimit[v.current.page_id][item.id].cache;
}
const children = <ViewMetaChildren key={item.id} meta={meta} />;
let args = {};
@ -104,6 +137,7 @@ export const ViewMetaScript: FC<{
<Suspense>{jsx}</Suspense>
</ErrorBox>
);
renderLimit[v.current.page_id][item.id].cache = output.jsx;
},
};