angular2
Version:
Angular 2 - a web framework for modern web apps
594 lines (593 loc) • 23.4 kB
JavaScript
;
Object.defineProperties(module.exports, {
Parse5DomAdapter: {get: function() {
return Parse5DomAdapter;
}},
__esModule: {value: true}
});
var $__angular2_47_src_47_facade_47_collection__,
$__dom_95_adapter__,
$__angular2_47_src_47_facade_47_lang__,
$__angular2_47_src_47_render_47_dom_47_compiler_47_selector__;
var parse5 = require('parse5');
var parser = new parse5.Parser(parse5.TreeAdapters.htmlparser2);
var serializer = new parse5.Serializer(parse5.TreeAdapters.htmlparser2);
var treeAdapter = parser.treeAdapter;
var cssParse = require('css').parse;
var url = require('url');
var $__0 = ($__angular2_47_src_47_facade_47_collection__ = require("angular2/src/facade/collection"), $__angular2_47_src_47_facade_47_collection__ && $__angular2_47_src_47_facade_47_collection__.__esModule && $__angular2_47_src_47_facade_47_collection__ || {default: $__angular2_47_src_47_facade_47_collection__}),
List = $__0.List,
MapWrapper = $__0.MapWrapper,
ListWrapper = $__0.ListWrapper,
StringMapWrapper = $__0.StringMapWrapper;
var $__1 = ($__dom_95_adapter__ = require("./dom_adapter"), $__dom_95_adapter__ && $__dom_95_adapter__.__esModule && $__dom_95_adapter__ || {default: $__dom_95_adapter__}),
DomAdapter = $__1.DomAdapter,
setRootDomAdapter = $__1.setRootDomAdapter;
var $__2 = ($__angular2_47_src_47_facade_47_lang__ = require("angular2/src/facade/lang"), $__angular2_47_src_47_facade_47_lang__ && $__angular2_47_src_47_facade_47_lang__.__esModule && $__angular2_47_src_47_facade_47_lang__ || {default: $__angular2_47_src_47_facade_47_lang__}),
BaseException = $__2.BaseException,
isPresent = $__2.isPresent,
isBlank = $__2.isBlank;
var $__3 = ($__angular2_47_src_47_render_47_dom_47_compiler_47_selector__ = require("angular2/src/render/dom/compiler/selector"), $__angular2_47_src_47_render_47_dom_47_compiler_47_selector__ && $__angular2_47_src_47_render_47_dom_47_compiler_47_selector__.__esModule && $__angular2_47_src_47_render_47_dom_47_compiler_47_selector__ || {default: $__angular2_47_src_47_render_47_dom_47_compiler_47_selector__}),
SelectorMatcher = $__3.SelectorMatcher,
CssSelector = $__3.CssSelector;
var _attrToPropMap = {
'innerHtml': 'innerHTML',
'readonly': 'readOnly',
'tabindex': 'tabIndex'
};
var defDoc = null;
function _notImplemented(methodName) {
return new BaseException('This method is not implemented in Parse5DomAdapter: ' + methodName);
}
var Parse5DomAdapter = function Parse5DomAdapter() {
$traceurRuntime.superConstructor($Parse5DomAdapter).apply(this, arguments);
;
};
var $Parse5DomAdapter = Parse5DomAdapter;
($traceurRuntime.createClass)(Parse5DomAdapter, {
get attrToPropMap() {
return _attrToPropMap;
},
query: function(selector) {
throw _notImplemented('query');
},
querySelector: function(el, selector) {
return this.querySelectorAll(el, selector)[0];
},
querySelectorAll: function(el, selector) {
var $__4 = this;
var res = ListWrapper.create();
var _recursive = (function(result, node, selector, matcher) {
if ($__4.elementMatches(node, selector, matcher)) {
ListWrapper.push(result, node);
}
var cNodes = node.childNodes;
if (cNodes && cNodes.length > 0) {
for (var i = 0; i < cNodes.length; i++) {
_recursive(result, cNodes[i], selector, matcher);
}
}
});
var matcher = new SelectorMatcher();
matcher.addSelectables(CssSelector.parse(selector));
_recursive(res, el, selector, matcher);
return res;
},
elementMatches: function(node, selector) {
var matcher = arguments[2] !== (void 0) ? arguments[2] : null;
var result = false;
if (selector && selector.charAt(0) == "#") {
result = this.getAttribute(node, 'id') == selector.substring(1);
} else if (selector) {
var result = false;
if (matcher == null) {
matcher = new SelectorMatcher();
matcher.addSelectables(CssSelector.parse(selector));
}
var cssSelector = new CssSelector();
cssSelector.setElement(this.tagName(node));
if (node.attribs) {
for (var attrName in node.attribs) {
cssSelector.addAttribute(attrName, node.attribs[attrName]);
}
}
var classList = this.classList(node);
for (var i = 0; i < classList.length; i++) {
cssSelector.addClassName(classList[i]);
}
matcher.match(cssSelector, function(selector, cb) {
result = true;
});
}
return result;
},
on: function(el, evt, listener) {},
onAndCancel: function(el, evt, listener) {},
dispatchEvent: function(el, evt) {
throw _notImplemented('dispatchEvent');
},
createMouseEvent: function(eventType) {
throw _notImplemented('createMouseEvent');
},
createEvent: function(eventType) {
throw _notImplemented('createEvent');
},
getInnerHTML: function(el) {
return serializer.serialize(this.templateAwareRoot(el));
},
getOuterHTML: function(el) {
serializer.html = '';
serializer._serializeElement(el);
return serializer.html;
},
nodeName: function(node) {
return node.tagName;
},
nodeValue: function(node) {
return node.nodeValue;
},
type: function(node) {
throw _notImplemented('type');
},
content: function(node) {
return node.childNodes[0];
},
firstChild: function(el) {
return el.firstChild;
},
nextSibling: function(el) {
return el.nextSibling;
},
parentElement: function(el) {
return el.parent;
},
childNodes: function(el) {
return el.childNodes;
},
childNodesAsList: function(el) {
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: function(el) {
while (el.childNodes.length > 0) {
this.remove(el.childNodes[0]);
}
},
appendChild: function(el, node) {
this.remove(node);
treeAdapter.appendChild(this.templateAwareRoot(el), node);
},
removeChild: function(el, node) {
if (ListWrapper.contains(el.childNodes, node)) {
this.remove(node);
}
},
remove: function(el) {
var parent = el.parent;
if (parent) {
var index = parent.childNodes.indexOf(el);
parent.childNodes.splice(index, 1);
}
var prev = el.previousSibling;
var next = el.nextSibling;
if (prev) {
prev.next = next;
}
if (next) {
next.prev = prev;
}
el.prev = null;
el.next = null;
el.parent = null;
return el;
},
insertBefore: function(el, node) {
this.remove(node);
treeAdapter.insertBefore(el.parent, node, el);
},
insertAllBefore: function(el, nodes) {
var $__4 = this;
ListWrapper.forEach(nodes, (function(n) {
$__4.insertBefore(el, n);
}));
},
insertAfter: function(el, node) {
if (el.nextSibling) {
this.insertBefore(el.nextSibling, node);
} else {
this.appendChild(el.parent, node);
}
},
setInnerHTML: function(el, value) {
this.clearNodes(el);
var content = parser.parseFragment(value);
for (var i = 0; i < content.childNodes.length; i++) {
treeAdapter.appendChild(el, content.childNodes[i]);
}
},
getText: function(el) {
if (this.isTextNode(el)) {
return el.data;
} else if (el.childNodes.length == 0) {
return "";
} else {
var textContent = "";
for (var i = 0; i < el.childNodes.length; i++) {
textContent += this.getText(el.childNodes[i]);
}
return textContent;
}
},
setText: function(el, value) {
if (this.isTextNode(el)) {
el.data = value;
} else {
this.clearNodes(el);
treeAdapter.insertText(el, value);
}
},
getValue: function(el) {
return el.value;
},
setValue: function(el, value) {
el.value = value;
},
getChecked: function(el) {
return el.checked;
},
setChecked: function(el, value) {
el.checked = value;
},
createTemplate: function(html) {
var template = treeAdapter.createElement("template", 'http://www.w3.org/1999/xhtml', []);
var content = parser.parseFragment(html);
treeAdapter.appendChild(template, content);
return template;
},
createElement: function(tagName) {
return treeAdapter.createElement(tagName, 'http://www.w3.org/1999/xhtml', []);
},
createTextNode: function(text) {
throw _notImplemented('createTextNode');
},
createScriptTag: function(attrName, attrValue) {
return treeAdapter.createElement("script", 'http://www.w3.org/1999/xhtml', [{
name: attrName,
value: attrValue
}]);
},
createStyleElement: function(css) {
var style = this.createElement('style');
this.setText(style, css);
return style;
},
createShadowRoot: function(el) {
el.shadowRoot = treeAdapter.createDocumentFragment();
el.shadowRoot.parent = el;
return el.shadowRoot;
},
getShadowRoot: function(el) {
return el.shadowRoot;
},
getHost: function(el) {
return el.host;
},
getDistributedNodes: function(el) {
throw _notImplemented('getDistributedNodes');
},
clone: function(node) {
var temp = treeAdapter.createElement("template", null, []);
treeAdapter.appendChild(temp, node);
var serialized = serializer.serialize(temp);
var newParser = new parse5.Parser(parse5.TreeAdapters.htmlparser2);
return newParser.parseFragment(serialized).childNodes[0];
},
hasProperty: function(element, name) {
return _HTMLElementPropertyList.indexOf(name) > -1;
},
getElementsByClassName: function(element, name) {
return this.querySelectorAll(element, "." + name);
},
getElementsByTagName: function(element, name) {
throw _notImplemented('getElementsByTagName');
},
classList: function(element) {
var classAttrValue = null;
var attributes = element.attribs;
if (attributes && attributes.hasOwnProperty("class")) {
classAttrValue = attributes["class"];
}
return classAttrValue ? classAttrValue.trim().split(/\s+/g) : [];
},
addClass: function(element, classname) {
var classList = this.classList(element);
var index = classList.indexOf(classname);
if (index == -1) {
ListWrapper.push(classList, classname);
element.attribs["class"] = element.className = ListWrapper.join(classList, " ");
}
},
removeClass: function(element, classname) {
var classList = this.classList(element);
var index = classList.indexOf(classname);
if (index > -1) {
classList.splice(index, 1);
element.attribs["class"] = element.className = ListWrapper.join(classList, " ");
}
},
hasClass: function(element, classname) {
return ListWrapper.contains(this.classList(element), classname);
},
_readStyleAttribute: function(element) {
var styleMap = {};
var attributes = element.attribs;
if (attributes && attributes.hasOwnProperty("style")) {
var styleAttrValue = attributes["style"];
var styleList = styleAttrValue.split(/;+/g);
for (var i = 0; i < styleList.length; i++) {
if (styleList[i].length > 0) {
var elems = styleList[i].split(/:+/g);
styleMap[elems[0].trim()] = elems[1].trim();
}
}
}
return styleMap;
},
_writeStyleAttribute: function(element, styleMap) {
var styleAttrValue = "";
for (var key in styleMap) {
var newValue = styleMap[key];
if (newValue && newValue.length > 0) {
styleAttrValue += key + ":" + styleMap[key] + ";";
}
}
element.attribs["style"] = styleAttrValue;
},
setStyle: function(element, stylename, stylevalue) {
var styleMap = this._readStyleAttribute(element);
styleMap[stylename] = stylevalue;
this._writeStyleAttribute(element, styleMap);
},
removeStyle: function(element, stylename) {
this.setStyle(element, stylename, null);
},
getStyle: function(element, stylename) {
var styleMap = this._readStyleAttribute(element);
return styleMap.hasOwnProperty(stylename) ? styleMap[stylename] : "";
},
tagName: function(element) {
return element.tagName == "style" ? "STYLE" : element.tagName;
},
attributeMap: function(element) {
var res = MapWrapper.create();
var elAttrs = treeAdapter.getAttrList(element);
for (var i = 0; i < elAttrs.length; i++) {
var attrib = elAttrs[i];
MapWrapper.set(res, attrib.name, attrib.value);
}
return res;
},
getAttribute: function(element, attribute) {
return element.attribs && element.attribs.hasOwnProperty(attribute) ? element.attribs[attribute] : null;
},
setAttribute: function(element, attribute, value) {
if (attribute) {
element.attribs[attribute] = value;
}
},
removeAttribute: function(element, attribute) {
if (attribute) {
delete element.attribs[attribute];
}
},
templateAwareRoot: function(el) {
return this.isTemplateElement(el) ? this.content(el) : el;
},
createHtmlDocument: function() {
var newDoc = treeAdapter.createDocument();
newDoc.title = "fake title";
var head = treeAdapter.createElement("head", null, []);
var body = treeAdapter.createElement("body", 'http://www.w3.org/1999/xhtml', []);
this.appendChild(newDoc, head);
this.appendChild(newDoc, body);
StringMapWrapper.set(newDoc, "head", head);
StringMapWrapper.set(newDoc, "body", body);
return newDoc;
},
defaultDoc: function() {
if (defDoc === null) {
defDoc = this.createHtmlDocument();
}
return defDoc;
},
getBoundingClientRect: function(el) {
return {
left: 0,
top: 0,
width: 0,
height: 0
};
},
getTitle: function() {
return this.defaultDoc().title || "";
},
setTitle: function(newTitle) {
this.defaultDoc().title = newTitle;
},
isTemplateElement: function(el) {
return this.isElementNode(el) && this.tagName(el) === "template";
},
isTextNode: function(node) {
return treeAdapter.isTextNode(node);
},
isCommentNode: function(node) {
return treeAdapter.isCommentNode(node);
},
isElementNode: function(node) {
return node ? treeAdapter.isElementNode(node) : false;
},
hasShadowRoot: function(node) {
return isPresent(node.shadowRoot);
},
isShadowRoot: function(node) {
return this.getShadowRoot(node) == node;
},
importIntoDoc: function(node) {
return this.clone(node);
},
isPageRule: function(rule) {
return rule.type === 6;
},
isStyleRule: function(rule) {
return rule.type === 1;
},
isMediaRule: function(rule) {
return rule.type === 4;
},
isKeyframesRule: function(rule) {
return rule.type === 7;
},
getHref: function(el) {
return el.href;
},
resolveAndSetHref: function(el, baseUrl, href) {
if (href == null) {
el.href = baseUrl;
} else {
el.href = url.resolve(baseUrl, href);
}
},
_buildRules: function(parsedRules, css) {
var rules = ListWrapper.create();
for (var i = 0; i < parsedRules.length; i++) {
var parsedRule = parsedRules[i];
var rule = {cssText: css};
rule.style = {
content: "",
cssText: ""
};
if (parsedRule.type == "rule") {
rule.type = 1;
rule.selectorText = parsedRule.selectors.join(", ").replace(/\s{2,}/g, " ").replace(/\s*~\s*/g, " ~ ").replace(/\s*\+\s*/g, " + ").replace(/\s*>\s*/g, " > ").replace(/\[(\w+)=(\w+)\]/g, '[$1="$2"]');
if (isBlank(parsedRule.declarations)) {
continue;
}
for (var j = 0; j < parsedRule.declarations.length; j++) {
var declaration = parsedRule.declarations[j];
rule.style[declaration.property] = declaration.value;
rule.style.cssText += declaration.property + ": " + declaration.value + ";";
}
} else if (parsedRule.type == "media") {
rule.type = 4;
rule.media = {mediaText: parsedRule.media};
if (parsedRule.rules) {
rule.cssRules = this._buildRules(parsedRule.rules);
}
}
ListWrapper.push(rules, rule);
}
return rules;
},
cssToRules: function(css) {
css = css.replace(/url\(\'(.+)\'\)/g, 'url($1)');
var rules = ListWrapper.create();
var parsedCSS = cssParse(css, {silent: true});
if (parsedCSS.stylesheet && parsedCSS.stylesheet.rules) {
rules = this._buildRules(parsedCSS.stylesheet.rules, css);
}
return rules;
},
supportsDOMEvents: function() {
return false;
},
supportsNativeShadowDOM: function() {
return false;
}
}, {makeCurrent: function() {
setRootDomAdapter(new $Parse5DomAdapter());
}}, DomAdapter);
Object.defineProperty(Parse5DomAdapter.prototype.querySelector, "parameters", {get: function() {
return [[], [$traceurRuntime.type.string]];
}});
Object.defineProperty(Parse5DomAdapter.prototype.querySelectorAll, "parameters", {get: function() {
return [[], [$traceurRuntime.type.string]];
}});
Object.defineProperty(Parse5DomAdapter.prototype.elementMatches, "parameters", {get: function() {
return [[], [$traceurRuntime.type.string], []];
}});
Object.defineProperty(Parse5DomAdapter.prototype.type, "parameters", {get: function() {
return [[$traceurRuntime.type.string]];
}});
Object.defineProperty(Parse5DomAdapter.prototype.setText, "parameters", {get: function() {
return [[], [$traceurRuntime.type.string]];
}});
Object.defineProperty(Parse5DomAdapter.prototype.setValue, "parameters", {get: function() {
return [[], [$traceurRuntime.type.string]];
}});
Object.defineProperty(Parse5DomAdapter.prototype.setChecked, "parameters", {get: function() {
return [[], [$traceurRuntime.type.boolean]];
}});
Object.defineProperty(Parse5DomAdapter.prototype.createTextNode, "parameters", {get: function() {
return [[$traceurRuntime.type.string]];
}});
Object.defineProperty(Parse5DomAdapter.prototype.createScriptTag, "parameters", {get: function() {
return [[$traceurRuntime.type.string], [$traceurRuntime.type.string]];
}});
Object.defineProperty(Parse5DomAdapter.prototype.createStyleElement, "parameters", {get: function() {
return [[$traceurRuntime.type.string]];
}});
Object.defineProperty(Parse5DomAdapter.prototype.hasProperty, "parameters", {get: function() {
return [[], [$traceurRuntime.type.string]];
}});
Object.defineProperty(Parse5DomAdapter.prototype.getElementsByClassName, "parameters", {get: function() {
return [[], [$traceurRuntime.type.string]];
}});
Object.defineProperty(Parse5DomAdapter.prototype.getElementsByTagName, "parameters", {get: function() {
return [[], [$traceurRuntime.type.string]];
}});
Object.defineProperty(Parse5DomAdapter.prototype.addClass, "parameters", {get: function() {
return [[], [$traceurRuntime.type.string]];
}});
Object.defineProperty(Parse5DomAdapter.prototype.removeClass, "parameters", {get: function() {
return [[], [$traceurRuntime.type.string]];
}});
Object.defineProperty(Parse5DomAdapter.prototype.hasClass, "parameters", {get: function() {
return [[], [$traceurRuntime.type.string]];
}});
Object.defineProperty(Parse5DomAdapter.prototype.setStyle, "parameters", {get: function() {
return [[], [$traceurRuntime.type.string], [$traceurRuntime.type.string]];
}});
Object.defineProperty(Parse5DomAdapter.prototype.removeStyle, "parameters", {get: function() {
return [[], [$traceurRuntime.type.string]];
}});
Object.defineProperty(Parse5DomAdapter.prototype.getStyle, "parameters", {get: function() {
return [[], [$traceurRuntime.type.string]];
}});
Object.defineProperty(Parse5DomAdapter.prototype.getAttribute, "parameters", {get: function() {
return [[], [$traceurRuntime.type.string]];
}});
Object.defineProperty(Parse5DomAdapter.prototype.setAttribute, "parameters", {get: function() {
return [[], [$traceurRuntime.type.string], [$traceurRuntime.type.string]];
}});
Object.defineProperty(Parse5DomAdapter.prototype.removeAttribute, "parameters", {get: function() {
return [[], [$traceurRuntime.type.string]];
}});
Object.defineProperty(Parse5DomAdapter.prototype.setTitle, "parameters", {get: function() {
return [[$traceurRuntime.type.string]];
}});
Object.defineProperty(Parse5DomAdapter.prototype.isTemplateElement, "parameters", {get: function() {
return [[$traceurRuntime.type.any]];
}});
Object.defineProperty(Parse5DomAdapter.prototype.resolveAndSetHref, "parameters", {get: function() {
return [[], [$traceurRuntime.type.string], [$traceurRuntime.type.string]];
}});
Object.defineProperty(Parse5DomAdapter.prototype.cssToRules, "parameters", {get: function() {
return [[$traceurRuntime.type.string]];
}});
var _HTMLElementPropertyList = ["webkitEntries", "incremental", "webkitdirectory", "selectionDirection", "selectionEnd", "selectionStart", "labels", "validationMessage", "validity", "willValidate", "width", "valueAsNumber", "valueAsDate", "value", "useMap", "defaultValue", "type", "step", "src", "size", "required", "readOnly", "placeholder", "pattern", "name", "multiple", "min", "minLength", "maxLength", "max", "list", "indeterminate", "height", "formTarget", "formNoValidate", "formMethod", "formEnctype", "formAction", "files", "form", "disabled", "dirName", "checked", "defaultChecked", "autofocus", "autocomplete", "alt", "align", "accept", "onautocompleteerror", "onautocomplete", "onwaiting", "onvolumechange", "ontoggle", "ontimeupdate", "onsuspend", "onsubmit", "onstalled", "onshow", "onselect", "onseeking", "onseeked", "onscroll", "onresize", "onreset", "onratechange", "onprogress", "onplaying", "onplay", "onpause", "onmousewheel", "onmouseup", "onmouseover", "onmouseout", "onmousemove", "onmouseleave", "onmouseenter", "onmousedown", "onloadstart", "onloadedmetadata", "onloadeddata", "onload", "onkeyup", "onkeypress", "onkeydown", "oninvalid", "oninput", "onfocus", "onerror", "onended", "onemptied", "ondurationchange", "ondrop", "ondragstart", "ondragover", "ondragleave", "ondragenter", "ondragend", "ondrag", "ondblclick", "oncuechange", "oncontextmenu", "onclose", "onclick", "onchange", "oncanplaythrough", "oncanplay", "oncancel", "onblur", "onabort", "spellcheck", "isContentEditable", "contentEditable", "outerText", "innerText", "accessKey", "hidden", "webkitdropzone", "draggable", "tabIndex", "dir", "translate", "lang", "title", "childElementCount", "lastElementChild", "firstElementChild", "children", "onwebkitfullscreenerror", "onwebkitfullscreenchange", "nextElementSibling", "previousElementSibling", "onwheel", "onselectstart", "onsearch", "onpaste", "oncut", "oncopy", "onbeforepaste", "onbeforecut", "onbeforecopy", "shadowRoot", "dataset", "classList", "className", "outerHTML", "innerHTML", "scrollHeight", "scrollWidth", "scrollTop", "scrollLeft", "clientHeight", "clientWidth", "clientTop", "clientLeft", "offsetParent", "offsetHeight", "offsetWidth", "offsetTop", "offsetLeft", "localName", "prefix", "namespaceURI", "id", "style", "attributes", "tagName", "parentElement", "textContent", "baseURI", "ownerDocument", "nextSibling", "previousSibling", "lastChild", "firstChild", "childNodes", "parentNode", "nodeType", "nodeValue", "nodeName", "closure_lm_714617", "__jsaction"];
//# sourceMappingURL=parse5_adapter.cjs.map
//# sourceMappingURL=./parse5_adapter.map