This commit is contained in:
Rizky 2023-12-07 20:34:46 +07:00
parent 5d1e8b2ee9
commit 4e8f21eb1e
7 changed files with 48 additions and 4 deletions

View File

@ -128,6 +128,7 @@ export type EdMeta = {
/** script related meta **/ /** script related meta **/
jsx_scope_id?: string; jsx_scope_id?: string;
propval?: Record<string, any>; propval?: Record<string, any>;
propvis?: Record<string, boolean>;
indexed_scope: Record<string, any>; indexed_scope: Record<string, any>;
memoize?: Record< memoize?: Record<
string, string,

View File

@ -131,7 +131,10 @@ export const ScriptMonaco = () => {
} }
} }
if (p.ui.popup.script.type === "prop-master") { if (
p.ui.popup.script.type === "prop-master" ||
p.ui.popup.script.type === "prop-instance"
) {
const mprops = mitem?.get("component")?.get("props"); const mprops = mitem?.get("component")?.get("props");
if (mprops) { if (mprops) {
const mprop = mprops.get(p.ui.popup.script.prop_name); const mprop = mprops.get(p.ui.popup.script.prop_name);

View File

@ -16,7 +16,10 @@ export const EdPopScript = () => {
if (!open) { if (!open) {
p.ui.popup.script.open = false; p.ui.popup.script.open = false;
if (p.ui.popup.script.prop_name) { if (
p.ui.popup.script.prop_name &&
p.ui.popup.script.type === "prop-master"
) {
propPopover.name = p.ui.popup.script.prop_name; propPopover.name = p.ui.popup.script.prop_name;
} }

View File

@ -13,6 +13,7 @@ export const EdSidePropInstance: FC<{ meta: EdMeta }> = ({ meta }) => {
const local = useLocal({ const local = useLocal({
rightClickEvent: null as any, rightClickEvent: null as any,
reset: { mprop: null as any, name: "" }, reset: { mprop: null as any, name: "" },
showJSX: false,
}); });
const item = meta?.item as IItem; const item = meta?.item as IItem;
@ -31,6 +32,15 @@ export const EdSidePropInstance: FC<{ meta: EdMeta }> = ({ meta }) => {
mcprops.forEach((m, key) => { mcprops.forEach((m, key) => {
let mprop = mprops.get(key); let mprop = mprops.get(key);
const type = m.get("meta")?.get("type") || "text";
if (meta.propvis) {
if (meta.propvis[key] === false) return;
}
if (!local.showJSX && type === "content-element") {
return;
}
if (!mprop) { if (!mprop) {
const json = m.toJSON(); const json = m.toJSON();
const map = new Y.Map() as any; const map = new Y.Map() as any;

View File

@ -53,7 +53,7 @@ export const EdPropInstanceText: FC<{
)} )}
<AutoHeightTextarea <AutoHeightTextarea
className="flex-1 outline-none border-l p-1 ml-1 overflow-hidden focus:bg-blue-50" className="flex-1 outline-none border-l p-1 ml-1 overflow-hidden focus:bg-blue-50"
value={local.value} value={local.value || ""}
spellCheck={false} spellCheck={false}
onChange={(e) => { onChange={(e) => {
local.value = e.currentTarget.value; local.value = e.currentTarget.value;

View File

@ -105,8 +105,31 @@ export const compPropVal = (
} }
result[name] = value; result[name] = value;
meta.propval = result;
} }
meta.propval = result;
const propvis: any = {};
for (const [name, _prop] of cprops) {
const prop = props[name] || _prop;
if (prop.visible) {
const finalArgs = { ...args, ...result };
try {
const fn = new Function(
...Object.keys(finalArgs),
`return ${_prop.visible}`
);
propvis[name] = fn(...Object.values(finalArgs));
} catch (e) {
const cname = meta.item.name;
console.warn(e);
console.warn(
`ERROR in Component [${cname}], in prop [${name}]:\n ` +
prop.visible
);
}
}
}
meta.propvis = propvis;
} }
} }
}; };

View File

@ -47,6 +47,8 @@ export const jsMount = async (editor: MonacoEditor, monaco: Monaco, p?: PG) => {
if (type === "prop") { if (type === "prop") {
p.ui.popup.script.prop_name = path[1]; p.ui.popup.script.prop_name = path[1];
p.ui.popup.script.type = "prop-instance";
p.ui.popup.script.prop_kind = "value";
if ( if (
!prev_comp_id && !prev_comp_id &&
@ -62,6 +64,8 @@ export const jsMount = async (editor: MonacoEditor, monaco: Monaco, p?: PG) => {
} }
return false; return false;
} else {
p.ui.popup.script.type = "item";
} }
if (comp_id) { if (comp_id) {