Files
hub/frontend/src/ui.js
T

66 lines
1.3 KiB
JavaScript

// Global utility functions related with UI functionality
import router from './router'
export function goto (path) {
router.push(path);
}
export async function confirm (prompt) {
return window.confirm(prompt);
}
export async function input (prompt) {
return window.prompt(prompt);
}
export async function inputFile (options) {
console.log("app.inputFile", options);
throw new Error("Cannot open files");
}
export function alert (message) {
emit('alert', {message});
}
export function editValue (mode, value, callback) {
emit('edit-value', {mode, value, callback});
}
export function contextMenu (entries) {
return new Promise(resolve => {
emit('context-menu', {entries, callback: resolve});
});
}
// === Events === //
const listeners = {};
export function emit (name, ...args) {
const fs = listeners[name];
if (fs == null) return;
for (let f of fs) {
f(...args);
}
}
export function listen (name, fn) {
let fs = listeners[name];
if (fs == null) {
listeners[name] = fs = [];
}
fs.push(fn);
}
export function invoke (name, ...args) {
throw new Error("invoke");
}
window.addEventListener("unhandledrejection", function(promiseRejectionEvent) {
console.error(promiseRejectionEvent.reason);
alert("Unhandled Error: " + String(promiseRejectionEvent.reason));
});