este-library-oldschool
Version:
Library for github.com/steida/este.git
67 lines (62 loc) • 1.86 kB
JavaScript
// Generated by github.com/steida/coffee2closure 900.1.18
/**
@fileoverview Align one element with another element via CSS3 animations.
*/
goog.provide('este.labs.ui.Baseliner');
goog.require('goog.style');
/**
@param {Element} linksContainer
@param {Element} targetsContainer
@constructor
*/
este.labs.ui.Baseliner = function(linksContainer, targetsContainer) {
this.linksContainer = linksContainer;
this.targetsContainer = targetsContainer;
}
/**
@type {string}
*/
este.labs.ui.Baseliner.prototype.selectedClassName = 'selected';
/**
@type {number}
@protected
*/
este.labs.ui.Baseliner.prototype.prevY = 0;
este.labs.ui.Baseliner.prototype.update = function() {
return setTimeout((function(_this) {
return function() {
var link, target;
link = _this.linksContainer.querySelector('.' + _this.selectedClassName);
target = _this.targetsContainer.querySelector('.' + _this.selectedClassName);
if (!link || !target) {
return;
}
goog.style.setStyle(_this.targetsContainer, {
'transform': 'translateY(0px)'
});
_this.prevY = _this.getLinkAndTargetDiff(link, target) + _this.prevY;
return _this.setTargetsContainerStyle();
};
})(this), 0);
};
/**
@param {Element} link
@param {Element} target
@return {number}
@protected
*/
este.labs.ui.Baseliner.prototype.getLinkAndTargetDiff = function(link, target) {
var linkTop, targetTop;
linkTop = link.getBoundingClientRect().top;
targetTop = target.getBoundingClientRect().top;
return Math.round(linkTop) - Math.round(targetTop);
};
/**
@protected
*/
este.labs.ui.Baseliner.prototype.setTargetsContainerStyle = function() {
return goog.style.setStyle(this.targetsContainer, {
'transition': '-webkit-transform .3s ease-in-out',
'transform': "translateY(" + this.prevY + "px)"
});
};