import { Code } from './code' ; export class QuickInput { private static QUICK_INPUT = '.quick-input-widget' ; private static QUICK_INPUT_INPUT = `${ QuickInput . QUICK_INPUT } .quick-input-box input` ; private static QUICK_INPUT_ROW = `${ QuickInput . QUICK_INPUT } .quick-input-list .monaco-list-row` ; private static QUICK_INPUT_FOCUSED_ELEMENT = `${ QuickInput . QUICK_INPUT_ROW }.focused .monaco-highlighted-label` ; private static QUICK_INPUT_ENTRY_LABEL = `${ QuickInput . QUICK_INPUT_ROW } .label-name` ; private static QUICK_INPUT_ENTRY_LABEL_SPAN = `${ QuickInput . QUICK_INPUT_ROW } .monaco-highlighted-label span` ; constructor ( private code ) { } async waitForQuickInputOpened ( retryCount ? ) { await this . code . waitForActiveElement ( QuickInput . QUICK_INPUT_INPUT , retryCount ) ; } async type ( value ) { await this . code . waitForSetValue ( QuickInput . QUICK_INPUT_INPUT , value ) ; } async waitForQuickInputElementFocused ( ) { await this . code . waitForTextContent ( QuickInput . QUICK_INPUT_FOCUSED_ELEMENT ) ; } async waitForQuickInputElementText ( ) { return this . code . waitForTextContent ( QuickInput . QUICK_INPUT_ENTRY_LABEL_SPAN ) ; } async closeQuickInput ( ) { await this . code . dispatchKeybinding ( 'escape' ) ; await this . waitForQuickInputClosed ( ) ; } async waitForQuickInputElements ( accept ) { await this . code . waitForElements ( QuickInput . QUICK_INPUT_ENTRY_LABEL , false , els => accept ( els . map ( e => e . textContent ) ) ) ; } async waitForQuickInputClosed ( ) { await this . code . waitForElement ( QuickInput . QUICK_INPUT , r => ! ! r && r . attributes . style . indexOf ( 'display: none;' ) !== - 1 ) ; } async selectQuickInputElement ( index , keepOpen ? ) { await this . waitForQuickInputOpened ( ) ; for ( let from = 0 ; from < index ; from ++ ) { await this . code . dispatchKeybinding ( 'down' ) ; } await this . code . dispatchKeybinding ( 'enter' ) ; if ( ! keepOpen ) { await this . waitForQuickInputClosed ( ) ; } } }