29 lines
732 B
TypeScript
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
|
|
}
|