123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 |
- goog.provide('goog.style.bidi');
- goog.require('goog.dom');
- goog.require('goog.style');
- goog.require('goog.userAgent');
- goog.require('goog.userAgent.product');
- goog.require('goog.userAgent.product.isVersion');
- goog.style.bidi.getScrollLeft = function(element) {
- var isRtl = goog.style.isRightToLeft(element);
- var isSafari10Plus =
- goog.userAgent.product.SAFARI && goog.userAgent.product.isVersion(10);
- if (isRtl && (goog.userAgent.GECKO || isSafari10Plus)) {
-
-
- return -element.scrollLeft;
- } else if (
- isRtl &&
- !(goog.userAgent.EDGE_OR_IE && goog.userAgent.isVersionOrHigher('8'))) {
-
-
-
- var overflowX = goog.style.getComputedOverflowX(element);
- if (overflowX == 'visible') {
- return element.scrollLeft;
- } else {
- return element.scrollWidth - element.clientWidth - element.scrollLeft;
- }
- }
-
-
- return element.scrollLeft;
- };
- goog.style.bidi.getOffsetStart = function(element) {
- element = (element);
- var offsetLeftForReal = element.offsetLeft;
-
-
-
-
- var bestParent = element.offsetParent;
- if (!bestParent && goog.style.getComputedPosition(element) == 'fixed') {
- bestParent = goog.dom.getOwnerDocument(element).documentElement;
- }
-
- if (!bestParent) {
- return offsetLeftForReal;
- }
- if (goog.userAgent.GECKO) {
-
-
- var borderWidths = goog.style.getBorderBox(bestParent);
- offsetLeftForReal += borderWidths.left;
- } else if (
- goog.userAgent.isDocumentModeOrHigher(8) &&
- !goog.userAgent.isDocumentModeOrHigher(9)) {
-
-
-
- var borderWidths = goog.style.getBorderBox(bestParent);
- offsetLeftForReal -= borderWidths.left;
- }
- if (goog.style.isRightToLeft(bestParent)) {
-
- var elementRightOffset = offsetLeftForReal + element.offsetWidth;
-
- return bestParent.clientWidth - elementRightOffset;
- }
- return offsetLeftForReal;
- };
- goog.style.bidi.setScrollOffset = function(element, offsetStart) {
- offsetStart = Math.max(offsetStart, 0);
-
-
-
- if (!goog.style.isRightToLeft(element)) {
- element.scrollLeft = offsetStart;
- } else if (goog.userAgent.GECKO) {
-
- element.scrollLeft = -offsetStart;
- } else if (
- !(goog.userAgent.EDGE_OR_IE && goog.userAgent.isVersionOrHigher('8'))) {
-
-
-
- element.scrollLeft =
- element.scrollWidth - offsetStart - element.clientWidth;
- } else {
- element.scrollLeft = offsetStart;
- }
- };
- goog.style.bidi.setPosition = function(elem, left, top, isRtl) {
- if (!goog.isNull(top)) {
- elem.style.top = top + 'px';
- }
- if (isRtl) {
- elem.style.right = left + 'px';
- elem.style.left = '';
- } else {
- elem.style.left = left + 'px';
- elem.style.right = '';
- }
- };
|