wip fix
This commit is contained in:
parent
5d1e8b2ee9
commit
4e8f21eb1e
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -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) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue