Files
tolaria/src/components/inlineWikilinkBeforeInput.ts
2026-04-27 20:36:59 +02:00

29 lines
732 B
TypeScript

type BeforeInputLike = {
inputType?: unknown
}
type PlainTextBeforeInputLike = BeforeInputLike & {
data?: unknown
isComposing?: unknown
}
type PlainTextBeforeInput = PlainTextBeforeInputLike & {
data: string
inputType: 'insertText'
isComposing?: false
}
export function isInsertBeforeInput(nativeEvent: BeforeInputLike) {
const { inputType } = nativeEvent
return typeof inputType === 'string' && inputType.startsWith('insert')
}
export function isPlainTextBeforeInput(
nativeEvent: PlainTextBeforeInputLike,
): nativeEvent is PlainTextBeforeInput {
return nativeEvent.inputType === 'insertText'
&& !nativeEvent.isComposing
&& typeof nativeEvent.data === 'string'
&& nativeEvent.data.length > 0
}