2023-12-18 13:12:25 +08:00
'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 ) {
2024-01-16 21:26:16 +08:00
el . setAttribute ( 'class' , curClass ) ;
2023-12-18 13:12:25 +08:00
}
} ;
/* 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 ) {
2024-01-16 21:26:16 +08:00
el . setAttribute ( 'class' , trim ( curClass ) ) ;
2023-12-18 13:12:25 +08:00
}
} ;
/* 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 ;
2024-01-16 21:26:16 +08:00
var determinedDirection = vertical !== null && vertical !== undefined ;
2023-12-18 13:12:25 +08:00
var overflow = determinedDirection ? vertical ? getStyle ( el , 'overflow-y' ) : getStyle ( el , 'overflow-x' ) : getStyle ( el , 'overflow' ) ;
2024-01-16 21:26:16 +08:00
return overflow . match ( /(scroll|auto|overlay)/ ) ;
2023-12-18 13:12:25 +08:00
} ;
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 ;
} ;