chore: convert dom module to typescript
This commit is contained in:
parent
555dd93ed9
commit
f302f70330
@ -1,397 +0,0 @@
|
|||||||
import {List, MapWrapper, ListWrapper} from 'angular2/src/facade/collection';
|
|
||||||
import {isBlank, isPresent} from 'angular2/src/facade/lang';
|
|
||||||
import {setRootDomAdapter} from './dom_adapter';
|
|
||||||
import {GenericBrowserDomAdapter} from './generic_browser_adapter';
|
|
||||||
|
|
||||||
var _attrToPropMap = {
|
|
||||||
'innerHtml': 'innerHTML',
|
|
||||||
'readonly': 'readOnly',
|
|
||||||
'tabindex': 'tabIndex'
|
|
||||||
};
|
|
||||||
|
|
||||||
const DOM_KEY_LOCATION_NUMPAD = 3;
|
|
||||||
|
|
||||||
// Map to convert some key or keyIdentifier values to what will be returned by getEventKey
|
|
||||||
var _keyMap = {
|
|
||||||
// The following values are here for cross-browser compatibility and to match the W3C standard
|
|
||||||
// cf http://www.w3.org/TR/DOM-Level-3-Events-key/
|
|
||||||
'\b': 'Backspace',
|
|
||||||
'\t': 'Tab',
|
|
||||||
'\x7F': 'Delete',
|
|
||||||
'\x1B': 'Escape',
|
|
||||||
'Del': 'Delete',
|
|
||||||
'Esc': 'Escape',
|
|
||||||
'Left': 'ArrowLeft',
|
|
||||||
'Right': 'ArrowRight',
|
|
||||||
'Up': 'ArrowUp',
|
|
||||||
'Down':'ArrowDown',
|
|
||||||
'Menu': 'ContextMenu',
|
|
||||||
'Scroll' : 'ScrollLock',
|
|
||||||
'Win': 'OS'
|
|
||||||
};
|
|
||||||
|
|
||||||
// There is a bug in Chrome for numeric keypad keys:
|
|
||||||
// https://code.google.com/p/chromium/issues/detail?id=155654
|
|
||||||
// 1, 2, 3 ... are reported as A, B, C ...
|
|
||||||
var _chromeNumKeyPadMap = {
|
|
||||||
'A': '1',
|
|
||||||
'B': '2',
|
|
||||||
'C': '3',
|
|
||||||
'D': '4',
|
|
||||||
'E': '5',
|
|
||||||
'F': '6',
|
|
||||||
'G': '7',
|
|
||||||
'H': '8',
|
|
||||||
'I': '9',
|
|
||||||
'J': '*',
|
|
||||||
'K': '+',
|
|
||||||
'M': '-',
|
|
||||||
'N': '.',
|
|
||||||
'O': '/',
|
|
||||||
'\x60': '0',
|
|
||||||
'\x90': 'NumLock'
|
|
||||||
};
|
|
||||||
|
|
||||||
export class BrowserDomAdapter extends GenericBrowserDomAdapter {
|
|
||||||
static makeCurrent() {
|
|
||||||
setRootDomAdapter(new BrowserDomAdapter());
|
|
||||||
}
|
|
||||||
|
|
||||||
logError(error) {
|
|
||||||
window.console.error(error);
|
|
||||||
}
|
|
||||||
|
|
||||||
get attrToPropMap() {
|
|
||||||
return _attrToPropMap;
|
|
||||||
}
|
|
||||||
|
|
||||||
query(selector:string) {
|
|
||||||
return document.querySelector(selector);
|
|
||||||
}
|
|
||||||
querySelector(el, selector:string):Node {
|
|
||||||
return el.querySelector(selector);
|
|
||||||
}
|
|
||||||
querySelectorAll(el, selector:string):NodeList {
|
|
||||||
return el.querySelectorAll(selector);
|
|
||||||
}
|
|
||||||
on(el, evt, listener) {
|
|
||||||
el.addEventListener(evt, listener, false);
|
|
||||||
}
|
|
||||||
onAndCancel(el, evt, listener): 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);};
|
|
||||||
}
|
|
||||||
dispatchEvent(el, evt) {
|
|
||||||
el.dispatchEvent(evt);
|
|
||||||
}
|
|
||||||
createMouseEvent(eventType) {
|
|
||||||
var evt = new MouseEvent(eventType);
|
|
||||||
evt.initEvent(eventType, true, true);
|
|
||||||
return evt;
|
|
||||||
}
|
|
||||||
createEvent(eventType) {
|
|
||||||
return new Event(eventType, true);
|
|
||||||
}
|
|
||||||
getInnerHTML(el) {
|
|
||||||
return el.innerHTML;
|
|
||||||
}
|
|
||||||
getOuterHTML(el) {
|
|
||||||
return el.outerHTML;
|
|
||||||
}
|
|
||||||
nodeName(node:Node):string {
|
|
||||||
return node.nodeName;
|
|
||||||
}
|
|
||||||
nodeValue(node:Node):string {
|
|
||||||
return node.nodeValue;
|
|
||||||
}
|
|
||||||
type(node:Node) {
|
|
||||||
return node.type;
|
|
||||||
}
|
|
||||||
content(node:HTMLElement):Node {
|
|
||||||
if (this.hasProperty(node, "content")) {
|
|
||||||
return node.content;
|
|
||||||
} else {
|
|
||||||
return node;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
firstChild(el):Node {
|
|
||||||
return el.firstChild;
|
|
||||||
}
|
|
||||||
nextSibling(el):Node {
|
|
||||||
return el.nextSibling;
|
|
||||||
}
|
|
||||||
parentElement(el) {
|
|
||||||
return el.parentElement;
|
|
||||||
}
|
|
||||||
childNodes(el):NodeList {
|
|
||||||
return el.childNodes;
|
|
||||||
}
|
|
||||||
childNodesAsList(el):List {
|
|
||||||
var childNodes = el.childNodes;
|
|
||||||
var res = ListWrapper.createFixedSize(childNodes.length);
|
|
||||||
for (var i=0; i<childNodes.length; i++) {
|
|
||||||
res[i] = childNodes[i];
|
|
||||||
}
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
clearNodes(el) {
|
|
||||||
for (var i = 0; i < el.childNodes.length; i++) {
|
|
||||||
this.remove(el.childNodes[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
appendChild(el, node) {
|
|
||||||
el.appendChild(node);
|
|
||||||
}
|
|
||||||
removeChild(el, node) {
|
|
||||||
el.removeChild(node);
|
|
||||||
}
|
|
||||||
replaceChild(el: Node, newChild, oldChild) {
|
|
||||||
el.replaceChild(newChild, oldChild);
|
|
||||||
}
|
|
||||||
remove(el) {
|
|
||||||
var parent = el.parentNode;
|
|
||||||
parent.removeChild(el);
|
|
||||||
return el;
|
|
||||||
}
|
|
||||||
insertBefore(el, node) {
|
|
||||||
el.parentNode.insertBefore(node, el);
|
|
||||||
}
|
|
||||||
insertAllBefore(el, nodes) {
|
|
||||||
ListWrapper.forEach(nodes, (n) => {
|
|
||||||
el.parentNode.insertBefore(n, el);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
insertAfter(el, node) {
|
|
||||||
el.parentNode.insertBefore(node, el.nextSibling);
|
|
||||||
}
|
|
||||||
setInnerHTML(el, value) {
|
|
||||||
el.innerHTML = value;
|
|
||||||
}
|
|
||||||
getText(el) {
|
|
||||||
return el.textContent;
|
|
||||||
}
|
|
||||||
// TODO(vicb): removed Element type because it does not support StyleElement
|
|
||||||
setText(el, value:string) {
|
|
||||||
el.textContent = value;
|
|
||||||
}
|
|
||||||
getValue(el) {
|
|
||||||
return el.value;
|
|
||||||
}
|
|
||||||
setValue(el, value:string) {
|
|
||||||
el.value = value;
|
|
||||||
}
|
|
||||||
getChecked(el) {
|
|
||||||
return el.checked;
|
|
||||||
}
|
|
||||||
setChecked(el, value:boolean) {
|
|
||||||
el.checked = value;
|
|
||||||
}
|
|
||||||
createTemplate(html) {
|
|
||||||
var t = document.createElement('template');
|
|
||||||
t.innerHTML = html;
|
|
||||||
return t;
|
|
||||||
}
|
|
||||||
createElement(tagName, doc=document) {
|
|
||||||
return doc.createElement(tagName);
|
|
||||||
}
|
|
||||||
createTextNode(text: string, doc=document) {
|
|
||||||
return doc.createTextNode(text);
|
|
||||||
}
|
|
||||||
createScriptTag(attrName:string, attrValue:string, doc=document) {
|
|
||||||
var el = doc.createElement('SCRIPT');
|
|
||||||
el.setAttribute(attrName, attrValue);
|
|
||||||
return el;
|
|
||||||
}
|
|
||||||
createStyleElement(css:string, doc=document):HTMLStyleElement {
|
|
||||||
var style = doc.createElement('STYLE');
|
|
||||||
style.innerText = css;
|
|
||||||
return style;
|
|
||||||
}
|
|
||||||
createShadowRoot(el:HTMLElement): ShadowRoot {
|
|
||||||
return el.createShadowRoot();
|
|
||||||
}
|
|
||||||
getShadowRoot(el:HTMLElement): ShadowRoot {
|
|
||||||
return el.shadowRoot;
|
|
||||||
}
|
|
||||||
getHost(el:HTMLElement): HTMLElement {
|
|
||||||
return el.host;
|
|
||||||
}
|
|
||||||
clone(node:Node) {
|
|
||||||
return node.cloneNode(true);
|
|
||||||
}
|
|
||||||
hasProperty(element, name:string) {
|
|
||||||
return name in element;
|
|
||||||
}
|
|
||||||
getElementsByClassName(element, name:string) {
|
|
||||||
return element.getElementsByClassName(name);
|
|
||||||
}
|
|
||||||
getElementsByTagName(element, name:string) {
|
|
||||||
return element.getElementsByTagName(name);
|
|
||||||
}
|
|
||||||
classList(element):List {
|
|
||||||
return Array.prototype.slice.call(element.classList, 0);
|
|
||||||
}
|
|
||||||
addClass(element, classname:string) {
|
|
||||||
element.classList.add(classname);
|
|
||||||
}
|
|
||||||
removeClass(element, classname:string) {
|
|
||||||
element.classList.remove(classname);
|
|
||||||
}
|
|
||||||
hasClass(element, classname:string) {
|
|
||||||
return element.classList.contains(classname);
|
|
||||||
}
|
|
||||||
setStyle(element, stylename:string, stylevalue:string) {
|
|
||||||
element.style[stylename] = stylevalue;
|
|
||||||
}
|
|
||||||
removeStyle(element, stylename:string) {
|
|
||||||
element.style[stylename] = null;
|
|
||||||
}
|
|
||||||
getStyle(element, stylename:string) {
|
|
||||||
return element.style[stylename];
|
|
||||||
}
|
|
||||||
tagName(element):string {
|
|
||||||
return element.tagName;
|
|
||||||
}
|
|
||||||
attributeMap(element) {
|
|
||||||
var res = MapWrapper.create();
|
|
||||||
var elAttrs = element.attributes;
|
|
||||||
for (var i = 0; i < elAttrs.length; i++) {
|
|
||||||
var attrib = elAttrs[i];
|
|
||||||
MapWrapper.set(res, attrib.name, attrib.value);
|
|
||||||
}
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
hasAttribute(element, attribute:string) {
|
|
||||||
return element.hasAttribute(attribute);
|
|
||||||
}
|
|
||||||
getAttribute(element, attribute:string) {
|
|
||||||
return element.getAttribute(attribute);
|
|
||||||
}
|
|
||||||
setAttribute(element, name:string, value:string) {
|
|
||||||
element.setAttribute(name, value);
|
|
||||||
}
|
|
||||||
removeAttribute(element, attribute:string) {
|
|
||||||
return element.removeAttribute(attribute);
|
|
||||||
}
|
|
||||||
templateAwareRoot(el) {
|
|
||||||
return this.isTemplateElement(el) ? this.content(el) : el;
|
|
||||||
}
|
|
||||||
createHtmlDocument() {
|
|
||||||
return document.implementation.createHTMLDocument('fakeTitle');
|
|
||||||
}
|
|
||||||
defaultDoc() {
|
|
||||||
return document;
|
|
||||||
}
|
|
||||||
getBoundingClientRect(el) {
|
|
||||||
return el.getBoundingClientRect();
|
|
||||||
}
|
|
||||||
getTitle() {
|
|
||||||
return document.title;
|
|
||||||
}
|
|
||||||
setTitle(newTitle:string) {
|
|
||||||
document.title = newTitle;
|
|
||||||
}
|
|
||||||
elementMatches(n, selector:string):boolean {
|
|
||||||
return n instanceof HTMLElement && n.matches(selector);
|
|
||||||
}
|
|
||||||
isTemplateElement(el:any):boolean {
|
|
||||||
return el instanceof HTMLElement && el.nodeName == "TEMPLATE";
|
|
||||||
}
|
|
||||||
isTextNode(node:Node):boolean {
|
|
||||||
return node.nodeType === Node.TEXT_NODE;
|
|
||||||
}
|
|
||||||
isCommentNode(node:Node):boolean {
|
|
||||||
return node.nodeType === Node.COMMENT_NODE;
|
|
||||||
}
|
|
||||||
isElementNode(node:Node):boolean {
|
|
||||||
return node.nodeType === Node.ELEMENT_NODE;
|
|
||||||
}
|
|
||||||
hasShadowRoot(node):boolean {
|
|
||||||
return node instanceof HTMLElement && isPresent(node.shadowRoot);
|
|
||||||
}
|
|
||||||
isShadowRoot(node):boolean {
|
|
||||||
return node instanceof ShadowRoot;
|
|
||||||
}
|
|
||||||
importIntoDoc(node:Node) {
|
|
||||||
var result = document.importNode(node, true);
|
|
||||||
// Workaround WebKit https://bugs.webkit.org/show_bug.cgi?id=137619
|
|
||||||
if (this.isTemplateElement(result) &&
|
|
||||||
!this.content(result).childNodes.length && this.content(node).childNodes.length) {
|
|
||||||
var childNodes = this.content(node).childNodes;
|
|
||||||
for (var i = 0; i < childNodes.length; ++i) {
|
|
||||||
this.content(result).appendChild(
|
|
||||||
this.importIntoDoc(childNodes[i]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
isPageRule(rule): boolean {
|
|
||||||
return rule.type === CSSRule.PAGE_RULE;
|
|
||||||
}
|
|
||||||
isStyleRule(rule): boolean {
|
|
||||||
return rule.type === CSSRule.STYLE_RULE;
|
|
||||||
}
|
|
||||||
isMediaRule(rule): boolean {
|
|
||||||
return rule.type === CSSRule.MEDIA_RULE;
|
|
||||||
}
|
|
||||||
isKeyframesRule(rule): boolean {
|
|
||||||
return rule.type === CSSRule.KEYFRAMES_RULE;
|
|
||||||
}
|
|
||||||
getHref(el:Element): string {
|
|
||||||
return el.href;
|
|
||||||
}
|
|
||||||
getEventKey(event): string {
|
|
||||||
var key = event.key;
|
|
||||||
if (isBlank(key)) {
|
|
||||||
key = event.keyIdentifier;
|
|
||||||
// keyIdentifier is defined in the old draft of DOM Level 3 Events implemented by Chrome and Safari
|
|
||||||
// cf http://www.w3.org/TR/2007/WD-DOM-Level-3-Events-20071221/events.html#Events-KeyboardEvents-Interfaces
|
|
||||||
if (isBlank(key)) {
|
|
||||||
return 'Unidentified';
|
|
||||||
}
|
|
||||||
if (key.startsWith('U+')) {
|
|
||||||
key = String.fromCharCode(parseInt(key.substring(2), 16));
|
|
||||||
if (event.location === DOM_KEY_LOCATION_NUMPAD && _chromeNumKeyPadMap.hasOwnProperty(key)) {
|
|
||||||
// There is a bug in Chrome for numeric keypad keys:
|
|
||||||
// https://code.google.com/p/chromium/issues/detail?id=155654
|
|
||||||
// 1, 2, 3 ... are reported as A, B, C ...
|
|
||||||
key = _chromeNumKeyPadMap[key];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (_keyMap.hasOwnProperty(key)) {
|
|
||||||
key = _keyMap[key];
|
|
||||||
}
|
|
||||||
return key;
|
|
||||||
}
|
|
||||||
getGlobalEventTarget(target:string) {
|
|
||||||
if (target == "window") {
|
|
||||||
return window;
|
|
||||||
} else if (target == "document") {
|
|
||||||
return document;
|
|
||||||
} else if (target == "body") {
|
|
||||||
return document.body;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
getHistory() {
|
|
||||||
return window.history;
|
|
||||||
}
|
|
||||||
getLocation() {
|
|
||||||
return window.location;
|
|
||||||
}
|
|
||||||
getBaseHref() {
|
|
||||||
return relativePath(document.baseURI);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// based on urlUtils.js in AngularJS 1
|
|
||||||
var urlParsingNode = null;
|
|
||||||
function relativePath(url) {
|
|
||||||
if (isBlank(urlParsingNode)) {
|
|
||||||
urlParsingNode = document.createElement("a");
|
|
||||||
}
|
|
||||||
urlParsingNode.setAttribute('href', url);
|
|
||||||
return (urlParsingNode.pathname.charAt(0) === '/') ? urlParsingNode.pathname : '/' + urlParsingNode.pathname;
|
|
||||||
}
|
|
385
modules/angular2/src/dom/browser_adapter.ts
Normal file
385
modules/angular2/src/dom/browser_adapter.ts
Normal file
@ -0,0 +1,385 @@
|
|||||||
|
import {List, MapWrapper, ListWrapper} from 'angular2/src/facade/collection';
|
||||||
|
import {isBlank, isPresent} from 'angular2/src/facade/lang';
|
||||||
|
import {setRootDomAdapter} from './dom_adapter';
|
||||||
|
import {GenericBrowserDomAdapter} from './generic_browser_adapter';
|
||||||
|
|
||||||
|
// HACK: workaround for Traceur behavior.
|
||||||
|
// It expects all transpiled modules to contain this marker.
|
||||||
|
// TODO: remove this when we no longer use traceur
|
||||||
|
export var __esModule = true;
|
||||||
|
|
||||||
|
var _attrToPropMap = {'innerHtml': 'innerHTML', 'readonly': 'readOnly', 'tabindex': 'tabIndex'};
|
||||||
|
|
||||||
|
const DOM_KEY_LOCATION_NUMPAD = 3;
|
||||||
|
|
||||||
|
// Map to convert some key or keyIdentifier values to what will be returned by getEventKey
|
||||||
|
var _keyMap = {
|
||||||
|
// The following values are here for cross-browser compatibility and to match the W3C standard
|
||||||
|
// cf http://www.w3.org/TR/DOM-Level-3-Events-key/
|
||||||
|
'\b': 'Backspace',
|
||||||
|
'\t': 'Tab',
|
||||||
|
'\x7F': 'Delete',
|
||||||
|
'\x1B': 'Escape',
|
||||||
|
'Del': 'Delete',
|
||||||
|
'Esc': 'Escape',
|
||||||
|
'Left': 'ArrowLeft',
|
||||||
|
'Right': 'ArrowRight',
|
||||||
|
'Up': 'ArrowUp',
|
||||||
|
'Down': 'ArrowDown',
|
||||||
|
'Menu': 'ContextMenu',
|
||||||
|
'Scroll': 'ScrollLock',
|
||||||
|
'Win': 'OS'
|
||||||
|
};
|
||||||
|
|
||||||
|
// There is a bug in Chrome for numeric keypad keys:
|
||||||
|
// https://code.google.com/p/chromium/issues/detail?id=155654
|
||||||
|
// 1, 2, 3 ... are reported as A, B, C ...
|
||||||
|
var _chromeNumKeyPadMap = {
|
||||||
|
'A': '1',
|
||||||
|
'B': '2',
|
||||||
|
'C': '3',
|
||||||
|
'D': '4',
|
||||||
|
'E': '5',
|
||||||
|
'F': '6',
|
||||||
|
'G': '7',
|
||||||
|
'H': '8',
|
||||||
|
'I': '9',
|
||||||
|
'J': '*',
|
||||||
|
'K': '+',
|
||||||
|
'M': '-',
|
||||||
|
'N': '.',
|
||||||
|
'O': '/',
|
||||||
|
'\x60': '0',
|
||||||
|
'\x90': 'NumLock'
|
||||||
|
};
|
||||||
|
|
||||||
|
export class BrowserDomAdapter extends GenericBrowserDomAdapter {
|
||||||
|
static makeCurrent() { setRootDomAdapter(new BrowserDomAdapter()); }
|
||||||
|
|
||||||
|
logError(error) { window.console.error(error); }
|
||||||
|
|
||||||
|
get attrToPropMap(): any { return _attrToPropMap; }
|
||||||
|
|
||||||
|
query(selector: string): any { return document.querySelector(selector); }
|
||||||
|
querySelector(el, selector: string): Node { return el.querySelector(selector); }
|
||||||
|
querySelectorAll(el, selector: string): List<any> { return el.querySelectorAll(selector); }
|
||||||
|
on(el, evt, listener) { el.addEventListener(evt, listener, false); }
|
||||||
|
onAndCancel(el, evt, listener): 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);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
dispatchEvent(el, evt) {
|
||||||
|
el.dispatchEvent(evt);
|
||||||
|
}
|
||||||
|
createMouseEvent(eventType: string): MouseEvent {
|
||||||
|
var evt: MouseEvent = new MouseEvent(eventType);
|
||||||
|
evt.initEvent(eventType, true, true);
|
||||||
|
return evt;
|
||||||
|
}
|
||||||
|
createEvent(eventType): Event {
|
||||||
|
return new Event(eventType, true);
|
||||||
|
}
|
||||||
|
getInnerHTML(el) {
|
||||||
|
return el.innerHTML;
|
||||||
|
}
|
||||||
|
getOuterHTML(el) {
|
||||||
|
return el.outerHTML;
|
||||||
|
}
|
||||||
|
nodeName(node: Node): string {
|
||||||
|
return node.nodeName;
|
||||||
|
}
|
||||||
|
nodeValue(node: Node): string {
|
||||||
|
return node.nodeValue;
|
||||||
|
}
|
||||||
|
type(node: HTMLInputElement): string {
|
||||||
|
return node.type;
|
||||||
|
}
|
||||||
|
content(node: Node): Node {
|
||||||
|
if (this.hasProperty(node, "content")) {
|
||||||
|
return (<any>node).content;
|
||||||
|
} else {
|
||||||
|
return node;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
firstChild(el): Node {
|
||||||
|
return el.firstChild;
|
||||||
|
}
|
||||||
|
nextSibling(el): Node {
|
||||||
|
return el.nextSibling;
|
||||||
|
}
|
||||||
|
parentElement(el) {
|
||||||
|
return el.parentElement;
|
||||||
|
}
|
||||||
|
childNodes(el): List<Node> {
|
||||||
|
return el.childNodes;
|
||||||
|
}
|
||||||
|
childNodesAsList(el): List<any> {
|
||||||
|
var childNodes = el.childNodes;
|
||||||
|
var res = ListWrapper.createFixedSize(childNodes.length);
|
||||||
|
for (var i = 0; i < childNodes.length; i++) {
|
||||||
|
res[i] = childNodes[i];
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
clearNodes(el) {
|
||||||
|
for (var i = 0; i < el.childNodes.length; i++) {
|
||||||
|
this.remove(el.childNodes[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
appendChild(el, node) {
|
||||||
|
el.appendChild(node);
|
||||||
|
}
|
||||||
|
removeChild(el, node) {
|
||||||
|
el.removeChild(node);
|
||||||
|
}
|
||||||
|
replaceChild(el: Node, newChild, oldChild) {
|
||||||
|
el.replaceChild(newChild, oldChild);
|
||||||
|
}
|
||||||
|
remove(el) {
|
||||||
|
var parent = el.parentNode;
|
||||||
|
parent.removeChild(el);
|
||||||
|
return el;
|
||||||
|
}
|
||||||
|
insertBefore(el, node) {
|
||||||
|
el.parentNode.insertBefore(node, el);
|
||||||
|
}
|
||||||
|
insertAllBefore(el, nodes) {
|
||||||
|
ListWrapper.forEach(nodes, (n) => { el.parentNode.insertBefore(n, el); });
|
||||||
|
}
|
||||||
|
insertAfter(el, node) {
|
||||||
|
el.parentNode.insertBefore(node, el.nextSibling);
|
||||||
|
}
|
||||||
|
setInnerHTML(el, value) {
|
||||||
|
el.innerHTML = value;
|
||||||
|
}
|
||||||
|
getText(el) {
|
||||||
|
return el.textContent;
|
||||||
|
}
|
||||||
|
// TODO(vicb): removed Element type because it does not support StyleElement
|
||||||
|
setText(el, value: string) {
|
||||||
|
el.textContent = value;
|
||||||
|
}
|
||||||
|
getValue(el) {
|
||||||
|
return el.value;
|
||||||
|
}
|
||||||
|
setValue(el, value: string) {
|
||||||
|
el.value = value;
|
||||||
|
}
|
||||||
|
getChecked(el) {
|
||||||
|
return el.checked;
|
||||||
|
}
|
||||||
|
setChecked(el, value: boolean) {
|
||||||
|
el.checked = value;
|
||||||
|
}
|
||||||
|
createTemplate(html): HTMLElement {
|
||||||
|
var t = document.createElement('template');
|
||||||
|
t.innerHTML = html;
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
createElement(tagName, doc = document): HTMLElement {
|
||||||
|
return doc.createElement(tagName);
|
||||||
|
}
|
||||||
|
createTextNode(text: string, doc = document): Text {
|
||||||
|
return doc.createTextNode(text);
|
||||||
|
}
|
||||||
|
createScriptTag(attrName: string, attrValue: string, doc = document): HTMLScriptElement {
|
||||||
|
var el = <HTMLScriptElement>doc.createElement('SCRIPT');
|
||||||
|
el.setAttribute(attrName, attrValue);
|
||||||
|
return el;
|
||||||
|
}
|
||||||
|
createStyleElement(css: string, doc = document): HTMLStyleElement {
|
||||||
|
var style = <HTMLStyleElement>doc.createElement('STYLE');
|
||||||
|
style.innerText = css;
|
||||||
|
return style;
|
||||||
|
}
|
||||||
|
createShadowRoot(el: HTMLElement): DocumentFragment {
|
||||||
|
return (<any>el).createShadowRoot();
|
||||||
|
}
|
||||||
|
getShadowRoot(el: HTMLElement): DocumentFragment {
|
||||||
|
return (<any>el).shadowRoot;
|
||||||
|
}
|
||||||
|
getHost(el: HTMLElement): HTMLElement {
|
||||||
|
return (<any>el).host;
|
||||||
|
}
|
||||||
|
clone(node: Node) {
|
||||||
|
return node.cloneNode(true);
|
||||||
|
}
|
||||||
|
hasProperty(element, name: string) {
|
||||||
|
return name in element;
|
||||||
|
}
|
||||||
|
getElementsByClassName(element, name: string) {
|
||||||
|
return element.getElementsByClassName(name);
|
||||||
|
}
|
||||||
|
getElementsByTagName(element, name: string) {
|
||||||
|
return element.getElementsByTagName(name);
|
||||||
|
}
|
||||||
|
classList(element): List<any> {
|
||||||
|
return <List<any>>Array.prototype.slice.call(element.classList, 0);
|
||||||
|
}
|
||||||
|
addClass(element, classname: string) {
|
||||||
|
element.classList.add(classname);
|
||||||
|
}
|
||||||
|
removeClass(element, classname: string) {
|
||||||
|
element.classList.remove(classname);
|
||||||
|
}
|
||||||
|
hasClass(element, classname: string) {
|
||||||
|
return element.classList.contains(classname);
|
||||||
|
}
|
||||||
|
setStyle(element, stylename: string, stylevalue: string) {
|
||||||
|
element.style[stylename] = stylevalue;
|
||||||
|
}
|
||||||
|
removeStyle(element, stylename: string) {
|
||||||
|
element.style[stylename] = null;
|
||||||
|
}
|
||||||
|
getStyle(element, stylename: string) {
|
||||||
|
return element.style[stylename];
|
||||||
|
}
|
||||||
|
tagName(element): string {
|
||||||
|
return element.tagName;
|
||||||
|
}
|
||||||
|
attributeMap(element) {
|
||||||
|
var res = MapWrapper.create();
|
||||||
|
var elAttrs = element.attributes;
|
||||||
|
for (var i = 0; i < elAttrs.length; i++) {
|
||||||
|
var attrib = elAttrs[i];
|
||||||
|
MapWrapper.set(res, attrib.name, attrib.value);
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
hasAttribute(element, attribute: string) {
|
||||||
|
return element.hasAttribute(attribute);
|
||||||
|
}
|
||||||
|
getAttribute(element, attribute: string) {
|
||||||
|
return element.getAttribute(attribute);
|
||||||
|
}
|
||||||
|
setAttribute(element, name: string, value: string) {
|
||||||
|
element.setAttribute(name, value);
|
||||||
|
}
|
||||||
|
removeAttribute(element, attribute: string) {
|
||||||
|
return element.removeAttribute(attribute);
|
||||||
|
}
|
||||||
|
templateAwareRoot(el) {
|
||||||
|
return this.isTemplateElement(el) ? this.content(el) : el;
|
||||||
|
}
|
||||||
|
createHtmlDocument() {
|
||||||
|
return document.implementation.createHTMLDocument('fakeTitle');
|
||||||
|
}
|
||||||
|
defaultDoc() {
|
||||||
|
return document;
|
||||||
|
}
|
||||||
|
getBoundingClientRect(el) {
|
||||||
|
return el.getBoundingClientRect();
|
||||||
|
}
|
||||||
|
getTitle() {
|
||||||
|
return document.title;
|
||||||
|
}
|
||||||
|
setTitle(newTitle: string) {
|
||||||
|
document.title = newTitle;
|
||||||
|
}
|
||||||
|
elementMatches(n, selector: string): boolean {
|
||||||
|
return n instanceof HTMLElement && n.matches(selector);
|
||||||
|
}
|
||||||
|
isTemplateElement(el: any): boolean {
|
||||||
|
return el instanceof HTMLElement && el.nodeName == "TEMPLATE";
|
||||||
|
}
|
||||||
|
isTextNode(node: Node): boolean {
|
||||||
|
return node.nodeType === Node.TEXT_NODE;
|
||||||
|
}
|
||||||
|
isCommentNode(node: Node): boolean {
|
||||||
|
return node.nodeType === Node.COMMENT_NODE;
|
||||||
|
}
|
||||||
|
isElementNode(node: Node): boolean {
|
||||||
|
return node.nodeType === Node.ELEMENT_NODE;
|
||||||
|
}
|
||||||
|
hasShadowRoot(node): boolean {
|
||||||
|
return node instanceof HTMLElement && isPresent(node.shadowRoot);
|
||||||
|
}
|
||||||
|
isShadowRoot(node): boolean {
|
||||||
|
return node instanceof DocumentFragment;
|
||||||
|
}
|
||||||
|
importIntoDoc(node: Node) {
|
||||||
|
var result = document.importNode(node, true);
|
||||||
|
// Workaround WebKit https://bugs.webkit.org/show_bug.cgi?id=137619
|
||||||
|
if (this.isTemplateElement(result) && !this.content(result).childNodes.length &&
|
||||||
|
this.content(node).childNodes.length) {
|
||||||
|
var childNodes = this.content(node).childNodes;
|
||||||
|
for (var i = 0; i < childNodes.length; ++i) {
|
||||||
|
this.content(result).appendChild(this.importIntoDoc(childNodes[i]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
isPageRule(rule): boolean {
|
||||||
|
return rule.type === CSSRule.PAGE_RULE;
|
||||||
|
}
|
||||||
|
isStyleRule(rule): boolean {
|
||||||
|
return rule.type === CSSRule.STYLE_RULE;
|
||||||
|
}
|
||||||
|
isMediaRule(rule): boolean {
|
||||||
|
return rule.type === CSSRule.MEDIA_RULE;
|
||||||
|
}
|
||||||
|
isKeyframesRule(rule): boolean {
|
||||||
|
return rule.type === CSSRule.KEYFRAMES_RULE;
|
||||||
|
}
|
||||||
|
getHref(el: Element): string {
|
||||||
|
return (<any>el).href;
|
||||||
|
}
|
||||||
|
getEventKey(event): string {
|
||||||
|
var key = event.key;
|
||||||
|
if (isBlank(key)) {
|
||||||
|
key = event.keyIdentifier;
|
||||||
|
// keyIdentifier is defined in the old draft of DOM Level 3 Events implemented by Chrome and
|
||||||
|
// Safari
|
||||||
|
// cf
|
||||||
|
// http://www.w3.org/TR/2007/WD-DOM-Level-3-Events-20071221/events.html#Events-KeyboardEvents-Interfaces
|
||||||
|
if (isBlank(key)) {
|
||||||
|
return 'Unidentified';
|
||||||
|
}
|
||||||
|
if (key.startsWith('U+')) {
|
||||||
|
key = String.fromCharCode(parseInt(key.substring(2), 16));
|
||||||
|
if (event.location === DOM_KEY_LOCATION_NUMPAD && _chromeNumKeyPadMap.hasOwnProperty(key)) {
|
||||||
|
// There is a bug in Chrome for numeric keypad keys:
|
||||||
|
// https://code.google.com/p/chromium/issues/detail?id=155654
|
||||||
|
// 1, 2, 3 ... are reported as A, B, C ...
|
||||||
|
key = _chromeNumKeyPadMap[key];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (_keyMap.hasOwnProperty(key)) {
|
||||||
|
key = _keyMap[key];
|
||||||
|
}
|
||||||
|
return key;
|
||||||
|
}
|
||||||
|
getGlobalEventTarget(target: string): EventTarget {
|
||||||
|
if (target == "window") {
|
||||||
|
return window;
|
||||||
|
} else if (target == "document") {
|
||||||
|
return document;
|
||||||
|
} else if (target == "body") {
|
||||||
|
return document.body;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
getHistory() {
|
||||||
|
return window.history;
|
||||||
|
}
|
||||||
|
getLocation() {
|
||||||
|
return window.location;
|
||||||
|
}
|
||||||
|
getBaseHref() {
|
||||||
|
return relativePath(document.baseURI);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// based on urlUtils.js in AngularJS 1
|
||||||
|
var urlParsingNode = null;
|
||||||
|
function relativePath(url) {
|
||||||
|
if (isBlank(urlParsingNode)) {
|
||||||
|
urlParsingNode = document.createElement("a");
|
||||||
|
}
|
||||||
|
urlParsingNode.setAttribute('href', url);
|
||||||
|
return (urlParsingNode.pathname.charAt(0) === '/') ? urlParsingNode.pathname :
|
||||||
|
'/' + urlParsingNode.pathname;
|
||||||
|
}
|
298
modules/angular2/src/dom/dom_adapter.js
vendored
298
modules/angular2/src/dom/dom_adapter.js
vendored
@ -1,298 +0,0 @@
|
|||||||
import {ABSTRACT, BaseException} from 'angular2/src/facade/lang';
|
|
||||||
|
|
||||||
export var DOM:DomAdapter;
|
|
||||||
|
|
||||||
export function setRootDomAdapter(adapter:DomAdapter) {
|
|
||||||
DOM = adapter;
|
|
||||||
}
|
|
||||||
|
|
||||||
function _abstract() {
|
|
||||||
return new BaseException('This method is abstract');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Provides DOM operations in an environment-agnostic way.
|
|
||||||
*/
|
|
||||||
@ABSTRACT()
|
|
||||||
export class DomAdapter {
|
|
||||||
|
|
||||||
logError(error) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Maps attribute names to their corresponding property names for cases
|
|
||||||
* where attribute name doesn't match property name.
|
|
||||||
*/
|
|
||||||
get attrToPropMap() {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
|
|
||||||
parse(templateHtml:string) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
query(selector:string) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
querySelector(el, selector:string) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
querySelectorAll(el, selector:string):List {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
on(el, evt, listener) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
onAndCancel(el, evt, listener): Function {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
dispatchEvent(el, evt) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
createMouseEvent(eventType) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
createEvent(eventType:string) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
getInnerHTML(el) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
getOuterHTML(el) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
nodeName(node):string {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
nodeValue(node):string {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
type(node):string {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
content(node) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
firstChild(el) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
nextSibling(el) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
parentElement(el) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
childNodes(el):List {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
childNodesAsList(el):List {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
clearNodes(el) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
appendChild(el, node) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
removeChild(el, node) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
replaceChild(el, newNode, oldNode) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
remove(el) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
insertBefore(el, node) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
insertAllBefore(el, nodes) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
insertAfter(el, node) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
setInnerHTML(el, value) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
getText(el) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
setText(el, value:string) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
getValue(el) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
setValue(el, value:string) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
getChecked(el) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
setChecked(el, value:boolean) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
createTemplate(html) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
createElement(tagName, doc = null) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
createTextNode(text: string, doc = null) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
createScriptTag(attrName:string, attrValue:string, doc = null) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
createStyleElement(css:string, doc = null) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
createShadowRoot(el) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
getShadowRoot(el) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
getHost(el) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
getDistributedNodes(el) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
clone(node) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
hasProperty(element, name:string) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
getElementsByClassName(element, name:string) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
getElementsByTagName(element, name:string) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
classList(element):List {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
addClass(element, classname:string) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
removeClass(element, classname:string) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
hasClass(element, classname:string) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
setStyle(element, stylename:string, stylevalue:string) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
removeStyle(element, stylename:string) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
getStyle(element, stylename:string) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
tagName(element):string {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
attributeMap(element) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
hasAttribute(element, attribute:string):boolean {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
getAttribute(element, attribute:string):string {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
setAttribute(element, name:string, value:string) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
removeAttribute(element, attribute:string) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
templateAwareRoot(el) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
createHtmlDocument() {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
defaultDoc() {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
getBoundingClientRect(el) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
getTitle() {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
setTitle(newTitle:string) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
elementMatches(n, selector:string):boolean {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
isTemplateElement(el:any):boolean {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
isTextNode(node):boolean {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
isCommentNode(node):boolean {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
isElementNode(node):boolean {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
hasShadowRoot(node):boolean {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
isShadowRoot(node):boolean {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
importIntoDoc(node) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
isPageRule(rule): boolean {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
isStyleRule(rule): boolean {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
isMediaRule(rule): boolean {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
isKeyframesRule(rule): boolean {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
getHref(element): string {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
getEventKey(event): string {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
resolveAndSetHref(element, baseUrl:string, href:string) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
cssToRules(css:string): List {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
supportsDOMEvents(): boolean {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
supportsNativeShadowDOM(): boolean {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
getGlobalEventTarget(target:string) {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
getHistory() {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
getLocation() {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
getBaseHref() {
|
|
||||||
throw _abstract();
|
|
||||||
}
|
|
||||||
}
|
|
117
modules/angular2/src/dom/dom_adapter.ts
Normal file
117
modules/angular2/src/dom/dom_adapter.ts
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
import {BaseException} from 'angular2/src/facade/lang';
|
||||||
|
|
||||||
|
// TODO: remove this when we no longer use traceur
|
||||||
|
export var __esModule = true;
|
||||||
|
|
||||||
|
export var DOM: DomAdapter;
|
||||||
|
|
||||||
|
export function setRootDomAdapter(adapter: DomAdapter) {
|
||||||
|
DOM = adapter;
|
||||||
|
}
|
||||||
|
|
||||||
|
function _abstract() {
|
||||||
|
return new BaseException('This method is abstract');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provides DOM operations in an environment-agnostic way.
|
||||||
|
*/
|
||||||
|
export class DomAdapter {
|
||||||
|
logError(error) { throw _abstract(); }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Maps attribute names to their corresponding property names for cases
|
||||||
|
* where attribute name doesn't match property name.
|
||||||
|
*/
|
||||||
|
get attrToPropMap(): any { throw _abstract(); }
|
||||||
|
|
||||||
|
parse(templateHtml: string) { throw _abstract(); }
|
||||||
|
query(selector: string): any { throw _abstract(); }
|
||||||
|
querySelector(el, selector: string) { throw _abstract(); }
|
||||||
|
querySelectorAll(el, selector: string): List<any> { throw _abstract(); }
|
||||||
|
on(el, evt, listener) { throw _abstract(); }
|
||||||
|
onAndCancel(el, evt, listener): Function { throw _abstract(); }
|
||||||
|
dispatchEvent(el, evt) { throw _abstract(); }
|
||||||
|
createMouseEvent(eventType): any { throw _abstract(); }
|
||||||
|
createEvent(eventType: string): any { throw _abstract(); }
|
||||||
|
getInnerHTML(el): string { throw _abstract(); }
|
||||||
|
getOuterHTML(el): string { throw _abstract(); }
|
||||||
|
nodeName(node): string { throw _abstract(); }
|
||||||
|
nodeValue(node): string { throw _abstract(); }
|
||||||
|
type(node): string { throw _abstract(); }
|
||||||
|
content(node): any { throw _abstract(); }
|
||||||
|
firstChild(el): any { throw _abstract(); }
|
||||||
|
nextSibling(el): any { throw _abstract(); }
|
||||||
|
parentElement(el): any { throw _abstract(); }
|
||||||
|
childNodes(el): List<any> { throw _abstract(); }
|
||||||
|
childNodesAsList(el): List<any> { throw _abstract(); }
|
||||||
|
clearNodes(el) { throw _abstract(); }
|
||||||
|
appendChild(el, node) { throw _abstract(); }
|
||||||
|
removeChild(el, node) { throw _abstract(); }
|
||||||
|
replaceChild(el, newNode, oldNode) { throw _abstract(); }
|
||||||
|
remove(el) { throw _abstract(); }
|
||||||
|
insertBefore(el, node) { throw _abstract(); }
|
||||||
|
insertAllBefore(el, nodes) { throw _abstract(); }
|
||||||
|
insertAfter(el, node) { throw _abstract(); }
|
||||||
|
setInnerHTML(el, value) { throw _abstract(); }
|
||||||
|
getText(el): any { throw _abstract(); }
|
||||||
|
setText(el, value: string) { throw _abstract(); }
|
||||||
|
getValue(el): any { throw _abstract(); }
|
||||||
|
setValue(el, value: string) { throw _abstract(); }
|
||||||
|
getChecked(el): any { throw _abstract(); }
|
||||||
|
setChecked(el, value: boolean) { throw _abstract(); }
|
||||||
|
createTemplate(html): any { throw _abstract(); }
|
||||||
|
createElement(tagName, doc = null): any { throw _abstract(); }
|
||||||
|
createTextNode(text: string, doc = null): any { throw _abstract(); }
|
||||||
|
createScriptTag(attrName: string, attrValue: string, doc = null): any { throw _abstract(); }
|
||||||
|
createStyleElement(css: string, doc = null): any { throw _abstract(); }
|
||||||
|
createShadowRoot(el): any { throw _abstract(); }
|
||||||
|
getShadowRoot(el): any { throw _abstract(); }
|
||||||
|
getHost(el): any { throw _abstract(); }
|
||||||
|
getDistributedNodes(el): List<any> { throw _abstract(); }
|
||||||
|
clone(node): any { throw _abstract(); }
|
||||||
|
hasProperty(element, name: string): boolean { throw _abstract(); }
|
||||||
|
getElementsByClassName(element, name: string): List<any> { throw _abstract(); }
|
||||||
|
getElementsByTagName(element, name: string): List<any> { throw _abstract(); }
|
||||||
|
classList(element): List<any> { throw _abstract(); }
|
||||||
|
addClass(element, classname: string) { throw _abstract(); }
|
||||||
|
removeClass(element, classname: string) { throw _abstract(); }
|
||||||
|
hasClass(element, classname: string) { throw _abstract(); }
|
||||||
|
setStyle(element, stylename: string, stylevalue: string) { throw _abstract(); }
|
||||||
|
removeStyle(element, stylename: string) { throw _abstract(); }
|
||||||
|
getStyle(element, stylename: string) { throw _abstract(); }
|
||||||
|
tagName(element): string { throw _abstract(); }
|
||||||
|
attributeMap(element) { throw _abstract(); }
|
||||||
|
hasAttribute(element, attribute: string): boolean { throw _abstract(); }
|
||||||
|
getAttribute(element, attribute: string): string { throw _abstract(); }
|
||||||
|
setAttribute(element, name: string, value: string) { throw _abstract(); }
|
||||||
|
removeAttribute(element, attribute: string) { throw _abstract(); }
|
||||||
|
templateAwareRoot(el) { throw _abstract(); }
|
||||||
|
createHtmlDocument() { throw _abstract(); }
|
||||||
|
defaultDoc(): any { throw _abstract(); }
|
||||||
|
getBoundingClientRect(el) { throw _abstract(); }
|
||||||
|
getTitle() { throw _abstract(); }
|
||||||
|
setTitle(newTitle: string) { throw _abstract(); }
|
||||||
|
elementMatches(n, selector: string): boolean { throw _abstract(); }
|
||||||
|
isTemplateElement(el: any): boolean { throw _abstract(); }
|
||||||
|
isTextNode(node): boolean { throw _abstract(); }
|
||||||
|
isCommentNode(node): boolean { throw _abstract(); }
|
||||||
|
isElementNode(node): boolean { throw _abstract(); }
|
||||||
|
hasShadowRoot(node): boolean { throw _abstract(); }
|
||||||
|
isShadowRoot(node): boolean { throw _abstract(); }
|
||||||
|
importIntoDoc(node) { throw _abstract(); }
|
||||||
|
isPageRule(rule): boolean { throw _abstract(); }
|
||||||
|
isStyleRule(rule): boolean { throw _abstract(); }
|
||||||
|
isMediaRule(rule): boolean { throw _abstract(); }
|
||||||
|
isKeyframesRule(rule): boolean { throw _abstract(); }
|
||||||
|
getHref(element): string { throw _abstract(); }
|
||||||
|
getEventKey(event): string { throw _abstract(); }
|
||||||
|
resolveAndSetHref(element, baseUrl: string, href: string) { throw _abstract(); }
|
||||||
|
cssToRules(css: string): List<any> { throw _abstract(); }
|
||||||
|
supportsDOMEvents(): boolean { throw _abstract(); }
|
||||||
|
supportsNativeShadowDOM(): boolean { throw _abstract(); }
|
||||||
|
getGlobalEventTarget(target: string) { throw _abstract(); }
|
||||||
|
getHistory() { throw _abstract(); }
|
||||||
|
getLocation() { throw _abstract(); }
|
||||||
|
getBaseHref() { throw _abstract(); }
|
||||||
|
}
|
@ -1,4 +1,3 @@
|
|||||||
import {ABSTRACT} from 'angular2/src/facade/lang';
|
|
||||||
import {List, ListWrapper} from 'angular2/src/facade/collection';
|
import {List, ListWrapper} from 'angular2/src/facade/collection';
|
||||||
import {isPresent, isFunction} from 'angular2/src/facade/lang';
|
import {isPresent, isFunction} from 'angular2/src/facade/lang';
|
||||||
import {DomAdapter} from './dom_adapter';
|
import {DomAdapter} from './dom_adapter';
|
||||||
@ -6,15 +5,12 @@ import {DomAdapter} from './dom_adapter';
|
|||||||
/**
|
/**
|
||||||
* Provides DOM operations in any browser environment.
|
* Provides DOM operations in any browser environment.
|
||||||
*/
|
*/
|
||||||
@ABSTRACT()
|
|
||||||
export class GenericBrowserDomAdapter extends DomAdapter {
|
export class GenericBrowserDomAdapter extends DomAdapter {
|
||||||
getDistributedNodes(el) {
|
getDistributedNodes(el) { return el.getDistributedNodes(); }
|
||||||
return el.getDistributedNodes();
|
resolveAndSetHref(el, baseUrl: string, href: string) {
|
||||||
}
|
|
||||||
resolveAndSetHref(el, baseUrl:string, href:string) {
|
|
||||||
el.href = href == null ? baseUrl : baseUrl + '/../' + href;
|
el.href = href == null ? baseUrl : baseUrl + '/../' + href;
|
||||||
}
|
}
|
||||||
cssToRules(css:string): List {
|
cssToRules(css: string): List<any> {
|
||||||
var style = this.createStyleElement(css);
|
var style = this.createStyleElement(css);
|
||||||
this.appendChild(this.defaultDoc().head, style);
|
this.appendChild(this.defaultDoc().head, style);
|
||||||
var rules = ListWrapper.create();
|
var rules = ListWrapper.create();
|
||||||
@ -25,10 +21,10 @@ export class GenericBrowserDomAdapter extends DomAdapter {
|
|||||||
try {
|
try {
|
||||||
var rawRules = style.sheet.cssRules;
|
var rawRules = style.sheet.cssRules;
|
||||||
rules = ListWrapper.createFixedSize(rawRules.length);
|
rules = ListWrapper.createFixedSize(rawRules.length);
|
||||||
for (var i=0; i<rawRules.length; i++) {
|
for (var i = 0; i < rawRules.length; i++) {
|
||||||
rules[i] = rawRules[i];
|
rules[i] = rawRules[i];
|
||||||
}
|
}
|
||||||
} catch(e) {
|
} catch (e) {
|
||||||
//
|
//
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -37,10 +33,6 @@ export class GenericBrowserDomAdapter extends DomAdapter {
|
|||||||
this.remove(style);
|
this.remove(style);
|
||||||
return rules;
|
return rules;
|
||||||
}
|
}
|
||||||
supportsDOMEvents(): boolean {
|
supportsDOMEvents(): boolean { return true; }
|
||||||
return true;
|
supportsNativeShadowDOM(): boolean { return isFunction(this.defaultDoc().body.createShadowRoot); }
|
||||||
}
|
|
||||||
supportsNativeShadowDOM(): boolean {
|
|
||||||
return isFunction(this.defaultDoc().body.createShadowRoot);
|
|
||||||
}
|
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user