| 8 | * @param {number | null} lastCompositionEndAt |
| 9 | */ |
| 10 | export function isComposingEnter( |
| 11 | event, |
| 12 | compositionActive, |
| 13 | lastCompositionEndAt = null, |
| 14 | ) { |
| 15 | const hasCompositionKeyCodeFallback = |
| 16 | typeof event.keyCode === "number" && event.keyCode === 229; |
| 17 | const isAfterRecentCompositionEnd = |
| 18 | typeof event.timeStamp === "number" && |
| 19 | typeof lastCompositionEndAt === "number" && |
| 20 | event.timeStamp >= lastCompositionEndAt && |
| 21 | event.timeStamp - lastCompositionEndAt < |
| 22 | RECENT_COMPOSITION_END_THRESHOLD_MS; |
| 23 | |
| 24 | return ( |
| 25 | event.key === "Enter" && |
| 26 | (compositionActive || |
| 27 | event.isComposing || |
| 28 | hasCompositionKeyCodeFallback || |
| 29 | isAfterRecentCompositionEnd) |
| 30 | ); |
| 31 | } |