This commit is contained in:
Rizky 2023-12-21 17:04:54 +07:00
parent 44759a8fb1
commit 7c8d772d3f
3 changed files with 71 additions and 33 deletions

View File

@ -106,12 +106,20 @@ export const SyncActions = {
value: Uint8Array; value: Uint8Array;
} }
| { | {
type: "prop"; type: "prop-master";
comp_id: string; comp_id: string;
prop_name: string; prop_name: string;
prop_kind: PropFieldKind; prop_kind: PropFieldKind;
value: Uint8Array; value: Uint8Array;
} }
| {
type: "prop-instance";
item_id: string;
page_id?: string;
comp_id?: string;
prop_name: string;
value: Uint8Array;
}
) => ({}) as boolean | ParsedScope, ) => ({}) as boolean | ParsedScope,
parse: async (code: string | Record<string, string>) => parse: async (code: string | Record<string, string>) =>
({}) as Record<string, ReturnType<typeof parseJs>>, ({}) as Record<string, ReturnType<typeof parseJs>>,

View File

@ -17,8 +17,8 @@ export const code_edit: SAction["code"]["edit"] = async function (
) { ) {
const src = decoder.decode(await gunzipAsync(arg.value)); const src = decoder.decode(await gunzipAsync(arg.value));
if (arg.type === "adv") { if (arg.type === "adv" || arg.type === "prop-instance") {
const { item_id, mode, comp_id, page_id } = arg; const { item_id, comp_id, page_id } = arg;
let root = undefined as undefined | MRoot | MItem; let root = undefined as undefined | MRoot | MItem;
let doc = undefined as undefined | Doc; let doc = undefined as undefined | Doc;
@ -38,8 +38,9 @@ export const code_edit: SAction["code"]["edit"] = async function (
if (root) { if (root) {
const mitem = findId(root, item_id); const mitem = findId(root, item_id);
if (mitem) { if (mitem) {
if (arg.type === "adv") {
const mode = arg.mode;
let adv = mitem.get("adv"); let adv = mitem.get("adv");
if (!adv) { if (!adv) {
mitem.set("adv", new Y.Map() as any); mitem.set("adv", new Y.Map() as any);
@ -72,9 +73,29 @@ export const code_edit: SAction["code"]["edit"] = async function (
return parseJs(adv.get("js")) || false; return parseJs(adv.get("js")) || false;
} }
} }
}
}
} else { } else {
const mprop = mitem
.get("component")
?.get("props")
?.get(arg.prop_name);
if (mprop) {
try {
const res = await transform(`return ${src}`, {
jsx: "transform",
format: "cjs",
loader: "tsx",
});
doc?.transact(() => {
mprop.set("value", src);
mprop.set("valueBuilt", res.code.substring(6));
});
} catch (e) {}
}
}
}
}
} else if (arg.type === "prop-master") {
const { comp_id, prop_kind, prop_name } = arg; const { comp_id, prop_kind, prop_name } = arg;
if (comp_id) { if (comp_id) {
const ref = docs.comp[comp_id]; const ref = docs.comp[comp_id];

View File

@ -209,6 +209,15 @@ export const EdScriptMonaco: FC<{}> = () => {
value: compress(encode.encode(val || "")), value: compress(encode.encode(val || "")),
...arg, ...arg,
}); });
} else if (p.ui.popup.script.type === "prop-instance") {
scope = await p.sync.code.edit({
type: "adv",
mode: type,
prop_name: p.ui.popup.script.prop_name,
item_id: active.item_id,
value: compress(encode.encode(val || "")),
...arg,
});
} else { } else {
scope = await p.sync.code.edit({ scope = await p.sync.code.edit({
type: "adv", type: "adv",