2015-08-17 17:00:26 -07:00
/ * *
2018-11-23 12:29:20 +00:00
* DO NOT EDIT THIS FILE .
* See the following change record for more information ,
* https : //www.drupal.org/node/2815083
* @ preserve
* * /
2015-08-17 17:00:26 -07:00
( function ( $ , Drupal , debounce ) {
var offsets = {
top : 0 ,
right : 0 ,
bottom : 0 ,
left : 0
} ;
function getRawOffset ( el , edge ) {
var $el = $ ( el ) ;
var documentElement = document . documentElement ;
var displacement = 0 ;
2018-11-23 12:29:20 +00:00
var horizontal = edge === 'left' || edge === 'right' ;
2015-08-17 17:00:26 -07:00
var placement = $el . offset ( ) [ horizontal ? 'left' : 'top' ] ;
2018-11-23 12:29:20 +00:00
2016-11-02 11:43:31 -07:00
placement -= window [ 'scroll' + ( horizontal ? 'X' : 'Y' ) ] || document . documentElement [ 'scroll' + ( horizontal ? 'Left' : 'Top' ) ] || 0 ;
2018-11-23 12:29:20 +00:00
2015-08-17 17:00:26 -07:00
switch ( edge ) {
case 'top' :
displacement = placement + $el . outerHeight ( ) ;
break ;
case 'left' :
displacement = placement + $el . outerWidth ( ) ;
break ;
case 'bottom' :
displacement = documentElement . clientHeight - placement ;
break ;
case 'right' :
displacement = documentElement . clientWidth - placement ;
break ;
default :
displacement = 0 ;
}
return displacement ;
}
2018-11-23 12:29:20 +00:00
function calculateOffset ( edge ) {
var edgeOffset = 0 ;
var displacingElements = document . querySelectorAll ( '[data-offset-' + edge + ']' ) ;
var n = displacingElements . length ;
for ( var i = 0 ; i < n ; i ++ ) {
var el = displacingElements [ i ] ;
if ( el . style . display === 'none' ) {
continue ;
}
var displacement = parseInt ( el . getAttribute ( 'data-offset-' + edge ) , 10 ) ;
if ( isNaN ( displacement ) ) {
displacement = getRawOffset ( el , edge ) ;
}
edgeOffset = Math . max ( edgeOffset , displacement ) ;
}
return edgeOffset ;
}
function calculateOffsets ( ) {
return {
top : calculateOffset ( 'top' ) ,
right : calculateOffset ( 'right' ) ,
bottom : calculateOffset ( 'bottom' ) ,
left : calculateOffset ( 'left' )
} ;
}
function displace ( broadcast ) {
offsets = calculateOffsets ( ) ;
Drupal . displace . offsets = offsets ;
if ( typeof broadcast === 'undefined' || broadcast ) {
$ ( document ) . trigger ( 'drupalViewportOffsetChange' , offsets ) ;
}
return offsets ;
}
Drupal . behaviors . drupalDisplace = {
attach : function attach ( ) {
if ( this . displaceProcessed ) {
return ;
}
this . displaceProcessed = true ;
$ ( window ) . on ( 'resize.drupalDisplace' , debounce ( displace , 200 ) ) ;
}
} ;
2015-08-17 17:00:26 -07:00
Drupal . displace = displace ;
$ . extend ( Drupal . displace , {
offsets : offsets ,
calculateOffset : calculateOffset
} ) ;
2018-11-23 12:29:20 +00:00
} ) ( jQuery , Drupal , Drupal . debounce ) ;