export class BrowserDomAdapter { static query(selector: string): any { return document.querySelector(selector); } static querySelector(el: any /** TODO #9100 */, selector: string): HTMLElement { return el.querySelector(selector); } static onAndCancel( el: any /** TODO #9100 */, evt: any /** TODO #9100 */, listener: any /** TODO #9100 */): Function { el.addEventListener(evt, listener, false); // Needed to follow Dart's subscription semantic, until fix of // https://code.google.com/p/dart/issues/detail?id=17406 return () => { el.removeEventListener(evt, listener, false); }; } static addClass(element: any /** TODO #9100 */, className: string) { element.classList.add(className); } static removeClass(element: any /** TODO #9100 */, className: string) { element.classList.remove(className); } static hasClass(element: any /** TODO #9100 */, className: string): boolean { return element.classList.contains(className); } static attributeMap(element: any /** TODO #9100 */): Map { var res = new Map(); var elAttrs = element.attributes; for (var i = 0; i < elAttrs.length; i++) { var attrib = elAttrs[i]; res.set(attrib.name, attrib.value); } return res; } static setStyle(element: any /** TODO #9100 */, styleName: string, styleValue: string) { element.style[styleName] = styleValue; } static removeStyle(element: any /** TODO #9100 */, stylename: string) { element.style[stylename] = null; } static getStyle(element: any /** TODO #9100 */, stylename: string): string { return element.style[stylename]; } static hasStyle(element: any /** TODO #9100 */, styleName: string, styleValue: string = null): boolean { var value = this.getStyle(element, styleName) || ''; return styleValue ? value === styleValue : value.length > 0; } static hasAttribute(element: any /** TODO #9100 */, attribute: string): boolean { return element.hasAttribute(attribute); } static getAttribute(element: any /** TODO #9100 */, attribute: string): string { return element.getAttribute(attribute); } static setAttribute(element: any /** TODO #9100 */, name: string, value: string) { element.setAttribute(name, value); } static removeAttribute(element: any /** TODO #9100 */, attribute: string) { element.removeAttribute(attribute); } static getLocation(): Location { return window.location; } static defaultDoc(): HTMLDocument { return document; } }