import {isBlank, Type} from '../../src/facade/lang'; var _DOM: DomAdapter = null; export function getDOM() { return _DOM; } export function setDOM(adapter: DomAdapter) { _DOM = adapter; } export function setRootDomAdapter(adapter: DomAdapter) { if (isBlank(_DOM)) { _DOM = adapter; } } /* tslint:disable:requireParameterType */ /** * Provides DOM operations in an environment-agnostic way. */ export abstract class DomAdapter { public xhrType: Type = null; abstract hasProperty(element, name: string): boolean; abstract setProperty(el: Element, name: string, value: any); abstract getProperty(el: Element, name: string): any; abstract invoke(el: Element, methodName: string, args: any[]): any; abstract logError(error); abstract log(error); abstract logGroup(error); abstract logGroupEnd(); /** @deprecated */ getXHR(): Type { return this.xhrType; } /** * Maps attribute names to their corresponding property names for cases * where attribute name doesn't match property name. */ get attrToPropMap(): {[key: string]: string} { return this._attrToPropMap; }; set attrToPropMap(value: {[key: string]: string}) { this._attrToPropMap = value; }; /** @internal */ _attrToPropMap: {[key: string]: string}; abstract parse(templateHtml: string); abstract query(selector: string): any; abstract querySelector(el, selector: string): HTMLElement; abstract querySelectorAll(el, selector: string): any[]; abstract on(el, evt, listener); abstract onAndCancel(el, evt, listener): Function; abstract dispatchEvent(el, evt); abstract createMouseEvent(eventType): any; abstract createEvent(eventType: string): any; abstract preventDefault(evt); abstract isPrevented(evt): boolean; abstract getInnerHTML(el): string; /** Returns content if el is a