MCPcopy Create free account
hub / github.com/Lucifier129/react-lite / extractCompositionEvent

Function extractCompositionEvent

examples/simple/react.js:267–312  ·  view source on GitHub ↗

* @param {string} topLevelType Record from `EventConstants`. * @param {DOMEventTarget} topLevelTarget The listening component root node. * @param {string} topLevelTargetID ID of `topLevelTarget`. * @param {object} nativeEvent Native browser event. * @return {?object} A SyntheticCompositionEvent.

(topLevelType, topLevelTarget, topLevelTargetID, nativeEvent, nativeEventTarget)

Source from the content-addressed store, hash-verified

265 * @return {?object} A SyntheticCompositionEvent.
266 */
267function extractCompositionEvent(topLevelType, topLevelTarget, topLevelTargetID, nativeEvent, nativeEventTarget) {
268 var eventType;
269 var fallbackData;
270
271 if (canUseCompositionEvent) {
272 eventType = getCompositionEventType(topLevelType);
273 } else if (!currentComposition) {
274 if (isFallbackCompositionStart(topLevelType, nativeEvent)) {
275 eventType = eventTypes.compositionStart;
276 }
277 } else if (isFallbackCompositionEnd(topLevelType, nativeEvent)) {
278 eventType = eventTypes.compositionEnd;
279 }
280
281 if (!eventType) {
282 return null;
283 }
284
285 if (useFallbackCompositionData) {
286 // The current composition is stored statically and must not be
287 // overwritten while composition continues.
288 if (!currentComposition && eventType === eventTypes.compositionStart) {
289 currentComposition = FallbackCompositionState.getPooled(topLevelTarget);
290 } else if (eventType === eventTypes.compositionEnd) {
291 if (currentComposition) {
292 fallbackData = currentComposition.getData();
293 }
294 }
295 }
296
297 var event = SyntheticCompositionEvent.getPooled(eventType, topLevelTargetID, nativeEvent, nativeEventTarget);
298
299 if (fallbackData) {
300 // Inject data generated from fallback path into the synthetic event.
301 // This matches the property of native CompositionEventInterface.
302 event.data = fallbackData;
303 } else {
304 var customData = getDataFromCustomEvent(nativeEvent);
305 if (customData !== null) {
306 event.data = customData;
307 }
308 }
309
310 EventPropagators.accumulateTwoPhaseDispatches(event);
311 return event;
312}
313
314/**
315 * @param {string} topLevelType Record from `EventConstants`.

Callers 1

react.jsFile · 0.85

Calls 4

getCompositionEventTypeFunction · 0.85
isFallbackCompositionEndFunction · 0.85
getDataFromCustomEventFunction · 0.85

Tested by

no test coverage detected