this repo has no description

contextMenu: fix parser patches

Changed files
+12 -12
packages
core-extensions
src
contextMenu
+2 -3
packages/core-extensions/src/contextMenu/index.tsx
···
find: "Menu API only allows Items and groups of Items as children.",
replace: [
{
-
match: /(?<=let{navId[^}]+?}=(.),(.)=function .\(.\){.+(?=,.=function))/,
-
replacement: (_, props, items) =>
-
`,__contextMenu=!${props}.__contextMenu_evilMenu&&require("contextMenu_contextMenu")._patchMenu(${props}, ${items})`
}
]
},
···
find: "Menu API only allows Items and groups of Items as children.",
replace: [
{
+
match: /(?<=let{navId[^}]+?}=(.),.=).+?(?=,)/,
+
replacement: (items, props) => `require("contextMenu_contextMenu")._patchMenu(${props},${items})`
}
]
},
+2
packages/core-extensions/src/contextMenu/webpackModules/contextMenu.ts
···
if (idx === -1) continue;
items.splice(idx + 1 - +patch.before, 0, ...parser(patch.item(menuProps)));
}
}
let menuProps: any;
···
if (idx === -1) continue;
items.splice(idx + 1 - +patch.before, 0, ...parser(patch.item(menuProps)));
}
+
+
return items;
}
let menuProps: any;
+8 -9
packages/core-extensions/src/contextMenu/webpackModules/evilMenu.ts
···
spacepack.require.m[
spacepack.findByCode("Menu API only allows Items and groups of Items as children.")[0].id
].toString();
-
code = code.replace(/,.=(?=function .\(.\){.+?,.=function)/, ";return ");
-
code = code.replace(/,(?=__contextMenu)/, ";let ");
const mod = new Function("module", "exports", "require", `(${code}).apply(this, arguments)`);
const exp: any = {};
mod({}, exp, require);
-
const Menu = spacepack.findFunctionByStrings(exp, "Menu API only allows Items and groups of Items as children.")!;
-
module.exports = (el: any) => {
-
return Menu({
-
children: el,
-
__contextMenu_evilMenu: true
-
});
-
};
···
spacepack.require.m[
spacepack.findByCode("Menu API only allows Items and groups of Items as children.")[0].id
].toString();
+
+
const parserSym = code.match(/(?<=_patchMenu\(.,).+?(?=\()/)![0];
+
+
code = code.replace(/(?<=function\(\){return ).(?=})/, parserSym);
const mod = new Function("module", "exports", "require", `(${code}).apply(this, arguments)`);
+
const exp: any = {};
mod({}, exp, require);
+
+
const parser = spacepack.findFunctionByStrings(exp, "Menu API only allows Items and groups of Items as children.")!;
+
module.exports = parser;