Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ulixee
GitHub Repository: ulixee/secret-agent
Path: blob/main/client/lib/Dialog.ts
1028 views
1
import StateMachine from 'awaited-dom/base/StateMachine';
2
import CoreTab from './CoreTab';
3
4
const { getState, setState } = StateMachine<Dialog, IState>();
5
6
interface IState {
7
coreTab: Promise<CoreTab>;
8
}
9
10
export default class Dialog {
11
url: string;
12
message: string;
13
type: 'alert' | 'confirm' | 'prompt' | 'beforeunload';
14
hasBrowserHandler: boolean;
15
defaultPrompt?: string;
16
17
async dismiss(accept: boolean, promptText?: string): Promise<void> {
18
const coreTab = await getState(this).coreTab;
19
return coreTab.dismissDialog(accept, promptText);
20
}
21
}
22
23
export function createDialog(coreTab: Promise<CoreTab>, data: Omit<Dialog, 'dismiss'>): Dialog {
24
const dialog = new Dialog();
25
Object.assign(dialog, data);
26
setState(dialog, { coreTab });
27
return dialog;
28
}
29
30