in src/desktop/gitlab/clone/pick_project_name_and_visibility.ts [39:77]
export async function pickProjectNameAndVisibility(
namespace: NamespacePickerItem,
uri: vscode.Uri,
) {
const [initialName] = uri.path.split('/').reverse();
const visibilityPicker = vscode.window.createQuickPick<NameAndVisibilityPickerItem>();
visibilityPicker.placeholder = 'Project path';
visibilityPicker.keepScrollPosition = true;
visibilityPicker.value = initialName;
visibilityPicker.matchOnDescription = true;
visibilityPicker.items = getVisibilityPickerItems(namespace, visibilityPicker.value);
// The currently selected item index should be preserved when the items change.
let activeIndex = 0;
let skipNextEvent = false;
visibilityPicker.onDidChangeActive(a => {
if (skipNextEvent) return;
const [active] = a;
const newIndex = visibilityPicker.items.indexOf(active);
if (newIndex >= 0) {
activeIndex = newIndex;
} else {
// None of the items contain the textbox query, which means the list
// is still in the process of being updated. Ignore all incoming events
// until the list has finished updating.
skipNextEvent = true;
}
});
visibilityPicker.onDidChangeValue(v => {
visibilityPicker.items = getVisibilityPickerItems(namespace, v);
visibilityPicker.activeItems = [visibilityPicker.items[activeIndex]];
skipNextEvent = false;
});
return showQuickPick(visibilityPicker);
}