diff --git a/app/web/src/nova/ed/logic/ed-sync.tsx b/app/web/src/nova/ed/logic/ed-sync.tsx index 89eb6900..5c7b567c 100644 --- a/app/web/src/nova/ed/logic/ed-sync.tsx +++ b/app/web/src/nova/ed/logic/ed-sync.tsx @@ -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)) { diff --git a/app/web/src/nova/ed/panel/main/main.tsx b/app/web/src/nova/ed/panel/main/main.tsx index dd8be301..f32357f6 100644 --- a/app/web/src/nova/ed/panel/main/main.tsx +++ b/app/web/src/nova/ed/panel/main/main.tsx @@ -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 (
>; 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 = ; let args = {}; @@ -104,6 +137,7 @@ export const ViewMetaScript: FC<{ {jsx} ); + renderLimit[v.current.page_id][item.id].cache = output.jsx; }, };