register: ( completable: ICompletionManager.ICompletable ): ICompletionManager.ICompletableAttributes => { const { connector, editor, parent } = completable; const model = new CompleterModel(); const completer = new Completer({ editor, model }); const handler = new CompletionHandler({ completer, connector }); const id = parent.id; // Hide the widget when it first loads. completer.hide(); // Associate the handler with the parent widget. handlers[id] = handler; // Set the handler's editor. handler.editor = editor; // Attach the completer widget. Widget.attach(completer, document.body); // Listen for parent disposal. parent.disposed.connect(() => { delete handlers[id]; model.dispose(); completer.dispose(); handler.dispose(); }); return handler; }
execute: () => handler.invoke()
parent.disposed.connect(() => { delete handlers[id]; model.dispose(); completer.dispose(); handler.dispose(); });