Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

motion.js 2.6 KiB

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