Files
tolaria/src/lib/feedbackDialogOpener.ts
2026-05-07 22:22:29 +02:00

31 lines
785 B
TypeScript

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
}