You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							234 lines
						
					
					
						
							6.7 KiB
						
					
					
				
			
		
		
	
	
							234 lines
						
					
					
						
							6.7 KiB
						
					
					
				'use strict'; | 
						|
 | 
						|
exports.__esModule = true; | 
						|
exports.isInContainer = exports.getScrollContainer = exports.isScroll = exports.getStyle = exports.once = exports.off = exports.on = undefined; | 
						|
 | 
						|
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; /* istanbul ignore next */ | 
						|
 | 
						|
exports.hasClass = hasClass; | 
						|
exports.addClass = addClass; | 
						|
exports.removeClass = removeClass; | 
						|
exports.setStyle = setStyle; | 
						|
 | 
						|
var _vue = require('vue'); | 
						|
 | 
						|
var _vue2 = _interopRequireDefault(_vue); | 
						|
 | 
						|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | 
						|
 | 
						|
var isServer = _vue2.default.prototype.$isServer; | 
						|
var SPECIAL_CHARS_REGEXP = /([\:\-\_]+(.))/g; | 
						|
var MOZ_HACK_REGEXP = /^moz([A-Z])/; | 
						|
var ieVersion = isServer ? 0 : Number(document.documentMode); | 
						|
 | 
						|
/* istanbul ignore next */ | 
						|
var trim = function trim(string) { | 
						|
  return (string || '').replace(/^[\s\uFEFF]+|[\s\uFEFF]+$/g, ''); | 
						|
}; | 
						|
/* istanbul ignore next */ | 
						|
var camelCase = function camelCase(name) { | 
						|
  return name.replace(SPECIAL_CHARS_REGEXP, function (_, separator, letter, offset) { | 
						|
    return offset ? letter.toUpperCase() : letter; | 
						|
  }).replace(MOZ_HACK_REGEXP, 'Moz$1'); | 
						|
}; | 
						|
 | 
						|
/* istanbul ignore next */ | 
						|
var on = exports.on = function () { | 
						|
  if (!isServer && document.addEventListener) { | 
						|
    return function (element, event, handler) { | 
						|
      if (element && event && handler) { | 
						|
        element.addEventListener(event, handler, false); | 
						|
      } | 
						|
    }; | 
						|
  } else { | 
						|
    return function (element, event, handler) { | 
						|
      if (element && event && handler) { | 
						|
        element.attachEvent('on' + event, handler); | 
						|
      } | 
						|
    }; | 
						|
  } | 
						|
}(); | 
						|
 | 
						|
/* istanbul ignore next */ | 
						|
var off = exports.off = function () { | 
						|
  if (!isServer && document.removeEventListener) { | 
						|
    return function (element, event, handler) { | 
						|
      if (element && event) { | 
						|
        element.removeEventListener(event, handler, false); | 
						|
      } | 
						|
    }; | 
						|
  } else { | 
						|
    return function (element, event, handler) { | 
						|
      if (element && event) { | 
						|
        element.detachEvent('on' + event, handler); | 
						|
      } | 
						|
    }; | 
						|
  } | 
						|
}(); | 
						|
 | 
						|
/* istanbul ignore next */ | 
						|
var once = exports.once = function once(el, event, fn) { | 
						|
  var listener = function listener() { | 
						|
    if (fn) { | 
						|
      fn.apply(this, arguments); | 
						|
    } | 
						|
    off(el, event, listener); | 
						|
  }; | 
						|
  on(el, event, listener); | 
						|
}; | 
						|
 | 
						|
/* istanbul ignore next */ | 
						|
function hasClass(el, cls) { | 
						|
  if (!el || !cls) return false; | 
						|
  if (cls.indexOf(' ') !== -1) throw new Error('className should not contain space.'); | 
						|
  if (el.classList) { | 
						|
    return el.classList.contains(cls); | 
						|
  } else { | 
						|
    return (' ' + el.className + ' ').indexOf(' ' + cls + ' ') > -1; | 
						|
  } | 
						|
}; | 
						|
 | 
						|
/* istanbul ignore next */ | 
						|
function addClass(el, cls) { | 
						|
  if (!el) return; | 
						|
  var curClass = el.className; | 
						|
  var classes = (cls || '').split(' '); | 
						|
 | 
						|
  for (var i = 0, j = classes.length; i < j; i++) { | 
						|
    var clsName = classes[i]; | 
						|
    if (!clsName) continue; | 
						|
 | 
						|
    if (el.classList) { | 
						|
      el.classList.add(clsName); | 
						|
    } else if (!hasClass(el, clsName)) { | 
						|
      curClass += ' ' + clsName; | 
						|
    } | 
						|
  } | 
						|
  if (!el.classList) { | 
						|
    el.className = curClass; | 
						|
  } | 
						|
}; | 
						|
 | 
						|
/* istanbul ignore next */ | 
						|
function removeClass(el, cls) { | 
						|
  if (!el || !cls) return; | 
						|
  var classes = cls.split(' '); | 
						|
  var curClass = ' ' + el.className + ' '; | 
						|
 | 
						|
  for (var i = 0, j = classes.length; i < j; i++) { | 
						|
    var clsName = classes[i]; | 
						|
    if (!clsName) continue; | 
						|
 | 
						|
    if (el.classList) { | 
						|
      el.classList.remove(clsName); | 
						|
    } else if (hasClass(el, clsName)) { | 
						|
      curClass = curClass.replace(' ' + clsName + ' ', ' '); | 
						|
    } | 
						|
  } | 
						|
  if (!el.classList) { | 
						|
    el.className = trim(curClass); | 
						|
  } | 
						|
}; | 
						|
 | 
						|
/* istanbul ignore next */ | 
						|
var getStyle = exports.getStyle = ieVersion < 9 ? function (element, styleName) { | 
						|
  if (isServer) return; | 
						|
  if (!element || !styleName) return null; | 
						|
  styleName = camelCase(styleName); | 
						|
  if (styleName === 'float') { | 
						|
    styleName = 'styleFloat'; | 
						|
  } | 
						|
  try { | 
						|
    switch (styleName) { | 
						|
      case 'opacity': | 
						|
        try { | 
						|
          return element.filters.item('alpha').opacity / 100; | 
						|
        } catch (e) { | 
						|
          return 1.0; | 
						|
        } | 
						|
      default: | 
						|
        return element.style[styleName] || element.currentStyle ? element.currentStyle[styleName] : null; | 
						|
    } | 
						|
  } catch (e) { | 
						|
    return element.style[styleName]; | 
						|
  } | 
						|
} : function (element, styleName) { | 
						|
  if (isServer) return; | 
						|
  if (!element || !styleName) return null; | 
						|
  styleName = camelCase(styleName); | 
						|
  if (styleName === 'float') { | 
						|
    styleName = 'cssFloat'; | 
						|
  } | 
						|
  try { | 
						|
    var computed = document.defaultView.getComputedStyle(element, ''); | 
						|
    return element.style[styleName] || computed ? computed[styleName] : null; | 
						|
  } catch (e) { | 
						|
    return element.style[styleName]; | 
						|
  } | 
						|
}; | 
						|
 | 
						|
/* istanbul ignore next */ | 
						|
function setStyle(element, styleName, value) { | 
						|
  if (!element || !styleName) return; | 
						|
 | 
						|
  if ((typeof styleName === 'undefined' ? 'undefined' : _typeof(styleName)) === 'object') { | 
						|
    for (var prop in styleName) { | 
						|
      if (styleName.hasOwnProperty(prop)) { | 
						|
        setStyle(element, prop, styleName[prop]); | 
						|
      } | 
						|
    } | 
						|
  } else { | 
						|
    styleName = camelCase(styleName); | 
						|
    if (styleName === 'opacity' && ieVersion < 9) { | 
						|
      element.style.filter = isNaN(value) ? '' : 'alpha(opacity=' + value * 100 + ')'; | 
						|
    } else { | 
						|
      element.style[styleName] = value; | 
						|
    } | 
						|
  } | 
						|
}; | 
						|
 | 
						|
var isScroll = exports.isScroll = function isScroll(el, vertical) { | 
						|
  if (isServer) return; | 
						|
 | 
						|
  var determinedDirection = vertical !== null || vertical !== undefined; | 
						|
  var overflow = determinedDirection ? vertical ? getStyle(el, 'overflow-y') : getStyle(el, 'overflow-x') : getStyle(el, 'overflow'); | 
						|
 | 
						|
  return overflow.match(/(scroll|auto)/); | 
						|
}; | 
						|
 | 
						|
var getScrollContainer = exports.getScrollContainer = function getScrollContainer(el, vertical) { | 
						|
  if (isServer) return; | 
						|
 | 
						|
  var parent = el; | 
						|
  while (parent) { | 
						|
    if ([window, document, document.documentElement].includes(parent)) { | 
						|
      return window; | 
						|
    } | 
						|
    if (isScroll(parent, vertical)) { | 
						|
      return parent; | 
						|
    } | 
						|
    parent = parent.parentNode; | 
						|
  } | 
						|
 | 
						|
  return parent; | 
						|
}; | 
						|
 | 
						|
var isInContainer = exports.isInContainer = function isInContainer(el, container) { | 
						|
  if (isServer || !el || !container) return false; | 
						|
 | 
						|
  var elRect = el.getBoundingClientRect(); | 
						|
  var containerRect = void 0; | 
						|
 | 
						|
  if ([window, document, document.documentElement, null, undefined].includes(container)) { | 
						|
    containerRect = { | 
						|
      top: 0, | 
						|
      right: window.innerWidth, | 
						|
      bottom: window.innerHeight, | 
						|
      left: 0 | 
						|
    }; | 
						|
  } else { | 
						|
    containerRect = container.getBoundingClientRect(); | 
						|
  } | 
						|
 | 
						|
  return elRect.top < containerRect.bottom && elRect.bottom > containerRect.top && elRect.right > containerRect.left && elRect.left < containerRect.right; | 
						|
}; |