@ -100,7 +100,8 @@ function getOutputScale(ctx) {
@@ -100,7 +100,8 @@ function getOutputScale(ctx) {
/ * *
* Scrolls specified element into view of its parent .
* element { Object } The element to be visible .
* spot { Object } The object with the top property -- offset from the top edge .
* spot { Object } An object with optional top and left properties ,
* specifying the offset from the top left edge .
* /
function scrollIntoView ( element , spot ) {
// Assuming offsetParent is available (it's not available when viewer is in
@ -108,21 +109,32 @@ function scrollIntoView(element, spot) {
@@ -108,21 +109,32 @@ function scrollIntoView(element, spot) {
// producing the error. See also animationStartedClosure.
var parent = element . offsetParent ;
var offsetY = element . offsetTop + element . clientTop ;
var offsetX = element . offsetLeft + element . clientLeft ;
if ( ! parent ) {
console . error ( 'offsetParent is not set -- cannot scroll' ) ;
return ;
}
while ( parent . clientHeight == parent . scrollHeight ) {
while ( parent . clientHeight === parent . scrollHeight ) {
if ( parent . dataset . _scaleY ) {
offsetY /= parent . dataset . _scaleY ;
offsetX /= parent . dataset . _scaleX ;
}
offsetY += parent . offsetTop ;
offsetX += parent . offsetLeft ;
parent = parent . offsetParent ;
if ( ! parent )
if ( ! parent ) {
return ; // no need to scroll
}
if ( spot )
}
if ( spot ) {
if ( spot . top !== undefined ) {
offsetY += spot . top ;
}
if ( spot . left !== undefined ) {
offsetX += spot . left ;
parent . scrollLeft = offsetX ;
}
}
parent . scrollTop = offsetY ;
}