interface FeedbackDialogOpener {
element: HTMLElement | null
reopenCommandPalette: boolean
}
const EMPTY_OPENER: FeedbackDialogOpener = {
element: null,
reopenCommandPalette: false,
}
let pendingOpener: FeedbackDialogOpener = EMPTY_OPENER
function isCommandPaletteInput(element: Element | null): boolean {
return element instanceof Element
&& element.tagName === 'INPUT'
&& element.getAttribute('placeholder') === 'Type a command...'
}
export function rememberFeedbackDialogOpener(element: HTMLElement | null): void {
pendingOpener = {
element,
reopenCommandPalette: isCommandPaletteInput(element),
}
}
export function takeFeedbackDialogOpener(): FeedbackDialogOpener {
const opener = pendingOpener
pendingOpener = EMPTY_OPENER
return opener
}