{"ast":null,"code":"import getBoundingClientRect from \"../../modules/getBoundingClientRect\";\nimport ResponderTouchHistoryStore from \"./ResponderTouchHistoryStore\";\n\nvar emptyFunction = function emptyFunction() {};\n\nvar emptyObject = {};\nvar emptyArray = [];\n\nfunction normalizeIdentifier(identifier) {\n  return identifier > 20 ? identifier % 20 : identifier;\n}\n\nexport default function createResponderEvent(domEvent) {\n  var rect;\n  var propagationWasStopped = false;\n  var changedTouches;\n  var touches;\n  var domEventChangedTouches = domEvent.changedTouches;\n  var domEventType = domEvent.type;\n  var metaKey = domEvent.metaKey === true;\n  var shiftKey = domEvent.shiftKey === true;\n  var force = domEventChangedTouches && domEventChangedTouches[0].force || 0;\n  var identifier = normalizeIdentifier(domEventChangedTouches && domEventChangedTouches[0].identifier || 0);\n  var clientX = domEventChangedTouches && domEventChangedTouches[0].clientX || domEvent.clientX;\n  var clientY = domEventChangedTouches && domEventChangedTouches[0].clientY || domEvent.clientY;\n  var pageX = domEventChangedTouches && domEventChangedTouches[0].pageX || domEvent.pageX;\n  var pageY = domEventChangedTouches && domEventChangedTouches[0].pageY || domEvent.pageY;\n  var preventDefault = typeof domEvent.preventDefault === 'function' ? domEvent.preventDefault.bind(domEvent) : emptyFunction;\n  var timestamp = domEvent.timeStamp;\n\n  function normalizeTouches(touches) {\n    return Array.prototype.slice.call(touches).map(function (touch) {\n      return {\n        force: touch.force,\n        identifier: normalizeIdentifier(touch.identifier),\n\n        get locationX() {\n          return locationX(touch.clientX);\n        },\n\n        get locationY() {\n          return locationY(touch.clientY);\n        },\n\n        pageX: touch.pageX,\n        pageY: touch.pageY,\n        target: touch.target,\n        timestamp: timestamp\n      };\n    });\n  }\n\n  if (domEventChangedTouches != null) {\n    changedTouches = normalizeTouches(domEventChangedTouches);\n    touches = normalizeTouches(domEvent.touches);\n  } else {\n    var emulatedTouches = [{\n      force: force,\n      identifier: identifier,\n\n      get locationX() {\n        return locationX(clientX);\n      },\n\n      get locationY() {\n        return locationY(clientY);\n      },\n\n      pageX: pageX,\n      pageY: pageY,\n      target: domEvent.target,\n      timestamp: timestamp\n    }];\n    changedTouches = emulatedTouches;\n    touches = domEventType === 'mouseup' || domEventType === 'dragstart' ? emptyArray : emulatedTouches;\n  }\n\n  var responderEvent = {\n    bubbles: true,\n    cancelable: true,\n    currentTarget: null,\n    defaultPrevented: domEvent.defaultPrevented,\n    dispatchConfig: emptyObject,\n    eventPhase: domEvent.eventPhase,\n    isDefaultPrevented: function isDefaultPrevented() {\n      return domEvent.defaultPrevented;\n    },\n    isPropagationStopped: function isPropagationStopped() {\n      return propagationWasStopped;\n    },\n    isTrusted: domEvent.isTrusted,\n    nativeEvent: {\n      altKey: false,\n      ctrlKey: false,\n      metaKey: metaKey,\n      shiftKey: shiftKey,\n      changedTouches: changedTouches,\n      force: force,\n      identifier: identifier,\n\n      get locationX() {\n        return locationX(clientX);\n      },\n\n      get locationY() {\n        return locationY(clientY);\n      },\n\n      pageX: pageX,\n      pageY: pageY,\n      target: domEvent.target,\n      timestamp: timestamp,\n      touches: touches,\n      type: domEventType\n    },\n    persist: emptyFunction,\n    preventDefault: preventDefault,\n    stopPropagation: function stopPropagation() {\n      propagationWasStopped = true;\n    },\n    target: domEvent.target,\n    timeStamp: timestamp,\n    touchHistory: ResponderTouchHistoryStore.touchHistory\n  };\n\n  function locationX(x) {\n    rect = rect || getBoundingClientRect(responderEvent.currentTarget);\n\n    if (rect) {\n      return x - rect.left;\n    }\n  }\n\n  function locationY(y) {\n    rect = rect || getBoundingClientRect(responderEvent.currentTarget);\n\n    if (rect) {\n      return y - rect.top;\n    }\n  }\n\n  return responderEvent;\n}","map":{"version":3,"sources":["/Users/nishan/Desktop/oss/responsive-breakpoints/example/node_modules/react-native-web/dist/modules/useResponderEvents/createResponderEvent.js"],"names":["getBoundingClientRect","ResponderTouchHistoryStore","emptyFunction","emptyObject","emptyArray","normalizeIdentifier","identifier","createResponderEvent","domEvent","rect","propagationWasStopped","changedTouches","touches","domEventChangedTouches","domEventType","type","metaKey","shiftKey","force","clientX","clientY","pageX","pageY","preventDefault","bind","timestamp","timeStamp","normalizeTouches","Array","prototype","slice","call","map","touch","locationX","locationY","target","emulatedTouches","responderEvent","bubbles","cancelable","currentTarget","defaultPrevented","dispatchConfig","eventPhase","isDefaultPrevented","isPropagationStopped","isTrusted","nativeEvent","altKey","ctrlKey","persist","stopPropagation","touchHistory","x","left","y","top"],"mappings":"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","sourcesContent":["/**\n * Copyright (c) Nicolas Gallagher\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\nimport getBoundingClientRect from '../../modules/getBoundingClientRect';\nimport ResponderTouchHistoryStore from './ResponderTouchHistoryStore';\n\nvar emptyFunction = function emptyFunction() {};\n\nvar emptyObject = {};\nvar emptyArray = [];\n/**\n * Safari produces very large identifiers that would cause the `touchBank` array\n * length to be so large as to crash the browser, if not normalized like this.\n * In the future the `touchBank` should use an object/map instead.\n */\n\nfunction normalizeIdentifier(identifier) {\n  return identifier > 20 ? identifier % 20 : identifier;\n}\n/**\n * Converts a native DOM event to a ResponderEvent.\n * Mouse events are transformed into fake touch events.\n */\n\n\nexport default function createResponderEvent(domEvent) {\n  var rect;\n  var propagationWasStopped = false;\n  var changedTouches;\n  var touches;\n  var domEventChangedTouches = domEvent.changedTouches;\n  var domEventType = domEvent.type;\n  var metaKey = domEvent.metaKey === true;\n  var shiftKey = domEvent.shiftKey === true;\n  var force = domEventChangedTouches && domEventChangedTouches[0].force || 0;\n  var identifier = normalizeIdentifier(domEventChangedTouches && domEventChangedTouches[0].identifier || 0);\n  var clientX = domEventChangedTouches && domEventChangedTouches[0].clientX || domEvent.clientX;\n  var clientY = domEventChangedTouches && domEventChangedTouches[0].clientY || domEvent.clientY;\n  var pageX = domEventChangedTouches && domEventChangedTouches[0].pageX || domEvent.pageX;\n  var pageY = domEventChangedTouches && domEventChangedTouches[0].pageY || domEvent.pageY;\n  var preventDefault = typeof domEvent.preventDefault === 'function' ? domEvent.preventDefault.bind(domEvent) : emptyFunction;\n  var timestamp = domEvent.timeStamp;\n\n  function normalizeTouches(touches) {\n    return Array.prototype.slice.call(touches).map(function (touch) {\n      return {\n        force: touch.force,\n        identifier: normalizeIdentifier(touch.identifier),\n\n        get locationX() {\n          return locationX(touch.clientX);\n        },\n\n        get locationY() {\n          return locationY(touch.clientY);\n        },\n\n        pageX: touch.pageX,\n        pageY: touch.pageY,\n        target: touch.target,\n        timestamp: timestamp\n      };\n    });\n  }\n\n  if (domEventChangedTouches != null) {\n    changedTouches = normalizeTouches(domEventChangedTouches);\n    touches = normalizeTouches(domEvent.touches);\n  } else {\n    var emulatedTouches = [{\n      force: force,\n      identifier: identifier,\n\n      get locationX() {\n        return locationX(clientX);\n      },\n\n      get locationY() {\n        return locationY(clientY);\n      },\n\n      pageX: pageX,\n      pageY: pageY,\n      target: domEvent.target,\n      timestamp: timestamp\n    }];\n    changedTouches = emulatedTouches;\n    touches = domEventType === 'mouseup' || domEventType === 'dragstart' ? emptyArray : emulatedTouches;\n  }\n\n  var responderEvent = {\n    bubbles: true,\n    cancelable: true,\n    // `currentTarget` is set before dispatch\n    currentTarget: null,\n    defaultPrevented: domEvent.defaultPrevented,\n    dispatchConfig: emptyObject,\n    eventPhase: domEvent.eventPhase,\n    isDefaultPrevented: function isDefaultPrevented() {\n      return domEvent.defaultPrevented;\n    },\n    isPropagationStopped: function isPropagationStopped() {\n      return propagationWasStopped;\n    },\n    isTrusted: domEvent.isTrusted,\n    nativeEvent: {\n      altKey: false,\n      ctrlKey: false,\n      metaKey: metaKey,\n      shiftKey: shiftKey,\n      changedTouches: changedTouches,\n      force: force,\n      identifier: identifier,\n\n      get locationX() {\n        return locationX(clientX);\n      },\n\n      get locationY() {\n        return locationY(clientY);\n      },\n\n      pageX: pageX,\n      pageY: pageY,\n      target: domEvent.target,\n      timestamp: timestamp,\n      touches: touches,\n      type: domEventType\n    },\n    persist: emptyFunction,\n    preventDefault: preventDefault,\n    stopPropagation: function stopPropagation() {\n      propagationWasStopped = true;\n    },\n    target: domEvent.target,\n    timeStamp: timestamp,\n    touchHistory: ResponderTouchHistoryStore.touchHistory\n  }; // Using getters and functions serves two purposes:\n  // 1) The value of `currentTarget` is not initially available.\n  // 2) Measuring the clientRect may cause layout jank and should only be done on-demand.\n\n  function locationX(x) {\n    rect = rect || getBoundingClientRect(responderEvent.currentTarget);\n\n    if (rect) {\n      return x - rect.left;\n    }\n  }\n\n  function locationY(y) {\n    rect = rect || getBoundingClientRect(responderEvent.currentTarget);\n\n    if (rect) {\n      return y - rect.top;\n    }\n  }\n\n  return responderEvent;\n}"]},"metadata":{},"sourceType":"module"}