motion.js 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.animationEndName = void 0;
  7. exports.getTransitionName = getTransitionName;
  8. exports.getVendorPrefixedEventName = getVendorPrefixedEventName;
  9. exports.getVendorPrefixes = getVendorPrefixes;
  10. exports.transitionEndName = exports.supportTransition = void 0;
  11. var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
  12. var _canUseDom = _interopRequireDefault(require("rc-util/lib/Dom/canUseDom"));
  13. // ================= Transition =================
  14. // Event wrapper. Copy from react source code
  15. function makePrefixMap(styleProp, eventName) {
  16. var prefixes = {};
  17. prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();
  18. prefixes["Webkit".concat(styleProp)] = "webkit".concat(eventName);
  19. prefixes["Moz".concat(styleProp)] = "moz".concat(eventName);
  20. prefixes["ms".concat(styleProp)] = "MS".concat(eventName);
  21. prefixes["O".concat(styleProp)] = "o".concat(eventName.toLowerCase());
  22. return prefixes;
  23. }
  24. function getVendorPrefixes(domSupport, win) {
  25. var prefixes = {
  26. animationend: makePrefixMap('Animation', 'AnimationEnd'),
  27. transitionend: makePrefixMap('Transition', 'TransitionEnd')
  28. };
  29. if (domSupport) {
  30. if (!('AnimationEvent' in win)) {
  31. delete prefixes.animationend.animation;
  32. }
  33. if (!('TransitionEvent' in win)) {
  34. delete prefixes.transitionend.transition;
  35. }
  36. }
  37. return prefixes;
  38. }
  39. var vendorPrefixes = getVendorPrefixes((0, _canUseDom.default)(), typeof window !== 'undefined' ? window : {});
  40. var style = {};
  41. if ((0, _canUseDom.default)()) {
  42. var _document$createEleme = document.createElement('div');
  43. style = _document$createEleme.style;
  44. }
  45. var prefixedEventNames = {};
  46. function getVendorPrefixedEventName(eventName) {
  47. if (prefixedEventNames[eventName]) {
  48. return prefixedEventNames[eventName];
  49. }
  50. var prefixMap = vendorPrefixes[eventName];
  51. if (prefixMap) {
  52. var stylePropList = Object.keys(prefixMap);
  53. var len = stylePropList.length;
  54. for (var i = 0; i < len; i += 1) {
  55. var styleProp = stylePropList[i];
  56. if (Object.prototype.hasOwnProperty.call(prefixMap, styleProp) && styleProp in style) {
  57. prefixedEventNames[eventName] = prefixMap[styleProp];
  58. return prefixedEventNames[eventName];
  59. }
  60. }
  61. }
  62. return '';
  63. }
  64. var internalAnimationEndName = getVendorPrefixedEventName('animationend');
  65. var internalTransitionEndName = getVendorPrefixedEventName('transitionend');
  66. var supportTransition = exports.supportTransition = !!(internalAnimationEndName && internalTransitionEndName);
  67. var animationEndName = exports.animationEndName = internalAnimationEndName || 'animationend';
  68. var transitionEndName = exports.transitionEndName = internalTransitionEndName || 'transitionend';
  69. function getTransitionName(transitionName, transitionType) {
  70. if (!transitionName) return null;
  71. if ((0, _typeof2.default)(transitionName) === 'object') {
  72. var type = transitionType.replace(/-\w/g, function (match) {
  73. return match[1].toUpperCase();
  74. });
  75. return transitionName[type];
  76. }
  77. return "".concat(transitionName, "-").concat(transitionType);
  78. }