1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071 |
- goog.provide('goog.style');
- goog.require('goog.array');
- goog.require('goog.asserts');
- goog.require('goog.dom');
- goog.require('goog.dom.NodeType');
- goog.require('goog.dom.TagName');
- goog.require('goog.dom.vendor');
- goog.require('goog.html.SafeStyleSheet');
- goog.require('goog.html.legacyconversions');
- goog.require('goog.math.Box');
- goog.require('goog.math.Coordinate');
- goog.require('goog.math.Rect');
- goog.require('goog.math.Size');
- goog.require('goog.object');
- goog.require('goog.reflect');
- goog.require('goog.string');
- goog.require('goog.userAgent');
- goog.forwardDeclare('goog.events.Event');
- goog.style.setStyle = function(element, style, opt_value) {
- if (goog.isString(style)) {
- goog.style.setStyle_(element, opt_value, style);
- } else {
- for (var key in style) {
- goog.style.setStyle_(element, style[key], key);
- }
- }
- };
- goog.style.setStyle_ = function(element, value, style) {
- var propertyName = goog.style.getVendorJsStyleName_(element, style);
- if (propertyName) {
-
- element.style[propertyName] = (value);
- }
- };
- goog.style.styleNameCache_ = {};
- goog.style.getVendorJsStyleName_ = function(element, style) {
- var propertyName = goog.style.styleNameCache_[style];
- if (!propertyName) {
- var camelStyle = goog.string.toCamelCase(style);
- propertyName = camelStyle;
- if (element.style[camelStyle] === undefined) {
- var prefixedStyle = goog.dom.vendor.getVendorJsPrefix() +
- goog.string.toTitleCase(camelStyle);
- if (element.style[prefixedStyle] !== undefined) {
- propertyName = prefixedStyle;
- }
- }
- goog.style.styleNameCache_[style] = propertyName;
- }
- return propertyName;
- };
- goog.style.getVendorStyleName_ = function(element, style) {
- var camelStyle = goog.string.toCamelCase(style);
- if (element.style[camelStyle] === undefined) {
- var prefixedStyle = goog.dom.vendor.getVendorJsPrefix() +
- goog.string.toTitleCase(camelStyle);
- if (element.style[prefixedStyle] !== undefined) {
- return goog.dom.vendor.getVendorPrefix() + '-' + style;
- }
- }
- return style;
- };
- goog.style.getStyle = function(element, property) {
-
-
-
-
- var styleValue = element.style[goog.string.toCamelCase(property)];
-
-
- if (typeof(styleValue) !== 'undefined') {
- return styleValue;
- }
- return element.style[goog.style.getVendorJsStyleName_(element, property)] ||
- '';
- };
- goog.style.getComputedStyle = function(element, property) {
- var doc = goog.dom.getOwnerDocument(element);
- if (doc.defaultView && doc.defaultView.getComputedStyle) {
- var styles = doc.defaultView.getComputedStyle(element, null);
- if (styles) {
-
-
- return styles[property] || styles.getPropertyValue(property) || '';
- }
- }
- return '';
- };
- goog.style.getCascadedStyle = function(element, style) {
-
- return (
- element.currentStyle ? element.currentStyle[style] : null);
- };
- goog.style.getStyle_ = function(element, style) {
- return goog.style.getComputedStyle(element, style) ||
- goog.style.getCascadedStyle(element, style) ||
- (element.style && element.style[style]);
- };
- goog.style.getComputedBoxSizing = function(element) {
- return goog.style.getStyle_(element, 'boxSizing') ||
- goog.style.getStyle_(element, 'MozBoxSizing') ||
- goog.style.getStyle_(element, 'WebkitBoxSizing') || null;
- };
- goog.style.getComputedPosition = function(element) {
- return goog.style.getStyle_(element, 'position');
- };
- goog.style.getBackgroundColor = function(element) {
- return goog.style.getStyle_(element, 'backgroundColor');
- };
- goog.style.getComputedOverflowX = function(element) {
- return goog.style.getStyle_(element, 'overflowX');
- };
- goog.style.getComputedOverflowY = function(element) {
- return goog.style.getStyle_(element, 'overflowY');
- };
- goog.style.getComputedZIndex = function(element) {
- return goog.style.getStyle_(element, 'zIndex');
- };
- goog.style.getComputedTextAlign = function(element) {
- return goog.style.getStyle_(element, 'textAlign');
- };
- goog.style.getComputedCursor = function(element) {
- return goog.style.getStyle_(element, 'cursor');
- };
- goog.style.getComputedTransform = function(element) {
- var property = goog.style.getVendorStyleName_(element, 'transform');
- return goog.style.getStyle_(element, property) ||
- goog.style.getStyle_(element, 'transform');
- };
- goog.style.setPosition = function(el, arg1, opt_arg2) {
- var x, y;
- if (arg1 instanceof goog.math.Coordinate) {
- x = arg1.x;
- y = arg1.y;
- } else {
- x = arg1;
- y = opt_arg2;
- }
- el.style.left = goog.style.getPixelStyleValue_(
- (x), false);
- el.style.top = goog.style.getPixelStyleValue_(
- (y), false);
- };
- goog.style.getPosition = function(element) {
- return new goog.math.Coordinate(
- (element).offsetLeft,
- (element).offsetTop);
- };
- goog.style.getClientViewportElement = function(opt_node) {
- var doc;
- if (opt_node) {
- doc = goog.dom.getOwnerDocument(opt_node);
- } else {
- doc = goog.dom.getDocument();
- }
-
- if (goog.userAgent.IE && !goog.userAgent.isDocumentModeOrHigher(9) &&
- !goog.dom.getDomHelper(doc).isCss1CompatMode()) {
- return doc.body;
- }
- return doc.documentElement;
- };
- goog.style.getViewportPageOffset = function(doc) {
- var body = doc.body;
- var documentElement = doc.documentElement;
- var scrollLeft = body.scrollLeft || documentElement.scrollLeft;
- var scrollTop = body.scrollTop || documentElement.scrollTop;
- return new goog.math.Coordinate(scrollLeft, scrollTop);
- };
- goog.style.getBoundingClientRect_ = function(el) {
- var rect;
- try {
- rect = el.getBoundingClientRect();
- } catch (e) {
-
-
- return {'left': 0, 'top': 0, 'right': 0, 'bottom': 0};
- }
-
-
- if (goog.userAgent.IE && el.ownerDocument.body) {
-
-
-
-
-
-
-
-
-
-
-
- var doc = el.ownerDocument;
- rect.left -= doc.documentElement.clientLeft + doc.body.clientLeft;
- rect.top -= doc.documentElement.clientTop + doc.body.clientTop;
- }
- return rect;
- };
- goog.style.getOffsetParent = function(element) {
-
-
-
- if (goog.userAgent.IE && !goog.userAgent.isDocumentModeOrHigher(8)) {
- goog.asserts.assert(element && 'offsetParent' in element);
- return element.offsetParent;
- }
- var doc = goog.dom.getOwnerDocument(element);
- var positionStyle = goog.style.getStyle_(element, 'position');
- var skipStatic = positionStyle == 'fixed' || positionStyle == 'absolute';
- for (var parent = element.parentNode; parent && parent != doc;
- parent = parent.parentNode) {
-
- if (parent.nodeType == goog.dom.NodeType.DOCUMENT_FRAGMENT && parent.host) {
- parent = parent.host;
- }
- positionStyle =
- goog.style.getStyle_( (parent), 'position');
- skipStatic = skipStatic && positionStyle == 'static' &&
- parent != doc.documentElement && parent != doc.body;
- if (!skipStatic &&
- (parent.scrollWidth > parent.clientWidth ||
- parent.scrollHeight > parent.clientHeight ||
- positionStyle == 'fixed' || positionStyle == 'absolute' ||
- positionStyle == 'relative')) {
- return (parent);
- }
- }
- return null;
- };
- goog.style.getVisibleRectForElement = function(element) {
- var visibleRect = new goog.math.Box(0, Infinity, Infinity, 0);
- var dom = goog.dom.getDomHelper(element);
- var body = dom.getDocument().body;
- var documentElement = dom.getDocument().documentElement;
- var scrollEl = dom.getDocumentScrollElement();
-
-
- for (var el = element; el = goog.style.getOffsetParent(el);) {
-
-
- if ((!goog.userAgent.IE || el.clientWidth != 0) &&
- (!goog.userAgent.WEBKIT || el.clientHeight != 0 || el != body) &&
-
-
-
- (el != body && el != documentElement &&
- goog.style.getStyle_(el, 'overflow') != 'visible')) {
- var pos = goog.style.getPageOffset(el);
- var client = goog.style.getClientLeftTop(el);
- pos.x += client.x;
- pos.y += client.y;
- visibleRect.top = Math.max(visibleRect.top, pos.y);
- visibleRect.right = Math.min(visibleRect.right, pos.x + el.clientWidth);
- visibleRect.bottom =
- Math.min(visibleRect.bottom, pos.y + el.clientHeight);
- visibleRect.left = Math.max(visibleRect.left, pos.x);
- }
- }
-
- var scrollX = scrollEl.scrollLeft, scrollY = scrollEl.scrollTop;
- visibleRect.left = Math.max(visibleRect.left, scrollX);
- visibleRect.top = Math.max(visibleRect.top, scrollY);
- var winSize = dom.getViewportSize();
- visibleRect.right = Math.min(visibleRect.right, scrollX + winSize.width);
- visibleRect.bottom = Math.min(visibleRect.bottom, scrollY + winSize.height);
- return visibleRect.top >= 0 && visibleRect.left >= 0 &&
- visibleRect.bottom > visibleRect.top &&
- visibleRect.right > visibleRect.left ?
- visibleRect :
- null;
- };
- goog.style.getContainerOffsetToScrollInto = function(
- element, opt_container, opt_center) {
- var container = opt_container || goog.dom.getDocumentScrollElement();
-
- var elementPos = goog.style.getPageOffset(element);
-
- var containerPos = goog.style.getPageOffset(container);
- var containerBorder = goog.style.getBorderBox(container);
- if (container == goog.dom.getDocumentScrollElement()) {
-
-
-
-
- var relX = elementPos.x - container.scrollLeft;
- var relY = elementPos.y - container.scrollTop;
- if (goog.userAgent.IE && !goog.userAgent.isDocumentModeOrHigher(10)) {
-
-
- relX += containerBorder.left;
- relY += containerBorder.top;
- }
- } else {
-
- var relX = elementPos.x - containerPos.x - containerBorder.left;
- var relY = elementPos.y - containerPos.y - containerBorder.top;
- }
-
-
-
- var elementSize = goog.style.getSizeWithDisplay_(element);
- var spaceX = container.clientWidth - elementSize.width;
- var spaceY = container.clientHeight - elementSize.height;
- var scrollLeft = container.scrollLeft;
- var scrollTop = container.scrollTop;
- if (opt_center) {
-
- scrollLeft += relX - spaceX / 2;
- scrollTop += relY - spaceY / 2;
- } else {
-
-
-
-
-
-
-
- scrollLeft += Math.min(relX, Math.max(relX - spaceX, 0));
- scrollTop += Math.min(relY, Math.max(relY - spaceY, 0));
- }
- return new goog.math.Coordinate(scrollLeft, scrollTop);
- };
- goog.style.scrollIntoContainerView = function(
- element, opt_container, opt_center) {
- var container = opt_container || goog.dom.getDocumentScrollElement();
- var offset =
- goog.style.getContainerOffsetToScrollInto(element, container, opt_center);
- container.scrollLeft = offset.x;
- container.scrollTop = offset.y;
- };
- goog.style.getClientLeftTop = function(el) {
- return new goog.math.Coordinate(el.clientLeft, el.clientTop);
- };
- goog.style.getPageOffset = function(el) {
- var doc = goog.dom.getOwnerDocument(el);
-
- goog.asserts.assertObject(el, 'Parameter is required');
-
-
-
-
-
- var pos = new goog.math.Coordinate(0, 0);
- var viewportElement = goog.style.getClientViewportElement(doc);
- if (el == viewportElement) {
-
-
- return pos;
- }
- var box = goog.style.getBoundingClientRect_(el);
-
-
-
- var scrollCoord = goog.dom.getDomHelper(doc).getDocumentScroll();
- pos.x = box.left + scrollCoord.x;
- pos.y = box.top + scrollCoord.y;
- return pos;
- };
- goog.style.getPageOffsetLeft = function(el) {
- return goog.style.getPageOffset(el).x;
- };
- goog.style.getPageOffsetTop = function(el) {
- return goog.style.getPageOffset(el).y;
- };
- goog.style.getFramedPageOffset = function(el, relativeWin) {
- var position = new goog.math.Coordinate(0, 0);
-
-
- var currentWin = goog.dom.getWindow(goog.dom.getOwnerDocument(el));
-
-
- if (!goog.reflect.canAccessProperty(currentWin, 'parent')) {
- return position;
- }
- var currentEl = el;
- do {
-
-
-
-
- var offset = currentWin == relativeWin ?
- goog.style.getPageOffset(currentEl) :
- goog.style.getClientPositionForElement_(goog.asserts.assert(currentEl));
- position.x += offset.x;
- position.y += offset.y;
- } while (currentWin && currentWin != relativeWin &&
- currentWin != currentWin.parent &&
- (currentEl = currentWin.frameElement) &&
- (currentWin = currentWin.parent));
- return position;
- };
- goog.style.translateRectForAnotherFrame = function(rect, origBase, newBase) {
- if (origBase.getDocument() != newBase.getDocument()) {
- var body = origBase.getDocument().body;
- var pos = goog.style.getFramedPageOffset(body, newBase.getWindow());
-
- pos = goog.math.Coordinate.difference(pos, goog.style.getPageOffset(body));
- if (goog.userAgent.IE && !goog.userAgent.isDocumentModeOrHigher(9) &&
- !origBase.isCss1CompatMode()) {
- pos = goog.math.Coordinate.difference(pos, origBase.getDocumentScroll());
- }
- rect.left += pos.x;
- rect.top += pos.y;
- }
- };
- goog.style.getRelativePosition = function(a, b) {
- var ap = goog.style.getClientPosition(a);
- var bp = goog.style.getClientPosition(b);
- return new goog.math.Coordinate(ap.x - bp.x, ap.y - bp.y);
- };
- goog.style.getClientPositionForElement_ = function(el) {
- var box = goog.style.getBoundingClientRect_(el);
- return new goog.math.Coordinate(box.left, box.top);
- };
- goog.style.getClientPosition = function(el) {
- goog.asserts.assert(el);
- if (el.nodeType == goog.dom.NodeType.ELEMENT) {
- return goog.style.getClientPositionForElement_(
- (el));
- } else {
- var targetEvent = el.changedTouches ? el.changedTouches[0] : el;
- return new goog.math.Coordinate(targetEvent.clientX, targetEvent.clientY);
- }
- };
- goog.style.setPageOffset = function(el, x, opt_y) {
-
- var cur = goog.style.getPageOffset(el);
- if (x instanceof goog.math.Coordinate) {
- opt_y = x.y;
- x = x.x;
- }
-
-
-
- var dx = goog.asserts.assertNumber(x) - cur.x;
- var dy = Number(opt_y) - cur.y;
-
- goog.style.setPosition(
- el, (el).offsetLeft + dx,
- (el).offsetTop + dy);
- };
- goog.style.setSize = function(element, w, opt_h) {
- var h;
- if (w instanceof goog.math.Size) {
- h = w.height;
- w = w.width;
- } else {
- if (opt_h == undefined) {
- throw Error('missing height argument');
- }
- h = opt_h;
- }
- goog.style.setWidth(element, (w));
- goog.style.setHeight(element, h);
- };
- goog.style.getPixelStyleValue_ = function(value, round) {
- if (typeof value == 'number') {
- value = (round ? Math.round(value) : value) + 'px';
- }
- return value;
- };
- goog.style.setHeight = function(element, height) {
- element.style.height = goog.style.getPixelStyleValue_(height, true);
- };
- goog.style.setWidth = function(element, width) {
- element.style.width = goog.style.getPixelStyleValue_(width, true);
- };
- goog.style.getSize = function(element) {
- return goog.style.evaluateWithTemporaryDisplay_(
- goog.style.getSizeWithDisplay_, (element));
- };
- goog.style.evaluateWithTemporaryDisplay_ = function(fn, element) {
- if (goog.style.getStyle_(element, 'display') != 'none') {
- return fn(element);
- }
- var style = element.style;
- var originalDisplay = style.display;
- var originalVisibility = style.visibility;
- var originalPosition = style.position;
- style.visibility = 'hidden';
- style.position = 'absolute';
- style.display = 'inline';
- var retVal = fn(element);
- style.display = originalDisplay;
- style.position = originalPosition;
- style.visibility = originalVisibility;
- return retVal;
- };
- goog.style.getSizeWithDisplay_ = function(element) {
- var offsetWidth = (element).offsetWidth;
- var offsetHeight = (element).offsetHeight;
- var webkitOffsetsZero =
- goog.userAgent.WEBKIT && !offsetWidth && !offsetHeight;
- if ((!goog.isDef(offsetWidth) || webkitOffsetsZero) &&
- element.getBoundingClientRect) {
-
-
-
-
-
- var clientRect = goog.style.getBoundingClientRect_(element);
- return new goog.math.Size(
- clientRect.right - clientRect.left, clientRect.bottom - clientRect.top);
- }
- return new goog.math.Size(offsetWidth, offsetHeight);
- };
- goog.style.getTransformedSize = function(element) {
- if (!element.getBoundingClientRect) {
- return null;
- }
- var clientRect = goog.style.evaluateWithTemporaryDisplay_(
- goog.style.getBoundingClientRect_, element);
- return new goog.math.Size(
- clientRect.right - clientRect.left, clientRect.bottom - clientRect.top);
- };
- goog.style.getBounds = function(element) {
- var o = goog.style.getPageOffset(element);
- var s = goog.style.getSize(element);
- return new goog.math.Rect(o.x, o.y, s.width, s.height);
- };
- goog.style.toCamelCase = function(selector) {
- return goog.string.toCamelCase(String(selector));
- };
- goog.style.toSelectorCase = function(selector) {
- return goog.string.toSelectorCase(selector);
- };
- goog.style.getOpacity = function(el) {
- goog.asserts.assert(el);
- var style = el.style;
- var result = '';
- if ('opacity' in style) {
- result = style.opacity;
- } else if ('MozOpacity' in style) {
- result = style.MozOpacity;
- } else if ('filter' in style) {
- var match = style.filter.match(/alpha\(opacity=([\d.]+)\)/);
- if (match) {
- result = String(match[1] / 100);
- }
- }
- return result == '' ? result : Number(result);
- };
- goog.style.setOpacity = function(el, alpha) {
- goog.asserts.assert(el);
- var style = el.style;
- if ('opacity' in style) {
- style.opacity = alpha;
- } else if ('MozOpacity' in style) {
- style.MozOpacity = alpha;
- } else if ('filter' in style) {
-
- if (alpha === '') {
- style.filter = '';
- } else {
- style.filter = 'alpha(opacity=' + (Number(alpha) * 100) + ')';
- }
- }
- };
- goog.style.setTransparentBackgroundImage = function(el, src) {
- var style = el.style;
-
-
-
- if (goog.userAgent.IE && !goog.userAgent.isVersionOrHigher('8')) {
-
- style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(' +
- 'src="' + src + '", sizingMethod="crop")';
- } else {
-
-
- style.backgroundImage = 'url(' + src + ')';
- style.backgroundPosition = 'top left';
- style.backgroundRepeat = 'no-repeat';
- }
- };
- goog.style.clearTransparentBackgroundImage = function(el) {
- var style = el.style;
- if ('filter' in style) {
-
- style.filter = '';
- } else {
-
-
- style.backgroundImage = 'none';
- }
- };
- goog.style.showElement = function(el, display) {
- goog.style.setElementShown(el, display);
- };
- goog.style.setElementShown = function(el, isShown) {
- el.style.display = isShown ? '' : 'none';
- };
- goog.style.isElementShown = function(el) {
- return el.style.display != 'none';
- };
- goog.style.installStyles = function(stylesString, opt_node) {
- return goog.style.installSafeStyleSheet(
- goog.html.legacyconversions.safeStyleSheetFromString(stylesString),
- opt_node);
- };
- goog.style.installSafeStyleSheet = function(safeStyleSheet, opt_node) {
- var dh = goog.dom.getDomHelper(opt_node);
- var styleSheet = null;
-
-
- var doc = dh.getDocument();
- if (goog.userAgent.IE && doc.createStyleSheet) {
- styleSheet = doc.createStyleSheet();
- goog.style.setSafeStyleSheet(styleSheet, safeStyleSheet);
- } else {
- var head = dh.getElementsByTagNameAndClass(goog.dom.TagName.HEAD)[0];
-
-
- if (!head) {
- var body = dh.getElementsByTagNameAndClass(goog.dom.TagName.BODY)[0];
- head = dh.createDom(goog.dom.TagName.HEAD);
- body.parentNode.insertBefore(head, body);
- }
- styleSheet = dh.createDom(goog.dom.TagName.STYLE);
-
-
-
-
- goog.style.setSafeStyleSheet(styleSheet, safeStyleSheet);
- dh.appendChild(head, styleSheet);
- }
- return styleSheet;
- };
- goog.style.uninstallStyles = function(styleSheet) {
- var node = styleSheet.ownerNode || styleSheet.owningElement ||
- (styleSheet);
- goog.dom.removeNode(node);
- };
- goog.style.setStyles = function(element, stylesString) {
- goog.style.setSafeStyleSheet( (element),
- goog.html.legacyconversions.safeStyleSheetFromString(stylesString));
- };
- goog.style.setSafeStyleSheet = function(element, safeStyleSheet) {
- var stylesString = goog.html.SafeStyleSheet.unwrap(safeStyleSheet);
- if (goog.userAgent.IE && goog.isDef(element.cssText)) {
-
-
-
-
-
- element.cssText = stylesString;
- } else {
-
- element.innerHTML = stylesString;
- }
- };
- goog.style.setPreWrap = function(el) {
- var style = el.style;
- if (goog.userAgent.IE && !goog.userAgent.isVersionOrHigher('8')) {
- style.whiteSpace = 'pre';
- style.wordWrap = 'break-word';
- } else if (goog.userAgent.GECKO) {
- style.whiteSpace = '-moz-pre-wrap';
- } else {
- style.whiteSpace = 'pre-wrap';
- }
- };
- goog.style.setInlineBlock = function(el) {
- var style = el.style;
-
- style.position = 'relative';
- if (goog.userAgent.IE && !goog.userAgent.isVersionOrHigher('8')) {
-
-
- style.zoom = '1';
- style.display = 'inline';
- } else {
-
-
- style.display = 'inline-block';
- }
- };
- goog.style.isRightToLeft = function(el) {
- return 'rtl' == goog.style.getStyle_(el, 'direction');
- };
- goog.style.unselectableStyle_ = goog.userAgent.GECKO ?
- 'MozUserSelect' :
- goog.userAgent.WEBKIT || goog.userAgent.EDGE ? 'WebkitUserSelect' : null;
- goog.style.isUnselectable = function(el) {
- if (goog.style.unselectableStyle_) {
- return el.style[goog.style.unselectableStyle_].toLowerCase() == 'none';
- } else if (goog.userAgent.IE || goog.userAgent.OPERA) {
- return el.getAttribute('unselectable') == 'on';
- }
- return false;
- };
- goog.style.setUnselectable = function(el, unselectable, opt_noRecurse) {
-
- var descendants = !opt_noRecurse ? el.getElementsByTagName('*') : null;
- var name = goog.style.unselectableStyle_;
- if (name) {
-
-
- var value = unselectable ? 'none' : '';
-
- if (el.style) {
- el.style[name] = value;
- }
- if (descendants) {
- for (var i = 0, descendant; descendant = descendants[i]; i++) {
- if (descendant.style) {
- descendant.style[name] = value;
- }
- }
- }
- } else if (goog.userAgent.IE || goog.userAgent.OPERA) {
-
- var value = unselectable ? 'on' : '';
- el.setAttribute('unselectable', value);
- if (descendants) {
- for (var i = 0, descendant; descendant = descendants[i]; i++) {
- descendant.setAttribute('unselectable', value);
- }
- }
- }
- };
- goog.style.getBorderBoxSize = function(element) {
- return new goog.math.Size(
- (element).offsetWidth,
- (element).offsetHeight);
- };
- goog.style.setBorderBoxSize = function(element, size) {
- var doc = goog.dom.getOwnerDocument(element);
- var isCss1CompatMode = goog.dom.getDomHelper(doc).isCss1CompatMode();
- if (goog.userAgent.IE && !goog.userAgent.isVersionOrHigher('10') &&
- (!isCss1CompatMode || !goog.userAgent.isVersionOrHigher('8'))) {
- var style = element.style;
- if (isCss1CompatMode) {
- var paddingBox = goog.style.getPaddingBox(element);
- var borderBox = goog.style.getBorderBox(element);
- style.pixelWidth = size.width - borderBox.left - paddingBox.left -
- paddingBox.right - borderBox.right;
- style.pixelHeight = size.height - borderBox.top - paddingBox.top -
- paddingBox.bottom - borderBox.bottom;
- } else {
- style.pixelWidth = size.width;
- style.pixelHeight = size.height;
- }
- } else {
- goog.style.setBoxSizingSize_(element, size, 'border-box');
- }
- };
- goog.style.getContentBoxSize = function(element) {
- var doc = goog.dom.getOwnerDocument(element);
- var ieCurrentStyle = goog.userAgent.IE && element.currentStyle;
- if (ieCurrentStyle && goog.dom.getDomHelper(doc).isCss1CompatMode() &&
- ieCurrentStyle.width != 'auto' && ieCurrentStyle.height != 'auto' &&
- !ieCurrentStyle.boxSizing) {
-
-
- var width = goog.style.getIePixelValue_(
- element, (ieCurrentStyle.width), 'width',
- 'pixelWidth');
- var height = goog.style.getIePixelValue_(
- element, (ieCurrentStyle.height), 'height',
- 'pixelHeight');
- return new goog.math.Size(width, height);
- } else {
- var borderBoxSize = goog.style.getBorderBoxSize(element);
- var paddingBox = goog.style.getPaddingBox(element);
- var borderBox = goog.style.getBorderBox(element);
- return new goog.math.Size(
- borderBoxSize.width - borderBox.left - paddingBox.left -
- paddingBox.right - borderBox.right,
- borderBoxSize.height - borderBox.top - paddingBox.top -
- paddingBox.bottom - borderBox.bottom);
- }
- };
- goog.style.setContentBoxSize = function(element, size) {
- var doc = goog.dom.getOwnerDocument(element);
- var isCss1CompatMode = goog.dom.getDomHelper(doc).isCss1CompatMode();
- if (goog.userAgent.IE && !goog.userAgent.isVersionOrHigher('10') &&
- (!isCss1CompatMode || !goog.userAgent.isVersionOrHigher('8'))) {
- var style = element.style;
- if (isCss1CompatMode) {
- style.pixelWidth = size.width;
- style.pixelHeight = size.height;
- } else {
- var paddingBox = goog.style.getPaddingBox(element);
- var borderBox = goog.style.getBorderBox(element);
- style.pixelWidth = size.width + borderBox.left + paddingBox.left +
- paddingBox.right + borderBox.right;
- style.pixelHeight = size.height + borderBox.top + paddingBox.top +
- paddingBox.bottom + borderBox.bottom;
- }
- } else {
- goog.style.setBoxSizingSize_(element, size, 'content-box');
- }
- };
- goog.style.setBoxSizingSize_ = function(element, size, boxSizing) {
- var style = element.style;
- if (goog.userAgent.GECKO) {
- style.MozBoxSizing = boxSizing;
- } else if (goog.userAgent.WEBKIT) {
- style.WebkitBoxSizing = boxSizing;
- } else {
-
- style.boxSizing = boxSizing;
- }
-
-
- style.width = Math.max(size.width, 0) + 'px';
- style.height = Math.max(size.height, 0) + 'px';
- };
- goog.style.getIePixelValue_ = function(element, value, name, pixelName) {
-
-
- if (/^\d+px?$/.test(value)) {
- return parseInt(value, 10);
- } else {
- var oldStyleValue = element.style[name];
- var oldRuntimeValue = element.runtimeStyle[name];
-
- element.runtimeStyle[name] = element.currentStyle[name];
- element.style[name] = value;
- var pixelValue = element.style[pixelName];
-
- element.style[name] = oldStyleValue;
- element.runtimeStyle[name] = oldRuntimeValue;
- return +pixelValue;
- }
- };
- goog.style.getIePixelDistance_ = function(element, propName) {
- var value = goog.style.getCascadedStyle(element, propName);
- return value ?
- goog.style.getIePixelValue_(element, value, 'left', 'pixelLeft') :
- 0;
- };
- goog.style.getBox_ = function(element, stylePrefix) {
- if (goog.userAgent.IE) {
- var left = goog.style.getIePixelDistance_(element, stylePrefix + 'Left');
- var right = goog.style.getIePixelDistance_(element, stylePrefix + 'Right');
- var top = goog.style.getIePixelDistance_(element, stylePrefix + 'Top');
- var bottom =
- goog.style.getIePixelDistance_(element, stylePrefix + 'Bottom');
- return new goog.math.Box(top, right, bottom, left);
- } else {
-
- var left = goog.style.getComputedStyle(element, stylePrefix + 'Left');
- var right = goog.style.getComputedStyle(element, stylePrefix + 'Right');
- var top = goog.style.getComputedStyle(element, stylePrefix + 'Top');
- var bottom = goog.style.getComputedStyle(element, stylePrefix + 'Bottom');
-
-
- return new goog.math.Box(
- parseFloat(top), parseFloat(right), parseFloat(bottom),
- parseFloat(left));
- }
- };
- goog.style.getPaddingBox = function(element) {
- return goog.style.getBox_(element, 'padding');
- };
- goog.style.getMarginBox = function(element) {
- return goog.style.getBox_(element, 'margin');
- };
- goog.style.ieBorderWidthKeywords_ = {
- 'thin': 2,
- 'medium': 4,
- 'thick': 6
- };
- goog.style.getIePixelBorder_ = function(element, prop) {
- if (goog.style.getCascadedStyle(element, prop + 'Style') == 'none') {
- return 0;
- }
- var width = goog.style.getCascadedStyle(element, prop + 'Width');
- if (width in goog.style.ieBorderWidthKeywords_) {
- return goog.style.ieBorderWidthKeywords_[width];
- }
- return goog.style.getIePixelValue_(element, width, 'left', 'pixelLeft');
- };
- goog.style.getBorderBox = function(element) {
- if (goog.userAgent.IE && !goog.userAgent.isDocumentModeOrHigher(9)) {
- var left = goog.style.getIePixelBorder_(element, 'borderLeft');
- var right = goog.style.getIePixelBorder_(element, 'borderRight');
- var top = goog.style.getIePixelBorder_(element, 'borderTop');
- var bottom = goog.style.getIePixelBorder_(element, 'borderBottom');
- return new goog.math.Box(top, right, bottom, left);
- } else {
-
- var left = goog.style.getComputedStyle(element, 'borderLeftWidth');
- var right = goog.style.getComputedStyle(element, 'borderRightWidth');
- var top = goog.style.getComputedStyle(element, 'borderTopWidth');
- var bottom = goog.style.getComputedStyle(element, 'borderBottomWidth');
- return new goog.math.Box(
- parseFloat(top), parseFloat(right), parseFloat(bottom),
- parseFloat(left));
- }
- };
- goog.style.getFontFamily = function(el) {
- var doc = goog.dom.getOwnerDocument(el);
- var font = '';
-
-
- if (doc.body.createTextRange && goog.dom.contains(doc, el)) {
- var range = doc.body.createTextRange();
- range.moveToElementText(el);
- try {
- font = range.queryCommandValue('FontName');
- } catch (e) {
-
-
-
-
-
- font = '';
- }
- }
- if (!font) {
-
-
- font = goog.style.getStyle_(el, 'fontFamily');
- }
-
-
-
- var fontsArray = font.split(',');
- if (fontsArray.length > 1) font = fontsArray[0];
-
-
-
- return goog.string.stripQuotes(font, '"\'');
- };
- goog.style.lengthUnitRegex_ = /[^\d]+$/;
- goog.style.getLengthUnits = function(value) {
- var units = value.match(goog.style.lengthUnitRegex_);
- return units && units[0] || null;
- };
- goog.style.ABSOLUTE_CSS_LENGTH_UNITS_ = {
- 'cm': 1,
- 'in': 1,
- 'mm': 1,
- 'pc': 1,
- 'pt': 1
- };
- goog.style.CONVERTIBLE_RELATIVE_CSS_UNITS_ = {
- 'em': 1,
- 'ex': 1
- };
- goog.style.getFontSize = function(el) {
- var fontSize = goog.style.getStyle_(el, 'fontSize');
- var sizeUnits = goog.style.getLengthUnits(fontSize);
- if (fontSize && 'px' == sizeUnits) {
-
-
-
-
-
- return parseInt(fontSize, 10);
- }
-
-
-
-
- if (goog.userAgent.IE) {
- if (String(sizeUnits) in goog.style.ABSOLUTE_CSS_LENGTH_UNITS_) {
- return goog.style.getIePixelValue_(el, fontSize, 'left', 'pixelLeft');
- } else if (
- el.parentNode && el.parentNode.nodeType == goog.dom.NodeType.ELEMENT &&
- String(sizeUnits) in goog.style.CONVERTIBLE_RELATIVE_CSS_UNITS_) {
-
-
-
-
- var parentElement = (el.parentNode);
- var parentSize = goog.style.getStyle_(parentElement, 'fontSize');
- return goog.style.getIePixelValue_(
- parentElement, fontSize == parentSize ? '1em' : fontSize, 'left',
- 'pixelLeft');
- }
- }
-
-
-
-
-
- var sizeElement = goog.dom.createDom(goog.dom.TagName.SPAN, {
- 'style': 'visibility:hidden;position:absolute;' +
- 'line-height:0;padding:0;margin:0;border:0;height:1em;'
- });
- goog.dom.appendChild(el, sizeElement);
- fontSize = sizeElement.offsetHeight;
- goog.dom.removeNode(sizeElement);
- return fontSize;
- };
- goog.style.parseStyleAttribute = function(value) {
- var result = {};
- goog.array.forEach(value.split(/\s*;\s*/), function(pair) {
- var keyValue = pair.match(/\s*([\w-]+)\s*\:(.+)/);
- if (keyValue) {
- var styleName = keyValue[1];
- var styleValue = goog.string.trim(keyValue[2]);
- result[goog.string.toCamelCase(styleName.toLowerCase())] = styleValue;
- }
- });
- return result;
- };
- goog.style.toStyleAttribute = function(obj) {
- var buffer = [];
- goog.object.forEach(obj, function(value, key) {
- buffer.push(goog.string.toSelectorCase(key), ':', value, ';');
- });
- return buffer.join('');
- };
- goog.style.setFloat = function(el, value) {
- el.style[goog.userAgent.IE ? 'styleFloat' : 'cssFloat'] = value;
- };
- goog.style.getFloat = function(el) {
- return el.style[goog.userAgent.IE ? 'styleFloat' : 'cssFloat'] || '';
- };
- goog.style.getScrollbarWidth = function(opt_className) {
-
-
-
-
- var outerDiv = goog.dom.createElement(goog.dom.TagName.DIV);
- if (opt_className) {
- outerDiv.className = opt_className;
- }
- outerDiv.style.cssText = 'overflow:auto;' +
- 'position:absolute;top:0;width:100px;height:100px';
- var innerDiv = goog.dom.createElement(goog.dom.TagName.DIV);
- goog.style.setSize(innerDiv, '200px', '200px');
- outerDiv.appendChild(innerDiv);
- goog.dom.appendChild(goog.dom.getDocument().body, outerDiv);
- var width = outerDiv.offsetWidth - outerDiv.clientWidth;
- goog.dom.removeNode(outerDiv);
- return width;
- };
- goog.style.MATRIX_TRANSLATION_REGEX_ = new RegExp(
- 'matrix\\([0-9\\.\\-]+, [0-9\\.\\-]+, ' +
- '[0-9\\.\\-]+, [0-9\\.\\-]+, ' +
- '([0-9\\.\\-]+)p?x?, ([0-9\\.\\-]+)p?x?\\)');
- goog.style.getCssTranslation = function(element) {
- var transform = goog.style.getComputedTransform(element);
- if (!transform) {
- return new goog.math.Coordinate(0, 0);
- }
- var matches = transform.match(goog.style.MATRIX_TRANSLATION_REGEX_);
- if (!matches) {
- return new goog.math.Coordinate(0, 0);
- }
- return new goog.math.Coordinate(
- parseFloat(matches[1]), parseFloat(matches[2]));
- };
|