fix
This commit is contained in:
parent
c5f8baddab
commit
6a133b8f8e
File diff suppressed because one or more lines are too long
|
|
@ -13,7 +13,7 @@ import { MobileQRButton } from "./panel/side/style/tools/mobile-qr";
|
||||||
import { EdFileBrowser } from "./panel/file/file-browser";
|
import { EdFileBrowser } from "./panel/file/file-browser";
|
||||||
|
|
||||||
export const EdMid: FC<{}> = () => {
|
export const EdMid: FC<{}> = () => {
|
||||||
const p = useGlobal(EDGlobal, "EDITORF");
|
const p = useGlobal(EDGlobal, "EDITOR");
|
||||||
return (
|
return (
|
||||||
<div className="flex flex-col">
|
<div className="flex flex-col">
|
||||||
<div
|
<div
|
||||||
|
|
@ -64,7 +64,7 @@ export const EdMid: FC<{}> = () => {
|
||||||
<div className=" text-slate-400 flex items-center pr-1 ">
|
<div className=" text-slate-400 flex items-center pr-1 ">
|
||||||
<ResponsiveToggle />
|
<ResponsiveToggle />
|
||||||
</div>
|
</div>
|
||||||
<a href={`/prod/${params.site_id}/${params.page_id}`} target="_blank">
|
<a href={`/prod/${params.site_id}${p.page.cur.url}`} target="_blank">
|
||||||
<TopBtn style="slim" className="font-mono text-[9px]">
|
<TopBtn style="slim" className="font-mono text-[9px]">
|
||||||
PREVIEW
|
PREVIEW
|
||||||
</TopBtn>
|
</TopBtn>
|
||||||
|
|
|
||||||
|
|
@ -219,7 +219,7 @@ export const Root = () => {
|
||||||
})
|
})
|
||||||
).json()) as Record<string, IItem>;
|
).json()) as Record<string, IItem>;
|
||||||
for (const [id, item] of Object.entries(res)) {
|
for (const [id, item] of Object.entries(res)) {
|
||||||
comp.pending.delete(id);
|
delete comp.pending[id];
|
||||||
comp.list[id] = item;
|
comp.list[id] = item;
|
||||||
|
|
||||||
await setkv(`comp-${id}`, item);
|
await setkv(`comp-${id}`, item);
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,8 @@ export const viParts = (
|
||||||
},
|
},
|
||||||
meta: IMeta,
|
meta: IMeta,
|
||||||
is_layout: boolean,
|
is_layout: boolean,
|
||||||
passprop: any
|
passprop: any,
|
||||||
|
depth: number
|
||||||
) => {
|
) => {
|
||||||
const item = meta.item;
|
const item = meta.item;
|
||||||
|
|
||||||
|
|
@ -69,7 +70,8 @@ export const viParts = (
|
||||||
key={id}
|
key={id}
|
||||||
meta={meta}
|
meta={meta}
|
||||||
is_layout={is_layout}
|
is_layout={is_layout}
|
||||||
passprop={passprop}
|
passprop={{ ...passprop }}
|
||||||
|
depth={depth + 1}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -5,9 +5,13 @@ import { ErrorBox } from "../utils/error-box";
|
||||||
import { ViGlobal } from "./global";
|
import { ViGlobal } from "./global";
|
||||||
import { viParts } from "./parts";
|
import { viParts } from "./parts";
|
||||||
import { ViScript } from "./script";
|
import { ViScript } from "./script";
|
||||||
import get from "lodash.get";
|
|
||||||
|
|
||||||
const MAX_RENDER_IN_SECOND = 70;
|
const MAX_RENDER_IN_SECOND = 70;
|
||||||
|
|
||||||
|
const JS_CONFIG = {
|
||||||
|
debug: !!localStorage.getItem("prasi-js-debug"),
|
||||||
|
};
|
||||||
|
|
||||||
export const render_stat = {
|
export const render_stat = {
|
||||||
enabled: false,
|
enabled: false,
|
||||||
meta: {} as Record<string, { last_render: number; count: number }>,
|
meta: {} as Record<string, { last_render: number; count: number }>,
|
||||||
|
|
@ -18,7 +22,8 @@ export const ViRender: FC<{
|
||||||
passprop?: any;
|
passprop?: any;
|
||||||
is_layout: boolean;
|
is_layout: boolean;
|
||||||
parent_key?: any;
|
parent_key?: any;
|
||||||
}> = ({ meta, passprop, is_layout, parent_key }) => {
|
depth: number;
|
||||||
|
}> = ({ meta, passprop, is_layout, parent_key, depth }) => {
|
||||||
if (render_stat.enabled) {
|
if (render_stat.enabled) {
|
||||||
const rstat_meta = render_stat.meta;
|
const rstat_meta = render_stat.meta;
|
||||||
|
|
||||||
|
|
@ -58,13 +63,20 @@ export const ViRender: FC<{
|
||||||
if (!meta) return null;
|
if (!meta) return null;
|
||||||
if (meta.item.hidden) return null;
|
if (meta.item.hidden) return null;
|
||||||
|
|
||||||
|
if (JS_CONFIG.debug) {
|
||||||
|
let spaces = "";
|
||||||
|
for (let i = 0; i < depth; i++) spaces += ".";
|
||||||
|
console.log(spaces + meta.item.id, meta.item.name);
|
||||||
|
}
|
||||||
|
|
||||||
if (meta.item.adv?.js || meta.item.component?.id) {
|
if (meta.item.adv?.js || meta.item.component?.id) {
|
||||||
return (
|
return (
|
||||||
<ErrorBox meta={meta}>
|
<ErrorBox meta={meta}>
|
||||||
<ViScript
|
<ViScript
|
||||||
meta={meta}
|
meta={meta}
|
||||||
|
depth={depth}
|
||||||
is_layout={is_layout}
|
is_layout={is_layout}
|
||||||
passprop={passprop}
|
passprop={{ ...passprop }}
|
||||||
parent_key={parent_key}
|
parent_key={parent_key}
|
||||||
></ViScript>
|
></ViScript>
|
||||||
</ErrorBox>
|
</ErrorBox>
|
||||||
|
|
@ -74,7 +86,8 @@ export const ViRender: FC<{
|
||||||
<ErrorBox meta={meta}>
|
<ErrorBox meta={meta}>
|
||||||
<ViChild
|
<ViChild
|
||||||
meta={meta}
|
meta={meta}
|
||||||
passprop={passprop}
|
passprop={{ ...passprop }}
|
||||||
|
depth={depth}
|
||||||
is_layout={is_layout}
|
is_layout={is_layout}
|
||||||
parent_key={parent_key}
|
parent_key={parent_key}
|
||||||
></ViChild>
|
></ViChild>
|
||||||
|
|
@ -87,7 +100,8 @@ export const ViChild: FC<{
|
||||||
is_layout: boolean;
|
is_layout: boolean;
|
||||||
passprop?: any;
|
passprop?: any;
|
||||||
parent_key?: any;
|
parent_key?: any;
|
||||||
}> = ({ meta, passprop, is_layout, parent_key }) => {
|
depth: number;
|
||||||
|
}> = ({ meta, passprop, is_layout, parent_key, depth }) => {
|
||||||
const vi = useGlobal(ViGlobal, "VI");
|
const vi = useGlobal(ViGlobal, "VI");
|
||||||
|
|
||||||
if (is_layout && meta.item.name === "children") {
|
if (is_layout && meta.item.name === "children") {
|
||||||
|
|
@ -101,13 +115,14 @@ export const ViChild: FC<{
|
||||||
<ViScript
|
<ViScript
|
||||||
meta={meta}
|
meta={meta}
|
||||||
is_layout={false}
|
is_layout={false}
|
||||||
passprop={passprop}
|
passprop={{ ...passprop }}
|
||||||
parent_key={parent_key}
|
parent_key={parent_key}
|
||||||
|
depth={depth + 1}
|
||||||
></ViScript>
|
></ViScript>
|
||||||
</ErrorBox>
|
</ErrorBox>
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
const parts = viParts(vi, meta, false, passprop);
|
const parts = viParts(vi, meta, false, passprop, depth);
|
||||||
if (vi.visit) vi.visit(meta, parts);
|
if (vi.visit) vi.visit(meta, parts);
|
||||||
childs.push(<div {...parts.props} />);
|
childs.push(<div {...parts.props} />);
|
||||||
}
|
}
|
||||||
|
|
@ -122,7 +137,7 @@ export const ViChild: FC<{
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
const parts = viParts(vi, meta, is_layout, passprop);
|
const parts = viParts(vi, meta, is_layout, passprop, depth);
|
||||||
if (vi.visit) vi.visit(meta, parts);
|
if (vi.visit) vi.visit(meta, parts);
|
||||||
|
|
||||||
return <div {...parts.props} />;
|
return <div {...parts.props} />;
|
||||||
|
|
|
||||||
|
|
@ -9,9 +9,10 @@ import { viEvalScript } from "./script/eval-script";
|
||||||
export const ViScript: FC<{
|
export const ViScript: FC<{
|
||||||
meta: IMeta;
|
meta: IMeta;
|
||||||
is_layout: boolean;
|
is_layout: boolean;
|
||||||
|
depth: number;
|
||||||
passprop?: any;
|
passprop?: any;
|
||||||
parent_key?: any;
|
parent_key?: any;
|
||||||
}> = ({ meta, passprop, is_layout, parent_key }) => {
|
}> = ({ meta, passprop, is_layout, parent_key, depth }) => {
|
||||||
const vi = useGlobal(ViGlobal, "VI");
|
const vi = useGlobal(ViGlobal, "VI");
|
||||||
const [_, _set] = useState({});
|
const [_, _set] = useState({});
|
||||||
meta.render = () => {
|
meta.render = () => {
|
||||||
|
|
@ -21,17 +22,26 @@ export const ViScript: FC<{
|
||||||
let _pass = passprop;
|
let _pass = passprop;
|
||||||
if (meta.item.component?.id) {
|
if (meta.item.component?.id) {
|
||||||
if (!_pass) _pass = {};
|
if (!_pass) _pass = {};
|
||||||
viEvalProps(vi, meta, is_layout, _pass, parent_key);
|
viEvalProps(vi, meta, is_layout, _pass, depth, parent_key);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (meta.item.adv?.html) {
|
if (meta.item.adv?.html) {
|
||||||
return <ViChild meta={meta} passprop={_pass} is_layout={is_layout} />;
|
return (
|
||||||
|
<ViChild
|
||||||
|
meta={meta}
|
||||||
|
passprop={_pass}
|
||||||
|
is_layout={is_layout}
|
||||||
|
depth={depth}
|
||||||
|
/>
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (meta.item.adv?.js) {
|
if (meta.item.adv?.js) {
|
||||||
viEvalScript(vi, meta, is_layout, _pass, parent_key);
|
viEvalScript(vi, meta, is_layout, _pass, depth, parent_key);
|
||||||
if (meta.script) return meta.script.result;
|
if (meta.script) return meta.script.result;
|
||||||
}
|
}
|
||||||
|
|
||||||
return <ViChild meta={meta} passprop={_pass} is_layout={is_layout} />;
|
return (
|
||||||
|
<ViChild meta={meta} passprop={_pass} is_layout={is_layout} depth={depth} />
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ export const viEvalProps = (
|
||||||
meta: IMeta,
|
meta: IMeta,
|
||||||
is_layout: boolean,
|
is_layout: boolean,
|
||||||
passprop: any,
|
passprop: any,
|
||||||
|
depth: number,
|
||||||
parent_key?: any
|
parent_key?: any
|
||||||
) => {
|
) => {
|
||||||
if (meta.item.component?.id) {
|
if (meta.item.component?.id) {
|
||||||
|
|
@ -109,6 +110,7 @@ export const viEvalProps = (
|
||||||
meta={m}
|
meta={m}
|
||||||
passprop={arg.passprop}
|
passprop={arg.passprop}
|
||||||
is_layout={is_layout}
|
is_layout={is_layout}
|
||||||
|
depth={depth + 1}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,6 @@ import { updatePropScope } from "./eval-prop";
|
||||||
import { extractNavigate } from "./extract-nav";
|
import { extractNavigate } from "./extract-nav";
|
||||||
import { createViLocal } from "./local";
|
import { createViLocal } from "./local";
|
||||||
import { createViPassProp } from "./passprop";
|
import { createViPassProp } from "./passprop";
|
||||||
import { isValid } from "date-fns";
|
|
||||||
export const viEvalScript = (
|
export const viEvalScript = (
|
||||||
vi: {
|
vi: {
|
||||||
page: VG["page"];
|
page: VG["page"];
|
||||||
|
|
@ -32,9 +31,10 @@ export const viEvalScript = (
|
||||||
meta: IMeta,
|
meta: IMeta,
|
||||||
is_layout: boolean,
|
is_layout: boolean,
|
||||||
passprop: any,
|
passprop: any,
|
||||||
|
depth: number,
|
||||||
parent_key?: any
|
parent_key?: any
|
||||||
) => {
|
) => {
|
||||||
const parts = viParts(vi, meta, is_layout, passprop);
|
const parts = viParts(vi, meta, is_layout, passprop, depth);
|
||||||
|
|
||||||
if (vi.visit) vi.visit(meta, parts);
|
if (vi.visit) vi.visit(meta, parts);
|
||||||
if (!meta.script) {
|
if (!meta.script) {
|
||||||
|
|
@ -146,7 +146,7 @@ export const viEvalScript = (
|
||||||
_jsx: true;
|
_jsx: true;
|
||||||
fn: (arg: { passprop: any; meta: IMeta }) => ReactNode;
|
fn: (arg: { passprop: any; meta: IMeta }) => ReactNode;
|
||||||
};
|
};
|
||||||
arg[k] = <JsxProp fn={jprop.fn} passprop={passprop} meta={meta} />;
|
arg[k] = <JsxProp fn={jprop.fn} passprop={{ ...passprop }} meta={meta} />;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -157,6 +157,8 @@ export const viEvalScript = (
|
||||||
|
|
||||||
const js = meta.item.adv?.jsBuilt || "";
|
const js = meta.item.adv?.jsBuilt || "";
|
||||||
const src = replaceWithObject(js, replacement) || "";
|
const src = replaceWithObject(js, replacement) || "";
|
||||||
|
|
||||||
|
try {
|
||||||
const fn = new Function(
|
const fn = new Function(
|
||||||
...Object.keys(arg),
|
...Object.keys(arg),
|
||||||
`// ${meta.item.name}: ${meta.item.id}
|
`// ${meta.item.name}: ${meta.item.id}
|
||||||
|
|
@ -164,6 +166,10 @@ ${src}
|
||||||
`
|
`
|
||||||
);
|
);
|
||||||
fn(...Object.values(arg));
|
fn(...Object.values(arg));
|
||||||
|
} catch (e) {
|
||||||
|
console.warn(`Error at item ${meta.item.name}:`, meta.item.adv?.js);
|
||||||
|
console.error(e);
|
||||||
|
}
|
||||||
|
|
||||||
updatePropScope(vi, meta, passprop, parent_key);
|
updatePropScope(vi, meta, passprop, parent_key);
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,7 @@ export const createViLocal = (
|
||||||
hook?: (local: T) => void;
|
hook?: (local: T) => void;
|
||||||
effect?: (local: T) => void | Promise<void>;
|
effect?: (local: T) => void | Promise<void>;
|
||||||
parent_key?: any;
|
parent_key?: any;
|
||||||
|
deps?: any[];
|
||||||
}) => {
|
}) => {
|
||||||
const isEditor =
|
const isEditor =
|
||||||
["localhost", "prasi.avolut.com"].includes(location.hostname) &&
|
["localhost", "prasi.avolut.com"].includes(location.hostname) &&
|
||||||
|
|
@ -79,7 +80,7 @@ export const createViLocal = (
|
||||||
}
|
}
|
||||||
|
|
||||||
return () => {};
|
return () => {};
|
||||||
}, [location.pathname]);
|
}, [...(arg.deps || []), location.pathname]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (isEditor) {
|
if (isEditor) {
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ export const ViRoot: FC<{}> = ({}) => {
|
||||||
if (Element) {
|
if (Element) {
|
||||||
return (
|
return (
|
||||||
<ErrorBox key={meta.item.id}>
|
<ErrorBox key={meta.item.id}>
|
||||||
<ViRender meta={meta} is_layout={is_layout} />
|
<ViRender meta={meta} is_layout={is_layout} depth={0} />
|
||||||
</ErrorBox>
|
</ErrorBox>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,7 @@ w.debug = new Proxy(
|
||||||
get(target, p, receiver) {
|
get(target, p, receiver) {
|
||||||
if (p === "off") {
|
if (p === "off") {
|
||||||
WS_CONFIG.debug = false;
|
WS_CONFIG.debug = false;
|
||||||
|
localStorage.removeItem("prasi-js-debug");
|
||||||
localStorage.removeItem("prasi-ws-debug");
|
localStorage.removeItem("prasi-ws-debug");
|
||||||
console.clear();
|
console.clear();
|
||||||
return ["WS DEBUG: Deactivated"];
|
return ["WS DEBUG: Deactivated"];
|
||||||
|
|
@ -37,6 +38,11 @@ w.debug = new Proxy(
|
||||||
console.clear();
|
console.clear();
|
||||||
return ["WS DEBUG: Activated"];
|
return ["WS DEBUG: Activated"];
|
||||||
}
|
}
|
||||||
|
if (p === "js") {
|
||||||
|
localStorage.setItem("prasi-js-debug", "1");
|
||||||
|
console.clear();
|
||||||
|
return ["JS DEBUG: Activated"];
|
||||||
|
}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
) as any;
|
) as any;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue