wrapNativeKeyboardEvent function
Helper util that wraps a native KeyboardEvent in a SyntheticKeyboardEvent.
Used where a native KeyboardEvent is given and a SyntheticKeyboardEvent is needed.
Implementation
SyntheticKeyboardEvent wrapNativeKeyboardEvent(KeyboardEvent nativeEvent) {
return jsifyAndAllowInterop({
// SyntheticEvent fields
'bubbles': nativeEvent.bubbles,
'cancelable': nativeEvent.cancelable,
'currentTarget': nativeEvent.currentTarget,
'defaultPrevented': nativeEvent.defaultPrevented,
'eventPhase': nativeEvent.eventPhase,
'isTrusted': nativeEvent.isTrusted,
'nativeEvent': nativeEvent,
'target': nativeEvent.target,
'timeStamp': nativeEvent.timeStamp,
'type': nativeEvent.type,
// SyntheticEvent methods
'stopPropagation': nativeEvent.stopPropagation,
'preventDefault': nativeEvent.preventDefault,
'persist': () {},
'isPersistent': () => true,
// SyntheticKeyboardEvent fields
'altKey': nativeEvent.altKey,
'char': String.fromCharCode(nativeEvent.charCode),
'ctrlKey': nativeEvent.ctrlKey,
'locale': null,
'location': nativeEvent.location,
'key': nativeEvent.key,
'metaKey': nativeEvent.metaKey,
'repeat': nativeEvent.repeat,
'shiftKey': nativeEvent.shiftKey,
'keyCode': nativeEvent.keyCode,
'charCode': nativeEvent.charCode,
}) as SyntheticKeyboardEvent;
}