zhangyong
2023-08-22 1353e87cb21a4032d585d7404bae9042f2ebcf08
1
{"version":3,"sources":["../src/UserAgent_DEPRECATED.js","../src/ExecutionEnvironment.js","../src/isEventSupported.js","../src/normalizeWheel.js"],"sourcesContent":["/**\n * Copyright 2004-present Facebook. All Rights Reserved.\n *\n * @providesModule UserAgent_DEPRECATED\n */\n\n/**\n *  Provides entirely client-side User Agent and OS detection. You should prefer\n *  the non-deprecated UserAgent module when possible, which exposes our\n *  authoritative server-side PHP-based detection to the client.\n *\n *  Usage is straightforward:\n *\n *    if (UserAgent_DEPRECATED.ie()) {\n *      //  IE\n *    }\n *\n *  You can also do version checks:\n *\n *    if (UserAgent_DEPRECATED.ie() >= 7) {\n *      //  IE7 or better\n *    }\n *\n *  The browser functions will return NaN if the browser does not match, so\n *  you can also do version compares the other way:\n *\n *    if (UserAgent_DEPRECATED.ie() < 7) {\n *      //  IE6 or worse\n *    }\n *\n *  Note that the version is a float and may include a minor version number,\n *  so you should always use range operators to perform comparisons, not\n *  strict equality.\n *\n *  **Note:** You should **strongly** prefer capability detection to browser\n *  version detection where it's reasonable:\n *\n *    http://www.quirksmode.org/js/support.html\n *\n *  Further, we have a large number of mature wrapper functions and classes\n *  which abstract away many browser irregularities. Check the documentation,\n *  grep for things, or ask on javascript@lists.facebook.com before writing yet\n *  another copy of \"event || window.event\".\n *\n */\n\nvar _populated = false;\n\n// Browsers\nvar _ie, _firefox, _opera, _webkit, _chrome;\n\n// Actual IE browser for compatibility mode\nvar _ie_real_version;\n\n// Platforms\nvar _osx, _windows, _linux, _android;\n\n// Architectures\nvar _win64;\n\n// Devices\nvar _iphone, _ipad, _native;\n\nvar _mobile;\n\nfunction _populate() {\n  if (_populated) {\n    return;\n  }\n\n  _populated = true;\n\n  // To work around buggy JS libraries that can't handle multi-digit\n  // version numbers, Opera 10's user agent string claims it's Opera\n  // 9, then later includes a Version/X.Y field:\n  //\n  // Opera/9.80 (foo) Presto/2.2.15 Version/10.10\n  var uas = navigator.userAgent;\n  var agent =\n    /(?:MSIE.(\\d+\\.\\d+))|(?:(?:Firefox|GranParadiso|Iceweasel).(\\d+\\.\\d+))|(?:Opera(?:.+Version.|.)(\\d+\\.\\d+))|(?:AppleWebKit.(\\d+(?:\\.\\d+)?))|(?:Trident\\/\\d+\\.\\d+.*rv:(\\d+\\.\\d+))/.exec(\n      uas\n    );\n  var os = /(Mac OS X)|(Windows)|(Linux)/.exec(uas);\n\n  _iphone = /\\b(iPhone|iP[ao]d)/.exec(uas);\n  _ipad = /\\b(iP[ao]d)/.exec(uas);\n  _android = /Android/i.exec(uas);\n  _native = /FBAN\\/\\w+;/i.exec(uas);\n  _mobile = /Mobile/i.exec(uas);\n\n  // Note that the IE team blog would have you believe you should be checking\n  // for 'Win64; x64'.  But MSDN then reveals that you can actually be coming\n  // from either x64 or ia64;  so ultimately, you should just check for Win64\n  // as in indicator of whether you're in 64-bit IE.  32-bit IE on 64-bit\n  // Windows will send 'WOW64' instead.\n  _win64 = !!/Win64/.exec(uas);\n\n  if (agent) {\n    _ie = agent[1]\n      ? parseFloat(agent[1])\n      : agent[5]\n      ? parseFloat(agent[5])\n      : NaN;\n    // IE compatibility mode\n    if (_ie && document && document.documentMode) {\n      _ie = document.documentMode;\n    }\n    // grab the \"true\" ie version from the trident token if available\n    var trident = /(?:Trident\\/(\\d+.\\d+))/.exec(uas);\n    _ie_real_version = trident ? parseFloat(trident[1]) + 4 : _ie;\n\n    _firefox = agent[2] ? parseFloat(agent[2]) : NaN;\n    _opera = agent[3] ? parseFloat(agent[3]) : NaN;\n    _webkit = agent[4] ? parseFloat(agent[4]) : NaN;\n    if (_webkit) {\n      // We do not add the regexp to the above test, because it will always\n      // match 'safari' only since 'AppleWebKit' appears before 'Chrome' in\n      // the userAgent string.\n      agent = /(?:Chrome\\/(\\d+\\.\\d+))/.exec(uas);\n      _chrome = agent && agent[1] ? parseFloat(agent[1]) : NaN;\n    } else {\n      _chrome = NaN;\n    }\n  } else {\n    _ie = _firefox = _opera = _chrome = _webkit = NaN;\n  }\n\n  if (os) {\n    if (os[1]) {\n      // Detect OS X version.  If no version number matches, set _osx to true.\n      // Version examples:  10, 10_6_1, 10.7\n      // Parses version number as a float, taking only first two sets of\n      // digits.  If only one set of digits is found, returns just the major\n      // version number.\n      var ver = /(?:Mac OS X (\\d+(?:[._]\\d+)?))/.exec(uas);\n\n      _osx = ver ? parseFloat(ver[1].replace('_', '.')) : true;\n    } else {\n      _osx = false;\n    }\n    _windows = !!os[2];\n    _linux = !!os[3];\n  } else {\n    _osx = _windows = _linux = false;\n  }\n}\n\nvar UserAgent_DEPRECATED = {\n  /**\n   *  Check if the UA is Internet Explorer.\n   *\n   *\n   *  @return float|NaN Version number (if match) or NaN.\n   */\n  ie: function () {\n    return _populate() || _ie;\n  },\n\n  /**\n   * Check if we're in Internet Explorer compatibility mode.\n   *\n   * @return bool true if in compatibility mode, false if\n   * not compatibility mode or not ie\n   */\n  ieCompatibilityMode: function () {\n    return _populate() || _ie_real_version > _ie;\n  },\n\n  /**\n   * Whether the browser is 64-bit IE.  Really, this is kind of weak sauce;  we\n   * only need this because Skype can't handle 64-bit IE yet.  We need to remove\n   * this when we don't need it -- tracked by #601957.\n   */\n  ie64: function () {\n    return UserAgent_DEPRECATED.ie() && _win64;\n  },\n\n  /**\n   *  Check if the UA is Firefox.\n   *\n   *\n   *  @return float|NaN Version number (if match) or NaN.\n   */\n  firefox: function () {\n    return _populate() || _firefox;\n  },\n\n  /**\n   *  Check if the UA is Opera.\n   *\n   *\n   *  @return float|NaN Version number (if match) or NaN.\n   */\n  opera: function () {\n    return _populate() || _opera;\n  },\n\n  /**\n   *  Check if the UA is WebKit.\n   *\n   *\n   *  @return float|NaN Version number (if match) or NaN.\n   */\n  webkit: function () {\n    return _populate() || _webkit;\n  },\n\n  /**\n   *  For Push\n   *  WILL BE REMOVED VERY SOON. Use UserAgent_DEPRECATED.webkit\n   */\n  safari: function () {\n    return UserAgent_DEPRECATED.webkit();\n  },\n\n  /**\n   *  Check if the UA is a Chrome browser.\n   *\n   *\n   *  @return float|NaN Version number (if match) or NaN.\n   */\n  chrome: function () {\n    return _populate() || _chrome;\n  },\n\n  /**\n   *  Check if the user is running Windows.\n   *\n   *  @return bool `true' if the user's OS is Windows.\n   */\n  windows: function () {\n    return _populate() || _windows;\n  },\n\n  /**\n   *  Check if the user is running Mac OS X.\n   *\n   *  @return float|bool   Returns a float if a version number is detected,\n   *                       otherwise true/false.\n   */\n  osx: function () {\n    return _populate() || _osx;\n  },\n\n  /**\n   * Check if the user is running Linux.\n   *\n   * @return bool `true' if the user's OS is some flavor of Linux.\n   */\n  linux: function () {\n    return _populate() || _linux;\n  },\n\n  /**\n   * Check if the user is running on an iPhone or iPod platform.\n   *\n   * @return bool `true' if the user is running some flavor of the\n   *    iPhone OS.\n   */\n  iphone: function () {\n    return _populate() || _iphone;\n  },\n\n  mobile: function () {\n    return _populate() || _iphone || _ipad || _android || _mobile;\n  },\n\n  nativeApp: function () {\n    // webviews inside of the native apps\n    return _populate() || _native;\n  },\n\n  android: function () {\n    return _populate() || _android;\n  },\n\n  ipad: function () {\n    return _populate() || _ipad;\n  },\n};\n\nexport default UserAgent_DEPRECATED;\n","/**\n * Copyright (c) 2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule ExecutionEnvironment\n */\n\n/*jslint evil: true */\n\nvar canUseDOM = !!(\n  typeof window !== 'undefined' &&\n  window.document &&\n  window.document.createElement\n);\n\n/**\n * Simple, lightweight module assisting with the detection and context of\n * Worker. Helps avoid circular dependencies and allows code to reason about\n * whether or not they are in a Worker, even if they never include the main\n * `ReactWorker` dependency.\n */\nvar ExecutionEnvironment = {\n  canUseDOM: canUseDOM,\n\n  canUseWorkers: typeof Worker !== 'undefined',\n\n  canUseEventListeners:\n    canUseDOM && !!(window.addEventListener || window.attachEvent),\n\n  canUseViewport: canUseDOM && !!window.screen,\n\n  isInWorker: !canUseDOM, // For now, this is true - might change in the future.\n};\n\nexport default ExecutionEnvironment;\n","/**\n * Copyright 2013-2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule isEventSupported\n */\n\nimport ExecutionEnvironment from './ExecutionEnvironment';\n\nvar useHasFeature;\nif (ExecutionEnvironment.canUseDOM) {\n  useHasFeature =\n    document.implementation &&\n    document.implementation.hasFeature &&\n    // always returns true in newer browsers as per the standard.\n    // @see http://dom.spec.whatwg.org/#dom-domimplementation-hasfeature\n    document.implementation.hasFeature('', '') !== true;\n}\n\n/**\n * Checks if an event is supported in the current execution environment.\n *\n * NOTE: This will not work correctly for non-generic events such as `change`,\n * `reset`, `load`, `error`, and `select`.\n *\n * Borrows from Modernizr.\n *\n * @param {string} eventNameSuffix Event name, e.g. \"click\".\n * @param {?boolean} capture Check if the capture phase is supported.\n * @return {boolean} True if the event is supported.\n * @internal\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */\nfunction isEventSupported(eventNameSuffix, capture) {\n  if (\n    !ExecutionEnvironment.canUseDOM ||\n    (capture && !('addEventListener' in document))\n  ) {\n    return false;\n  }\n\n  var eventName = 'on' + eventNameSuffix;\n  var isSupported = eventName in document;\n\n  if (!isSupported) {\n    var element = document.createElement('div');\n    element.setAttribute(eventName, 'return;');\n    isSupported = typeof element[eventName] === 'function';\n  }\n\n  if (!isSupported && useHasFeature && eventNameSuffix === 'wheel') {\n    // This is the only way to test support for the `wheel` event in IE9+.\n    isSupported = document.implementation.hasFeature('Events.wheel', '3.0');\n  }\n\n  return isSupported;\n}\n\nexport default isEventSupported;\n","/**\n * Copyright (c) 2015, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n *\n * @providesModule normalizeWheel\n * @typechecks\n */\n\nimport UserAgent_DEPRECATED from './UserAgent_DEPRECATED';\n\nimport isEventSupported from './isEventSupported';\n\n// Reasonable defaults\nvar PIXEL_STEP = 10;\nvar LINE_HEIGHT = 40;\nvar PAGE_HEIGHT = 800;\n\n/**\n * Mouse wheel (and 2-finger trackpad) support on the web sucks.  It is\n * complicated, thus this doc is long and (hopefully) detailed enough to answer\n * your questions.\n *\n * If you need to react to the mouse wheel in a predictable way, this code is\n * like your bestest friend. * hugs *\n *\n * As of today, there are 4 DOM event types you can listen to:\n *\n *   'wheel'                -- Chrome(31+), FF(17+), IE(9+)\n *   'mousewheel'           -- Chrome, IE(6+), Opera, Safari\n *   'MozMousePixelScroll'  -- FF(3.5 only!) (2010-2013) -- don't bother!\n *   'DOMMouseScroll'       -- FF(0.9.7+) since 2003\n *\n * So what to do?  The is the best:\n *\n *   normalizeWheel.getEventType();\n *\n * In your event callback, use this code to get sane interpretation of the\n * deltas.  This code will return an object with properties:\n *\n *   spinX   -- normalized spin speed (use for zoom) - x plane\n *   spinY   -- \" - y plane\n *   pixelX  -- normalized distance (to pixels) - x plane\n *   pixelY  -- \" - y plane\n *\n * Wheel values are provided by the browser assuming you are using the wheel to\n * scroll a web page by a number of lines or pixels (or pages).  Values can vary\n * significantly on different platforms and browsers, forgetting that you can\n * scroll at different speeds.  Some devices (like trackpads) emit more events\n * at smaller increments with fine granularity, and some emit massive jumps with\n * linear speed or acceleration.\n *\n * This code does its best to normalize the deltas for you:\n *\n *   - spin is trying to normalize how far the wheel was spun (or trackpad\n *     dragged).  This is super useful for zoom support where you want to\n *     throw away the chunky scroll steps on the PC and make those equal to\n *     the slow and smooth tiny steps on the Mac. Key data: This code tries to\n *     resolve a single slow step on a wheel to 1.\n *\n *   - pixel is normalizing the desired scroll delta in pixel units.  You'll\n *     get the crazy differences between browsers, but at least it'll be in\n *     pixels!\n *\n *   - positive value indicates scrolling DOWN/RIGHT, negative UP/LEFT.  This\n *     should translate to positive value zooming IN, negative zooming OUT.\n *     This matches the newer 'wheel' event.\n *\n * Why are there spinX, spinY (or pixels)?\n *\n *   - spinX is a 2-finger side drag on the trackpad, and a shift + wheel turn\n *     with a mouse.  It results in side-scrolling in the browser by default.\n *\n *   - spinY is what you expect -- it's the classic axis of a mouse wheel.\n *\n *   - I dropped spinZ/pixelZ.  It is supported by the DOM 3 'wheel' event and\n *     probably is by browsers in conjunction with fancy 3D controllers .. but\n *     you know.\n *\n * Implementation info:\n *\n * Examples of 'wheel' event if you scroll slowly (down) by one step with an\n * average mouse:\n *\n *   OS X + Chrome  (mouse)     -    4   pixel delta  (wheelDelta -120)\n *   OS X + Safari  (mouse)     -  N/A   pixel delta  (wheelDelta  -12)\n *   OS X + Firefox (mouse)     -    0.1 line  delta  (wheelDelta  N/A)\n *   Win8 + Chrome  (mouse)     -  100   pixel delta  (wheelDelta -120)\n *   Win8 + Firefox (mouse)     -    3   line  delta  (wheelDelta -120)\n *\n * On the trackpad:\n *\n *   OS X + Chrome  (trackpad)  -    2   pixel delta  (wheelDelta   -6)\n *   OS X + Firefox (trackpad)  -    1   pixel delta  (wheelDelta  N/A)\n *\n * On other/older browsers.. it's more complicated as there can be multiple and\n * also missing delta values.\n *\n * The 'wheel' event is more standard:\n *\n * http://www.w3.org/TR/DOM-Level-3-Events/#events-wheelevents\n *\n * The basics is that it includes a unit, deltaMode (pixels, lines, pages), and\n * deltaX, deltaY and deltaZ.  Some browsers provide other values to maintain\n * backward compatibility with older events.  Those other values help us\n * better normalize spin speed.  Example of what the browsers provide:\n *\n *                          | event.wheelDelta | event.detail\n *        ------------------+------------------+--------------\n *          Safari v5/OS X  |       -120       |       0\n *          Safari v5/Win7  |       -120       |       0\n *         Chrome v17/OS X  |       -120       |       0\n *         Chrome v17/Win7  |       -120       |       0\n *                IE9/Win7  |       -120       |   undefined\n *         Firefox v4/OS X  |     undefined    |       1\n *         Firefox v4/Win7  |     undefined    |       3\n *\n */\nfunction normalizeWheel(/*object*/ event) /*object*/ {\n  var sX = 0,\n    sY = 0, // spinX, spinY\n    pX = 0,\n    pY = 0; // pixelX, pixelY\n\n  // Legacy\n  if ('detail' in event) {\n    sY = event.detail;\n  }\n  if ('wheelDelta' in event) {\n    sY = -event.wheelDelta / 120;\n  }\n  if ('wheelDeltaY' in event) {\n    sY = -event.wheelDeltaY / 120;\n  }\n  if ('wheelDeltaX' in event) {\n    sX = -event.wheelDeltaX / 120;\n  }\n\n  // side scrolling on FF with DOMMouseScroll\n  if ('axis' in event && event.axis === event.HORIZONTAL_AXIS) {\n    sX = sY;\n    sY = 0;\n  }\n\n  pX = sX * PIXEL_STEP;\n  pY = sY * PIXEL_STEP;\n\n  if ('deltaY' in event) {\n    pY = event.deltaY;\n  }\n  if ('deltaX' in event) {\n    pX = event.deltaX;\n  }\n\n  if ((pX || pY) && event.deltaMode) {\n    if (event.deltaMode == 1) {\n      // delta in LINE units\n      pX *= LINE_HEIGHT;\n      pY *= LINE_HEIGHT;\n    } else {\n      // delta in PAGE units\n      pX *= PAGE_HEIGHT;\n      pY *= PAGE_HEIGHT;\n    }\n  }\n\n  // Fall-back if spin cannot be determined\n  if (pX && !sX) {\n    sX = pX < 1 ? -1 : 1;\n  }\n  if (pY && !sY) {\n    sY = pY < 1 ? -1 : 1;\n  }\n\n  return { spinX: sX, spinY: sY, pixelX: pX, pixelY: pY };\n}\n\n/**\n * The best combination if you prefer spinX + spinY normalization.  It favors\n * the older DOMMouseScroll for Firefox, as FF does not include wheelDelta with\n * 'wheel' event, making spin speed determination impossible.\n */\nnormalizeWheel.getEventType = function () /*string*/ {\n  return UserAgent_DEPRECATED.firefox()\n    ? 'DOMMouseScroll'\n    : isEventSupported('wheel')\n    ? 'wheel'\n    : 'mousewheel';\n};\n\nexport default normalizeWheel;\n"],"mappings":"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","names":[]}