-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathfix.js
More file actions
39 lines (33 loc) · 2.93 KB
/
fix.js
File metadata and controls
39 lines (33 loc) · 2.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
const fs = require('fs');
const path = 'src/main/webapp/js/app.min.js';
let content = fs.readFileSync(path, 'utf8');
// 1) Inject early return into EditorUi.prototype.showDataDialog
// This defers to window.customShowDataDialog (our Electrisim override)
if (!/customShowDataDialog/.test(content)) {
const re = /(EditorUi\.prototype\.showDataDialog\s*=\s*function\s*\([^)]*\)\s*\{)/;
if (re.test(content)) {
content = content.replace(
re,
'$1 if(window.customShowDataDialog){return window.customShowDataDialog.call(this, arguments[0]);}'
);
console.log('Injected customShowDataDialog hook.');
} else {
console.warn('Could not locate EditorUi.prototype.showDataDialog function header.');
}
}
// 2) Neutralize all hardcoded EditDataDialog instantiations
content = content.replace(
'null != a && (a = new EditDataDialog(this, a), this.showDialog(a.container, 2100, 150, !0, !1, null, !1))',
'null != a && (null, null)'
);
// 3) Replace other hardcoded EditDataDialog instantiations with our custom handler
content = content.replace(
/hejka = new EditDataDialog\(EditorUi, cell\)/g,
'hejka = null; if(window.customShowDataDialog) window.customShowDataDialog.call(EditorUi, cell)'
);
content = content.replace(
/var dialogInstance = new EditDataDialog\(this, a\);/g,
'var dialogInstance = null; if(window.customShowDataDialog) window.customShowDataDialog.call(this, a); return;'
);
fs.writeFileSync(path, content);
console.log('app.min.js patched.');