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;
},
};