|
- var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);
-
- // ================= Transition =================
- // Event wrapper. Copy from react source code
- function makePrefixMap(styleProp, eventName) {
- var prefixes = {};
-
- prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();
- prefixes['Webkit' + styleProp] = 'webkit' + eventName;
- prefixes['Moz' + styleProp] = 'moz' + eventName;
- prefixes['ms' + styleProp] = 'MS' + eventName;
- prefixes['O' + styleProp] = 'o' + eventName.toLowerCase();
-
- return prefixes;
- }
-
- export function getVendorPrefixes(domSupport, win) {
- var prefixes = {
- animationend: makePrefixMap('Animation', 'AnimationEnd'),
- transitionend: makePrefixMap('Transition', 'TransitionEnd')
- };
-
- if (domSupport) {
- if (!('AnimationEvent' in win)) {
- delete prefixes.animationend.animation;
- }
-
- if (!('TransitionEvent' in win)) {
- delete prefixes.transitionend.transition;
- }
- }
-
- return prefixes;
- }
-
- var vendorPrefixes = getVendorPrefixes(canUseDOM, typeof window !== 'undefined' ? window : {});
-
- var style = {};
-
- if (canUseDOM) {
- style = document.createElement('div').style;
- }
-
- var prefixedEventNames = {};
-
- export function getVendorPrefixedEventName(eventName) {
- if (prefixedEventNames[eventName]) {
- return prefixedEventNames[eventName];
- }
-
- var prefixMap = vendorPrefixes[eventName];
-
- if (prefixMap) {
- var stylePropList = Object.keys(prefixMap);
- var len = stylePropList.length;
- for (var i = 0; i < len; i += 1) {
- var styleProp = stylePropList[i];
- if (Object.prototype.hasOwnProperty.call(prefixMap, styleProp) && styleProp in style) {
- prefixedEventNames[eventName] = prefixMap[styleProp];
- return prefixedEventNames[eventName];
- }
- }
- }
-
- return '';
- }
-
- export var animationEndName = getVendorPrefixedEventName('animationend');
- export var transitionEndName = getVendorPrefixedEventName('transitionend');
- export var supportTransition = !!(animationEndName && transitionEndName);
-
- export function getTransitionName(transitionName, transitionType) {
- if (!transitionName) return null;
-
- if (typeof transitionName === 'object') {
- var type = transitionType.replace(/-\w/g, function (match) {
- return match[1].toUpperCase();
- });
- return transitionName[type];
- }
-
- return transitionName + '-' + transitionType;
- }
|