motion.js 2.6 KB

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