mirror of
https://github.com/wailsapp/wails.git
synced 2025-05-02 08:10:56 +08:00
68 lines
1.5 KiB
JavaScript
68 lines
1.5 KiB
JavaScript
/*
|
|
_ __ _ __
|
|
| | / /___ _(_) /____
|
|
| | /| / / __ `/ / / ___/
|
|
| |/ |/ / /_/ / / (__ )
|
|
|__/|__/\__,_/_/_/____/
|
|
The electron alternative for Go
|
|
(c) Lea Anthony 2019-present
|
|
*/
|
|
/* jshint esversion: 6 */
|
|
|
|
import {Call} from './calls';
|
|
|
|
// This is where we bind go method wrappers
|
|
window.go = {};
|
|
|
|
export function SetBindings(bindingsMap) {
|
|
try {
|
|
bindingsMap = JSON.parse(bindingsMap);
|
|
} catch (e) {
|
|
console.error(e);
|
|
}
|
|
|
|
// Initialise the bindings map
|
|
window.go = window.go || {};
|
|
|
|
// Iterate package names
|
|
Object.keys(bindingsMap).forEach((packageName) => {
|
|
|
|
// Create inner map if it doesn't exist
|
|
window.go[packageName] = window.go[packageName] || {};
|
|
|
|
// Iterate struct names
|
|
Object.keys(bindingsMap[packageName]).forEach((structName) => {
|
|
|
|
// Create inner map if it doesn't exist
|
|
window.go[packageName][structName] = window.go[packageName][structName] || {};
|
|
|
|
Object.keys(bindingsMap[packageName][structName]).forEach((methodName) => {
|
|
|
|
window.go[packageName][structName][methodName] = function () {
|
|
|
|
// No timeout by default
|
|
let timeout = 0;
|
|
|
|
// Actual function
|
|
function dynamic() {
|
|
const args = [].slice.call(arguments);
|
|
return Call([packageName, structName, methodName].join('.'), args, timeout);
|
|
}
|
|
|
|
// Allow setting timeout to function
|
|
dynamic.setTimeout = function (newTimeout) {
|
|
timeout = newTimeout;
|
|
};
|
|
|
|
// Allow getting timeout to function
|
|
dynamic.getTimeout = function () {
|
|
return timeout;
|
|
};
|
|
|
|
return dynamic;
|
|
}();
|
|
});
|
|
});
|
|
});
|
|
}
|