1*6dbdd20aSAndroid Build Coastguard Worker// Copyright (C) 2024 The Android Open Source Project 2*6dbdd20aSAndroid Build Coastguard Worker// 3*6dbdd20aSAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); 4*6dbdd20aSAndroid Build Coastguard Worker// you may not use this file except in compliance with the License. 5*6dbdd20aSAndroid Build Coastguard Worker// You may obtain a copy of the License at 6*6dbdd20aSAndroid Build Coastguard Worker// 7*6dbdd20aSAndroid Build Coastguard Worker// http://www.apache.org/licenses/LICENSE-2.0 8*6dbdd20aSAndroid Build Coastguard Worker// 9*6dbdd20aSAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 10*6dbdd20aSAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, 11*6dbdd20aSAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*6dbdd20aSAndroid Build Coastguard Worker// See the License for the specific language governing permissions and 13*6dbdd20aSAndroid Build Coastguard Worker// limitations under the License. 14*6dbdd20aSAndroid Build Coastguard Worker 15*6dbdd20aSAndroid Build Coastguard Workerexport interface OmniboxManager { 16*6dbdd20aSAndroid Build Coastguard Worker /** 17*6dbdd20aSAndroid Build Coastguard Worker * Turns the omnibox into an interactive prompt for the user. Think of 18*6dbdd20aSAndroid Build Coastguard Worker * window.prompt() but non-modal and more integrated with the UI. 19*6dbdd20aSAndroid Build Coastguard Worker * 20*6dbdd20aSAndroid Build Coastguard Worker * @param text - The question showed to the user (e.g. "Select a process to 21*6dbdd20aSAndroid Build Coastguard Worker * jump to"). 22*6dbdd20aSAndroid Build Coastguard Worker * @param choices - If defined, it shows a list of options in a select-box 23*6dbdd20aSAndroid Build Coastguard Worker * fashion, where the user can move with Up/Down arrows. If omitted the input 24*6dbdd20aSAndroid Build Coastguard Worker * is free-form, like in the case of window.prompt(). 25*6dbdd20aSAndroid Build Coastguard Worker * @returns If `options` === undefined, returns the free-form user input. If 26*6dbdd20aSAndroid Build Coastguard Worker * `options` was provided, returns the selected choice. Returns undefined if 27*6dbdd20aSAndroid Build Coastguard Worker * the user dismisses the prompt by pressing Esc or clicking elsewhere. 28*6dbdd20aSAndroid Build Coastguard Worker * 29*6dbdd20aSAndroid Build Coastguard Worker * Example: 30*6dbdd20aSAndroid Build Coastguard Worker * ```ts 31*6dbdd20aSAndroid Build Coastguard Worker * // Free-form string 32*6dbdd20aSAndroid Build Coastguard Worker * const name = await prompt('Enter your name'); 33*6dbdd20aSAndroid Build Coastguard Worker * 34*6dbdd20aSAndroid Build Coastguard Worker * // Simple list of choices 35*6dbdd20aSAndroid Build Coastguard Worker * const value = await prompt('Choose a color...', ['red', 'blue', 'green']); 36*6dbdd20aSAndroid Build Coastguard Worker * 37*6dbdd20aSAndroid Build Coastguard Worker * // Each choice is an object 38*6dbdd20aSAndroid Build Coastguard Worker * const value = await prompt('Choose from an enum...', { 39*6dbdd20aSAndroid Build Coastguard Worker * values: [ 40*6dbdd20aSAndroid Build Coastguard Worker * {x: MyEnum.Foo, name: 'foo'}, 41*6dbdd20aSAndroid Build Coastguard Worker * {x: MyEnum.Bar, name: 'bar'}, 42*6dbdd20aSAndroid Build Coastguard Worker * ], 43*6dbdd20aSAndroid Build Coastguard Worker * getName: (e) => e.name, 44*6dbdd20aSAndroid Build Coastguard Worker * ); 45*6dbdd20aSAndroid Build Coastguard Worker * ``` 46*6dbdd20aSAndroid Build Coastguard Worker */ 47*6dbdd20aSAndroid Build Coastguard Worker prompt( 48*6dbdd20aSAndroid Build Coastguard Worker text: string, 49*6dbdd20aSAndroid Build Coastguard Worker choices?: ReadonlyArray<string>, 50*6dbdd20aSAndroid Build Coastguard Worker ): Promise<string | undefined>; 51*6dbdd20aSAndroid Build Coastguard Worker prompt<T>(text: string, choices: PromptChoices<T>): Promise<T | undefined>; 52*6dbdd20aSAndroid Build Coastguard Worker} 53*6dbdd20aSAndroid Build Coastguard Worker 54*6dbdd20aSAndroid Build Coastguard Workerexport interface PromptChoices<T> { 55*6dbdd20aSAndroid Build Coastguard Worker values: ReadonlyArray<T>; 56*6dbdd20aSAndroid Build Coastguard Worker getName: (x: T) => string; 57*6dbdd20aSAndroid Build Coastguard Worker} 58