style(lint): re-format modules/@angular
This commit is contained in:
@ -1,45 +1,29 @@
|
||||
import {
|
||||
PLATFORM_INITIALIZER,
|
||||
PLATFORM_DIRECTIVES,
|
||||
PLATFORM_PIPES,
|
||||
ExceptionHandler,
|
||||
RootRenderer,
|
||||
APPLICATION_COMMON_PROVIDERS,
|
||||
PLATFORM_COMMON_PROVIDERS,
|
||||
OpaqueToken,
|
||||
Testability,
|
||||
PlatformRef,
|
||||
getPlatform,
|
||||
createPlatform,
|
||||
assertPlatform,
|
||||
ReflectiveInjector,
|
||||
coreLoadAndBootstrap,
|
||||
Type,
|
||||
ComponentRef
|
||||
} from "@angular/core";
|
||||
import {isBlank, isPresent} from "./facade/lang";
|
||||
import {reflector, wtfInit, SanitizationService, ReflectionCapabilities, AnimationDriver, NoOpAnimationDriver} from '../core_private';
|
||||
import {COMMON_DIRECTIVES, COMMON_PIPES, FORM_PROVIDERS, PlatformLocation} from '@angular/common';
|
||||
import {COMPILER_PROVIDERS, XHR} from '@angular/compiler';
|
||||
import {APPLICATION_COMMON_PROVIDERS, ComponentRef, ExceptionHandler, OpaqueToken, PLATFORM_COMMON_PROVIDERS, PLATFORM_DIRECTIVES, PLATFORM_INITIALIZER, PLATFORM_PIPES, PlatformRef, ReflectiveInjector, RootRenderer, Testability, Type, assertPlatform, coreLoadAndBootstrap, createPlatform, getPlatform} from '@angular/core';
|
||||
|
||||
import {AnimationDriver, NoOpAnimationDriver, ReflectionCapabilities, SanitizationService, reflector, wtfInit} from '../core_private';
|
||||
import {WebAnimationsDriver} from '../src/dom/web_animations_driver';
|
||||
import {COMMON_DIRECTIVES, COMMON_PIPES, FORM_PROVIDERS, PlatformLocation} from "@angular/common";
|
||||
import {DomSanitizationService, DomSanitizationServiceImpl} from "./security/dom_sanitization_service";
|
||||
import {BrowserDomAdapter} from "./browser/browser_adapter";
|
||||
import {BrowserGetTestability} from "./browser/testability";
|
||||
import {getDOM} from "./dom/dom_adapter";
|
||||
import {DOCUMENT} from "./dom/dom_tokens";
|
||||
import {EVENT_MANAGER_PLUGINS, EventManager} from "./dom/events/event_manager";
|
||||
import {DomRootRenderer, DomRootRenderer_} from "./dom/dom_renderer";
|
||||
import {SharedStylesHost, DomSharedStylesHost} from "./dom/shared_styles_host";
|
||||
import {KeyEventsPlugin} from "./dom/events/key_events";
|
||||
import {ELEMENT_PROBE_PROVIDERS} from "./dom/debug/ng_probe";
|
||||
import {DomEventsPlugin} from "./dom/events/dom_events";
|
||||
import {HAMMER_GESTURE_CONFIG, HammerGestureConfig, HammerGesturesPlugin} from "./dom/events/hammer_gestures";
|
||||
import {BrowserPlatformLocation} from "./browser/location/browser_platform_location";
|
||||
import {COMPILER_PROVIDERS, XHR} from "@angular/compiler";
|
||||
import {CachedXHR} from "./xhr/xhr_cache";
|
||||
import {XHRImpl} from "./xhr/xhr_impl";
|
||||
|
||||
import {BrowserDomAdapter} from './browser/browser_adapter';
|
||||
import {BrowserPlatformLocation} from './browser/location/browser_platform_location';
|
||||
import {BrowserGetTestability} from './browser/testability';
|
||||
import {ELEMENT_PROBE_PROVIDERS} from './dom/debug/ng_probe';
|
||||
import {getDOM} from './dom/dom_adapter';
|
||||
import {DomRootRenderer, DomRootRenderer_} from './dom/dom_renderer';
|
||||
import {DOCUMENT} from './dom/dom_tokens';
|
||||
import {DomEventsPlugin} from './dom/events/dom_events';
|
||||
import {EVENT_MANAGER_PLUGINS, EventManager} from './dom/events/event_manager';
|
||||
import {HAMMER_GESTURE_CONFIG, HammerGestureConfig, HammerGesturesPlugin} from './dom/events/hammer_gestures';
|
||||
import {KeyEventsPlugin} from './dom/events/key_events';
|
||||
import {DomSharedStylesHost, SharedStylesHost} from './dom/shared_styles_host';
|
||||
import {isBlank, isPresent} from './facade/lang';
|
||||
import {DomSanitizationService, DomSanitizationServiceImpl} from './security/dom_sanitization_service';
|
||||
import {CachedXHR} from './xhr/xhr_cache';
|
||||
import {XHRImpl} from './xhr/xhr_impl';
|
||||
|
||||
export const CACHED_TEMPLATE_PROVIDER: Array<any /*Type | Provider | any[]*/> =
|
||||
[{provide: XHR, useClass: CachedXHR}];
|
||||
[{provide: XHR, useClass: CachedXHR}];
|
||||
|
||||
const BROWSER_PLATFORM_MARKER = new OpaqueToken('BrowserPlatformMarker');
|
||||
|
||||
@ -49,8 +33,7 @@ const BROWSER_PLATFORM_MARKER = new OpaqueToken('BrowserPlatformMarker');
|
||||
* Used automatically by `bootstrap`, or can be passed to {@link platform}.
|
||||
*/
|
||||
export const BROWSER_PLATFORM_PROVIDERS: Array<any /*Type | Provider | any[]*/> = [
|
||||
{provide: BROWSER_PLATFORM_MARKER, useValue: true},
|
||||
PLATFORM_COMMON_PROVIDERS,
|
||||
{provide: BROWSER_PLATFORM_MARKER, useValue: true}, PLATFORM_COMMON_PROVIDERS,
|
||||
{provide: PLATFORM_INITIALIZER, useValue: initDomAdapter, multi: true},
|
||||
{provide: PlatformLocation, useClass: BrowserPlatformLocation}
|
||||
];
|
||||
@ -65,34 +48,27 @@ export const BROWSER_SANITIZATION_PROVIDERS: Array<any> = [
|
||||
*
|
||||
* Used automatically by `bootstrap`, or can be passed to {@link PlatformRef.application}.
|
||||
*/
|
||||
export const BROWSER_APP_PROVIDERS: Array<any /*Type | Provider | any[]*/> =
|
||||
[
|
||||
APPLICATION_COMMON_PROVIDERS,
|
||||
FORM_PROVIDERS,
|
||||
BROWSER_SANITIZATION_PROVIDERS,
|
||||
{provide: PLATFORM_PIPES, useValue: COMMON_PIPES, multi: true},
|
||||
{provide: PLATFORM_DIRECTIVES, useValue: COMMON_DIRECTIVES, multi: true},
|
||||
{provide: ExceptionHandler, useFactory: _exceptionHandler, deps: []},
|
||||
{provide: DOCUMENT, useFactory: _document, deps: []},
|
||||
{provide: EVENT_MANAGER_PLUGINS, useClass: DomEventsPlugin, multi: true},
|
||||
{provide: EVENT_MANAGER_PLUGINS, useClass: KeyEventsPlugin, multi: true},
|
||||
{provide: EVENT_MANAGER_PLUGINS, useClass: HammerGesturesPlugin, multi: true},
|
||||
{provide: HAMMER_GESTURE_CONFIG, useClass: HammerGestureConfig},
|
||||
{provide: DomRootRenderer, useClass: DomRootRenderer_},
|
||||
{provide: RootRenderer, useExisting: DomRootRenderer},
|
||||
{provide: SharedStylesHost, useExisting: DomSharedStylesHost},
|
||||
{provide: AnimationDriver, useFactory: _resolveDefaultAnimationDriver},
|
||||
DomSharedStylesHost,
|
||||
Testability,
|
||||
EventManager,
|
||||
ELEMENT_PROBE_PROVIDERS
|
||||
];
|
||||
export const BROWSER_APP_PROVIDERS: Array<any /*Type | Provider | any[]*/> = [
|
||||
APPLICATION_COMMON_PROVIDERS, FORM_PROVIDERS, BROWSER_SANITIZATION_PROVIDERS,
|
||||
{provide: PLATFORM_PIPES, useValue: COMMON_PIPES, multi: true},
|
||||
{provide: PLATFORM_DIRECTIVES, useValue: COMMON_DIRECTIVES, multi: true},
|
||||
{provide: ExceptionHandler, useFactory: _exceptionHandler, deps: []},
|
||||
{provide: DOCUMENT, useFactory: _document, deps: []},
|
||||
{provide: EVENT_MANAGER_PLUGINS, useClass: DomEventsPlugin, multi: true},
|
||||
{provide: EVENT_MANAGER_PLUGINS, useClass: KeyEventsPlugin, multi: true},
|
||||
{provide: EVENT_MANAGER_PLUGINS, useClass: HammerGesturesPlugin, multi: true},
|
||||
{provide: HAMMER_GESTURE_CONFIG, useClass: HammerGestureConfig},
|
||||
{provide: DomRootRenderer, useClass: DomRootRenderer_},
|
||||
{provide: RootRenderer, useExisting: DomRootRenderer},
|
||||
{provide: SharedStylesHost, useExisting: DomSharedStylesHost},
|
||||
{provide: AnimationDriver, useFactory: _resolveDefaultAnimationDriver}, DomSharedStylesHost,
|
||||
Testability, EventManager, ELEMENT_PROBE_PROVIDERS
|
||||
];
|
||||
|
||||
export const BROWSER_APP_COMPILER_PROVIDERS: Array<any /*Type | Provider | any[]*/> =
|
||||
[
|
||||
COMPILER_PROVIDERS,
|
||||
{provide: XHR, useClass: XHRImpl},
|
||||
];
|
||||
export const BROWSER_APP_COMPILER_PROVIDERS: Array<any /*Type | Provider | any[]*/> = [
|
||||
COMPILER_PROVIDERS,
|
||||
{provide: XHR, useClass: XHRImpl},
|
||||
];
|
||||
|
||||
export function browserPlatform(): PlatformRef {
|
||||
if (isBlank(getPlatform())) {
|
||||
@ -170,12 +146,11 @@ export function browserPlatform(): PlatformRef {
|
||||
* Returns a `Promise` of {@link ComponentRef}.
|
||||
*/
|
||||
export function bootstrap(
|
||||
appComponentType: Type,
|
||||
customProviders?: Array<any /*Type | Provider | any[]*/>): Promise<ComponentRef<any>> {
|
||||
appComponentType: Type,
|
||||
customProviders?: Array<any /*Type | Provider | any[]*/>): Promise<ComponentRef<any>> {
|
||||
reflector.reflectionCapabilities = new ReflectionCapabilities();
|
||||
let providers = [
|
||||
BROWSER_APP_PROVIDERS,
|
||||
BROWSER_APP_COMPILER_PROVIDERS,
|
||||
BROWSER_APP_PROVIDERS, BROWSER_APP_COMPILER_PROVIDERS,
|
||||
isPresent(customProviders) ? customProviders : []
|
||||
];
|
||||
var appInjector = ReflectiveInjector.resolveAndCreate(providers, browserPlatform().injector);
|
||||
|
@ -1,7 +1,8 @@
|
||||
import {ListWrapper} from '../facade/collection';
|
||||
import {isBlank, isPresent, isFunction, global, setValueOnPath, DateWrapper} from '../facade/lang';
|
||||
import {GenericBrowserDomAdapter} from './generic_browser_adapter';
|
||||
import {setRootDomAdapter} from '../dom/dom_adapter';
|
||||
import {ListWrapper} from '../facade/collection';
|
||||
import {DateWrapper, global, isBlank, isFunction, isPresent, setValueOnPath} from '../facade/lang';
|
||||
|
||||
import {GenericBrowserDomAdapter} from './generic_browser_adapter';
|
||||
|
||||
var _attrToPropMap = {
|
||||
'class': 'className',
|
||||
@ -58,7 +59,7 @@ var _chromeNumKeyPadMap = {
|
||||
*/
|
||||
/* tslint:disable:requireParameterType */
|
||||
export class BrowserDomAdapter extends GenericBrowserDomAdapter {
|
||||
parse(templateHtml: string) { throw new Error("parse not implemented"); }
|
||||
parse(templateHtml: string) { throw new Error('parse not implemented'); }
|
||||
static makeCurrent() { setRootDomAdapter(new BrowserDomAdapter()); }
|
||||
hasProperty(element: any /** TODO #9100 */, name: string): boolean { return name in element; }
|
||||
setProperty(el: /*element*/ any, name: string, value: any) { el[name] = value; }
|
||||
@ -96,10 +97,18 @@ export class BrowserDomAdapter extends GenericBrowserDomAdapter {
|
||||
get attrToPropMap(): any { return _attrToPropMap; }
|
||||
|
||||
query(selector: string): any { return document.querySelector(selector); }
|
||||
querySelector(el: any /** TODO #9100 */, selector: string): HTMLElement { return el.querySelector(selector); }
|
||||
querySelectorAll(el: any /** TODO #9100 */, selector: string): any[] { return el.querySelectorAll(selector); }
|
||||
on(el: any /** TODO #9100 */, evt: any /** TODO #9100 */, listener: any /** TODO #9100 */) { el.addEventListener(evt, listener, false); }
|
||||
onAndCancel(el: any /** TODO #9100 */, evt: any /** TODO #9100 */, listener: any /** TODO #9100 */): Function {
|
||||
querySelector(el: any /** TODO #9100 */, selector: string): HTMLElement {
|
||||
return el.querySelector(selector);
|
||||
}
|
||||
querySelectorAll(el: any /** TODO #9100 */, selector: string): any[] {
|
||||
return el.querySelectorAll(selector);
|
||||
}
|
||||
on(el: any /** TODO #9100 */, evt: any /** TODO #9100 */, listener: any /** TODO #9100 */) {
|
||||
el.addEventListener(evt, listener, false);
|
||||
}
|
||||
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
|
||||
@ -132,7 +141,7 @@ export class BrowserDomAdapter extends GenericBrowserDomAdapter {
|
||||
nodeValue(node: Node): string { return node.nodeValue; }
|
||||
type(node: HTMLInputElement): string { return node.type; }
|
||||
content(node: Node): Node {
|
||||
if (this.hasProperty(node, "content")) {
|
||||
if (this.hasProperty(node, 'content')) {
|
||||
return (<any>node).content;
|
||||
} else {
|
||||
return node;
|
||||
@ -157,16 +166,24 @@ export class BrowserDomAdapter extends GenericBrowserDomAdapter {
|
||||
}
|
||||
appendChild(el: any /** TODO #9100 */, node: any /** TODO #9100 */) { el.appendChild(node); }
|
||||
removeChild(el: any /** TODO #9100 */, node: any /** TODO #9100 */) { el.removeChild(node); }
|
||||
replaceChild(el: Node, newChild: any /** TODO #9100 */, oldChild: any /** TODO #9100 */) { el.replaceChild(newChild, oldChild); }
|
||||
replaceChild(el: Node, newChild: any /** TODO #9100 */, oldChild: any /** TODO #9100 */) {
|
||||
el.replaceChild(newChild, oldChild);
|
||||
}
|
||||
remove(node: any /** TODO #9100 */): Node {
|
||||
if (node.parentNode) {
|
||||
node.parentNode.removeChild(node);
|
||||
}
|
||||
return node;
|
||||
}
|
||||
insertBefore(el: any /** TODO #9100 */, node: any /** TODO #9100 */) { el.parentNode.insertBefore(node, el); }
|
||||
insertAllBefore(el: any /** TODO #9100 */, nodes: any /** TODO #9100 */) { nodes.forEach((n: any /** TODO #9100 */) => el.parentNode.insertBefore(n, el)); }
|
||||
insertAfter(el: any /** TODO #9100 */, node: any /** TODO #9100 */) { el.parentNode.insertBefore(node, el.nextSibling); }
|
||||
insertBefore(el: any /** TODO #9100 */, node: any /** TODO #9100 */) {
|
||||
el.parentNode.insertBefore(node, el);
|
||||
}
|
||||
insertAllBefore(el: any /** TODO #9100 */, nodes: any /** TODO #9100 */) {
|
||||
nodes.forEach((n: any /** TODO #9100 */) => el.parentNode.insertBefore(n, el));
|
||||
}
|
||||
insertAfter(el: any /** TODO #9100 */, node: any /** TODO #9100 */) {
|
||||
el.parentNode.insertBefore(node, el.nextSibling);
|
||||
}
|
||||
setInnerHTML(el: any /** TODO #9100 */, value: any /** TODO #9100 */) { el.innerHTML = value; }
|
||||
getText(el: any /** TODO #9100 */): string { return el.textContent; }
|
||||
// TODO(vicb): removed Element type because it does not support StyleElement
|
||||
@ -181,8 +198,13 @@ export class BrowserDomAdapter extends GenericBrowserDomAdapter {
|
||||
t.innerHTML = html;
|
||||
return t;
|
||||
}
|
||||
createElement(tagName: any /** TODO #9100 */, doc = document): HTMLElement { return doc.createElement(tagName); }
|
||||
createElementNS(ns: any /** TODO #9100 */, tagName: any /** TODO #9100 */, doc = document): Element { return doc.createElementNS(ns, tagName); }
|
||||
createElement(tagName: any /** TODO #9100 */, doc = document): HTMLElement {
|
||||
return doc.createElement(tagName);
|
||||
}
|
||||
createElementNS(ns: any /** TODO #9100 */, tagName: any /** TODO #9100 */, doc = document):
|
||||
Element {
|
||||
return doc.createElementNS(ns, 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');
|
||||
@ -204,15 +226,25 @@ export class BrowserDomAdapter extends GenericBrowserDomAdapter {
|
||||
getElementsByTagName(element: any /** TODO #9100 */, name: string): HTMLElement[] {
|
||||
return element.getElementsByTagName(name);
|
||||
}
|
||||
classList(element: any /** TODO #9100 */): any[] { return <any[]>Array.prototype.slice.call(element.classList, 0); }
|
||||
classList(element: any /** TODO #9100 */): any[] {
|
||||
return <any[]>Array.prototype.slice.call(element.classList, 0);
|
||||
}
|
||||
addClass(element: any /** TODO #9100 */, className: string) { element.classList.add(className); }
|
||||
removeClass(element: any /** TODO #9100 */, className: string) { element.classList.remove(className); }
|
||||
hasClass(element: any /** TODO #9100 */, className: string): boolean { return element.classList.contains(className); }
|
||||
removeClass(element: any /** TODO #9100 */, className: string) {
|
||||
element.classList.remove(className);
|
||||
}
|
||||
hasClass(element: any /** TODO #9100 */, className: string): boolean {
|
||||
return element.classList.contains(className);
|
||||
}
|
||||
setStyle(element: any /** TODO #9100 */, styleName: string, styleValue: string) {
|
||||
element.style[styleName] = styleValue;
|
||||
}
|
||||
removeStyle(element: any /** TODO #9100 */, stylename: string) { element.style[stylename] = null; }
|
||||
getStyle(element: any /** TODO #9100 */, stylename: string): string { return element.style[stylename]; }
|
||||
removeStyle(element: any /** TODO #9100 */, stylename: string) {
|
||||
element.style[stylename] = null;
|
||||
}
|
||||
getStyle(element: any /** TODO #9100 */, stylename: string): string {
|
||||
return element.style[stylename];
|
||||
}
|
||||
hasStyle(element: any /** TODO #9100 */, styleName: string, styleValue: string = null): boolean {
|
||||
var value = this.getStyle(element, styleName) || '';
|
||||
return styleValue ? value == styleValue : value.length > 0;
|
||||
@ -227,21 +259,33 @@ export class BrowserDomAdapter extends GenericBrowserDomAdapter {
|
||||
}
|
||||
return res;
|
||||
}
|
||||
hasAttribute(element: any /** TODO #9100 */, attribute: string): boolean { return element.hasAttribute(attribute); }
|
||||
hasAttribute(element: any /** TODO #9100 */, attribute: string): boolean {
|
||||
return element.hasAttribute(attribute);
|
||||
}
|
||||
hasAttributeNS(element: any /** TODO #9100 */, ns: string, attribute: string): boolean {
|
||||
return element.hasAttributeNS(ns, attribute);
|
||||
}
|
||||
getAttribute(element: any /** TODO #9100 */, attribute: string): string { return element.getAttribute(attribute); }
|
||||
getAttribute(element: any /** TODO #9100 */, attribute: string): string {
|
||||
return element.getAttribute(attribute);
|
||||
}
|
||||
getAttributeNS(element: any /** TODO #9100 */, ns: string, name: string): string {
|
||||
return element.getAttributeNS(ns, name);
|
||||
}
|
||||
setAttribute(element: any /** TODO #9100 */, name: string, value: string) { element.setAttribute(name, value); }
|
||||
setAttribute(element: any /** TODO #9100 */, name: string, value: string) {
|
||||
element.setAttribute(name, value);
|
||||
}
|
||||
setAttributeNS(element: any /** TODO #9100 */, ns: string, name: string, value: string) {
|
||||
element.setAttributeNS(ns, name, value);
|
||||
}
|
||||
removeAttribute(element: any /** TODO #9100 */, attribute: string) { element.removeAttribute(attribute); }
|
||||
removeAttributeNS(element: any /** TODO #9100 */, ns: string, name: string) { element.removeAttributeNS(ns, name); }
|
||||
templateAwareRoot(el: any /** TODO #9100 */): any { return this.isTemplateElement(el) ? this.content(el) : el; }
|
||||
removeAttribute(element: any /** TODO #9100 */, attribute: string) {
|
||||
element.removeAttribute(attribute);
|
||||
}
|
||||
removeAttributeNS(element: any /** TODO #9100 */, ns: string, name: string) {
|
||||
element.removeAttributeNS(ns, name);
|
||||
}
|
||||
templateAwareRoot(el: any /** TODO #9100 */): any {
|
||||
return this.isTemplateElement(el) ? this.content(el) : el;
|
||||
}
|
||||
createHtmlDocument(): HTMLDocument {
|
||||
return document.implementation.createHTMLDocument('fakeTitle');
|
||||
}
|
||||
@ -269,12 +313,14 @@ export class BrowserDomAdapter extends GenericBrowserDomAdapter {
|
||||
return matches;
|
||||
}
|
||||
isTemplateElement(el: any): boolean {
|
||||
return el instanceof HTMLElement && el.nodeName == "TEMPLATE";
|
||||
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: any /** TODO #9100 */): boolean { return node instanceof HTMLElement && isPresent(node.shadowRoot); }
|
||||
hasShadowRoot(node: any /** TODO #9100 */): boolean {
|
||||
return node instanceof HTMLElement && isPresent(node.shadowRoot);
|
||||
}
|
||||
isShadowRoot(node: any /** TODO #9100 */): boolean { return node instanceof DocumentFragment; }
|
||||
importIntoDoc(node: Node): any {
|
||||
var toImport = node;
|
||||
@ -312,11 +358,11 @@ export class BrowserDomAdapter extends GenericBrowserDomAdapter {
|
||||
return key;
|
||||
}
|
||||
getGlobalEventTarget(target: string): EventTarget {
|
||||
if (target == "window") {
|
||||
if (target == 'window') {
|
||||
return window;
|
||||
} else if (target == "document") {
|
||||
} else if (target == 'document') {
|
||||
return document;
|
||||
} else if (target == "body") {
|
||||
} else if (target == 'body') {
|
||||
return document.body;
|
||||
}
|
||||
}
|
||||
@ -334,13 +380,19 @@ export class BrowserDomAdapter extends GenericBrowserDomAdapter {
|
||||
setData(element: any /** TODO #9100 */, name: string, value: string) {
|
||||
this.setAttribute(element, 'data-' + name, value);
|
||||
}
|
||||
getData(element: any /** TODO #9100 */, name: string): string { return this.getAttribute(element, 'data-' + name); }
|
||||
getData(element: any /** TODO #9100 */, name: string): string {
|
||||
return this.getAttribute(element, 'data-' + name);
|
||||
}
|
||||
getComputedStyle(element: any /** TODO #9100 */): any { return getComputedStyle(element); }
|
||||
// TODO(tbosch): move this into a separate environment class once we have it
|
||||
setGlobalVar(path: string, value: any) { setValueOnPath(global, path, value); }
|
||||
requestAnimationFrame(callback: any /** TODO #9100 */): number { return window.requestAnimationFrame(callback); }
|
||||
requestAnimationFrame(callback: any /** TODO #9100 */): number {
|
||||
return window.requestAnimationFrame(callback);
|
||||
}
|
||||
cancelAnimationFrame(id: number) { window.cancelAnimationFrame(id); }
|
||||
supportsWebAnimation(): boolean { return isFunction((document as any /** TODO #9100 */).body['animate']); }
|
||||
supportsWebAnimation(): boolean {
|
||||
return isFunction((document as any /** TODO #9100 */).body['animate']);
|
||||
}
|
||||
performanceNow(): number {
|
||||
// performance.now() is not available in all browsers, see
|
||||
// http://caniuse.com/#search=performance.now
|
||||
@ -353,9 +405,7 @@ export class BrowserDomAdapter extends GenericBrowserDomAdapter {
|
||||
|
||||
supportsCookies(): boolean { return true; }
|
||||
|
||||
getCookie(name: string): string {
|
||||
return parseCookieValue(document.cookie, name);
|
||||
}
|
||||
getCookie(name: string): string { return parseCookieValue(document.cookie, name); }
|
||||
|
||||
setCookie(name: string, value: string) {
|
||||
// document.cookie is magical, assigning into it assigns/overrides one cookie value, but does
|
||||
@ -380,7 +430,7 @@ function getBaseElementHref(): string {
|
||||
var urlParsingNode: any /** TODO #9100 */ = null;
|
||||
function relativePath(url: any /** TODO #9100 */): string {
|
||||
if (isBlank(urlParsingNode)) {
|
||||
urlParsingNode = document.createElement("a");
|
||||
urlParsingNode = document.createElement('a');
|
||||
}
|
||||
urlParsingNode.setAttribute('href', url);
|
||||
return (urlParsingNode.pathname.charAt(0) === '/') ? urlParsingNode.pathname :
|
||||
|
@ -1,6 +1,7 @@
|
||||
import {StringMapWrapper} from '../facade/collection';
|
||||
import {isPresent, isFunction, Type} from '../facade/lang';
|
||||
import {DomAdapter} from '../dom/dom_adapter';
|
||||
import {StringMapWrapper} from '../facade/collection';
|
||||
import {Type, isFunction, isPresent} from '../facade/lang';
|
||||
|
||||
|
||||
|
||||
/**
|
||||
@ -50,9 +51,9 @@ export abstract class GenericBrowserDomAdapter extends DomAdapter {
|
||||
return isFunction((<any>this.defaultDoc().body).createShadowRoot);
|
||||
}
|
||||
getAnimationPrefix(): string {
|
||||
return isPresent(this._animationPrefix) ? this._animationPrefix : "";
|
||||
return isPresent(this._animationPrefix) ? this._animationPrefix : '';
|
||||
}
|
||||
getTransitionEnd(): string { return isPresent(this._transitionEnd) ? this._transitionEnd : ""; }
|
||||
getTransitionEnd(): string { return isPresent(this._transitionEnd) ? this._transitionEnd : ''; }
|
||||
supportsAnimation(): boolean {
|
||||
return isPresent(this._animationPrefix) && isPresent(this._transitionEnd);
|
||||
}
|
||||
|
@ -1,10 +1,13 @@
|
||||
import {PlatformLocation, UrlChangeListener} from '@angular/common';
|
||||
import {Injectable} from '@angular/core';
|
||||
import {History, Location} from '../../facade/browser';
|
||||
import {UrlChangeListener, PlatformLocation} from '@angular/common';
|
||||
|
||||
import {getDOM} from '../../dom/dom_adapter';
|
||||
import {History, Location} from '../../facade/browser';
|
||||
|
||||
import {supportsState} from './history';
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* `PlatformLocation` encapsulates all of the direct calls to platform APIs.
|
||||
* This class should not be used directly by an application developer. Instead, use
|
||||
@ -46,7 +49,7 @@ export class BrowserPlatformLocation extends PlatformLocation {
|
||||
set pathname(newPath: string) { this._location.pathname = newPath; }
|
||||
|
||||
pushState(state: any, title: string, url: string): void {
|
||||
if(supportsState()) {
|
||||
if (supportsState()) {
|
||||
this._history.pushState(state, title, url);
|
||||
} else {
|
||||
this._location.hash = url;
|
||||
@ -54,7 +57,7 @@ export class BrowserPlatformLocation extends PlatformLocation {
|
||||
}
|
||||
|
||||
replaceState(state: any, title: string, url: string): void {
|
||||
if(supportsState()) {
|
||||
if (supportsState()) {
|
||||
this._history.replaceState(state, title, url);
|
||||
} else {
|
||||
this._location.hash = url;
|
||||
|
@ -1,3 +1,3 @@
|
||||
export function supportsState(): boolean {
|
||||
return !!window.history.pushState;
|
||||
return !!window.history.pushState;
|
||||
}
|
@ -1,14 +1,8 @@
|
||||
import {
|
||||
Injectable,
|
||||
TestabilityRegistry,
|
||||
Testability,
|
||||
GetTestability,
|
||||
setTestabilityGetter
|
||||
} from '@angular/core';
|
||||
import {GetTestability, Injectable, Testability, TestabilityRegistry, setTestabilityGetter} from '@angular/core';
|
||||
|
||||
import {getDOM} from '../dom/dom_adapter';
|
||||
import {ListWrapper} from '../facade/collection';
|
||||
import {global, isPresent} from '../facade/lang';
|
||||
import {getDOM} from '../dom/dom_adapter';
|
||||
|
||||
|
||||
|
||||
@ -61,7 +55,9 @@ export class BrowserGetTestability implements GetTestability {
|
||||
callback(didWork);
|
||||
}
|
||||
};
|
||||
testabilities.forEach(function(testability: any /** TODO #9100 */) { testability.whenStable(decrement); });
|
||||
testabilities.forEach(function(testability: any /** TODO #9100 */) {
|
||||
testability.whenStable(decrement);
|
||||
});
|
||||
};
|
||||
|
||||
if (!global.frameworkStabilizers) {
|
||||
@ -70,8 +66,8 @@ export class BrowserGetTestability implements GetTestability {
|
||||
global.frameworkStabilizers.push(whenAllStable);
|
||||
}
|
||||
|
||||
findTestabilityInTree(registry: TestabilityRegistry, elem: any,
|
||||
findInAncestors: boolean): Testability {
|
||||
findTestabilityInTree(registry: TestabilityRegistry, elem: any, findInAncestors: boolean):
|
||||
Testability {
|
||||
if (elem == null) {
|
||||
return null;
|
||||
}
|
||||
|
@ -1,7 +1,8 @@
|
||||
import {ApplicationRef, ComponentRef} from '@angular/core';
|
||||
import {isPresent, NumberWrapper} from '../../facade/lang';
|
||||
import {window} from '../../facade/browser';
|
||||
|
||||
import {getDOM} from '../../dom/dom_adapter';
|
||||
import {window} from '../../facade/browser';
|
||||
import {NumberWrapper, isPresent} from '../../facade/lang';
|
||||
|
||||
|
||||
export class ChangeDetectionPerfRecord {
|
||||
|
@ -1,7 +1,9 @@
|
||||
import {DebugElement} from '@angular/core';
|
||||
import {Type, isPresent} from '../../facade/lang';
|
||||
import {Predicate} from '../../facade/collection';
|
||||
|
||||
import {getDOM} from '../../dom/dom_adapter';
|
||||
import {Predicate} from '../../facade/collection';
|
||||
import {Type, isPresent} from '../../facade/lang';
|
||||
|
||||
|
||||
|
||||
/**
|
||||
@ -27,8 +29,8 @@ export class By {
|
||||
static css(selector: string): Predicate<DebugElement> {
|
||||
return (debugElement) => {
|
||||
return isPresent(debugElement.nativeElement) ?
|
||||
getDOM().elementMatches(debugElement.nativeElement, selector) :
|
||||
false;
|
||||
getDOM().elementMatches(debugElement.nativeElement, selector) :
|
||||
false;
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -1,17 +1,15 @@
|
||||
import {
|
||||
DebugNode,
|
||||
getDebugNode,
|
||||
RootRenderer,
|
||||
NgZone,
|
||||
ApplicationRef
|
||||
} from '@angular/core';
|
||||
import {ApplicationRef, DebugNode, NgZone, RootRenderer, getDebugNode} from '@angular/core';
|
||||
|
||||
import {DebugDomRootRenderer} from '../../../core_private';
|
||||
import {assertionsEnabled} from '../../facade/lang';
|
||||
import {getDOM} from '../dom_adapter';
|
||||
import {DomRootRenderer} from '../dom_renderer';
|
||||
|
||||
|
||||
const CORE_TOKENS = {'ApplicationRef': ApplicationRef, 'NgZone': NgZone};
|
||||
const CORE_TOKENS = {
|
||||
'ApplicationRef': ApplicationRef,
|
||||
'NgZone': NgZone
|
||||
};
|
||||
|
||||
const INSPECT_GLOBAL_NAME = 'ng.probe';
|
||||
const CORE_TOKENS_GLOBAL_NAME = 'ng.coreTokens';
|
||||
@ -41,18 +39,8 @@ function _createRootRenderer(rootRenderer: any /** TODO #9100 */) {
|
||||
/**
|
||||
* Providers which support debugging Angular applications (e.g. via `ng.probe`).
|
||||
*/
|
||||
export const ELEMENT_PROBE_PROVIDERS: any[] = [
|
||||
{
|
||||
provide: RootRenderer,
|
||||
useFactory: _createConditionalRootRenderer,
|
||||
deps: [DomRootRenderer]
|
||||
}
|
||||
];
|
||||
export const ELEMENT_PROBE_PROVIDERS: any[] =
|
||||
[{provide: RootRenderer, useFactory: _createConditionalRootRenderer, deps: [DomRootRenderer]}];
|
||||
|
||||
export const ELEMENT_PROBE_PROVIDERS_PROD_MODE: any[] = [
|
||||
{
|
||||
provide: RootRenderer,
|
||||
useFactory: _createRootRenderer,
|
||||
deps: [DomRootRenderer]
|
||||
}
|
||||
];
|
||||
export const ELEMENT_PROBE_PROVIDERS_PROD_MODE: any[] =
|
||||
[{provide: RootRenderer, useFactory: _createRootRenderer, deps: [DomRootRenderer]}];
|
||||
|
@ -1,4 +1,4 @@
|
||||
import {isBlank, Type} from '../facade/lang';
|
||||
import {Type, isBlank} from '../facade/lang';
|
||||
|
||||
var _DOM: DomAdapter = null;
|
||||
|
||||
@ -48,9 +48,14 @@ export abstract class DomAdapter {
|
||||
abstract query(selector: string): any;
|
||||
abstract querySelector(el: any /** TODO #9100 */, selector: string): HTMLElement;
|
||||
abstract querySelectorAll(el: any /** TODO #9100 */, selector: string): any[];
|
||||
abstract on(el: any /** TODO #9100 */, evt: any /** TODO #9100 */, listener: any /** TODO #9100 */): any /** TODO #9100 */;
|
||||
abstract onAndCancel(el: any /** TODO #9100 */, evt: any /** TODO #9100 */, listener: any /** TODO #9100 */): Function;
|
||||
abstract dispatchEvent(el: any /** TODO #9100 */, evt: any /** TODO #9100 */): any /** TODO #9100 */;
|
||||
abstract on(
|
||||
el: any /** TODO #9100 */, evt: any /** TODO #9100 */, listener: any /** TODO #9100 */): any
|
||||
/** TODO #9100 */;
|
||||
abstract onAndCancel(
|
||||
el: any /** TODO #9100 */, evt: any /** TODO #9100 */,
|
||||
listener: any /** TODO #9100 */): Function;
|
||||
abstract dispatchEvent(el: any /** TODO #9100 */, evt: any /** TODO #9100 */): any
|
||||
/** TODO #9100 */;
|
||||
abstract createMouseEvent(eventType: any /** TODO #9100 */): any;
|
||||
abstract createEvent(eventType: string): any;
|
||||
abstract preventDefault(evt: any /** TODO #9100 */): any /** TODO #9100 */;
|
||||
@ -69,14 +74,22 @@ export abstract class DomAdapter {
|
||||
abstract childNodes(el: any /** TODO #9100 */): Node[];
|
||||
abstract childNodesAsList(el: any /** TODO #9100 */): Node[];
|
||||
abstract clearNodes(el: any /** TODO #9100 */): any /** TODO #9100 */;
|
||||
abstract appendChild(el: any /** TODO #9100 */, node: any /** TODO #9100 */): any /** TODO #9100 */;
|
||||
abstract removeChild(el: any /** TODO #9100 */, node: any /** TODO #9100 */): any /** TODO #9100 */;
|
||||
abstract replaceChild(el: any /** TODO #9100 */, newNode: any /** TODO #9100 */, oldNode: any /** TODO #9100 */): any /** TODO #9100 */;
|
||||
abstract appendChild(el: any /** TODO #9100 */, node: any /** TODO #9100 */): any
|
||||
/** TODO #9100 */;
|
||||
abstract removeChild(el: any /** TODO #9100 */, node: any /** TODO #9100 */): any
|
||||
/** TODO #9100 */;
|
||||
abstract replaceChild(
|
||||
el: any /** TODO #9100 */, newNode: any /** TODO #9100 */,
|
||||
oldNode: any /** TODO #9100 */): any /** TODO #9100 */;
|
||||
abstract remove(el: any /** TODO #9100 */): Node;
|
||||
abstract insertBefore(el: any /** TODO #9100 */, node: any /** TODO #9100 */): any /** TODO #9100 */;
|
||||
abstract insertAllBefore(el: any /** TODO #9100 */, nodes: any /** TODO #9100 */): any /** TODO #9100 */;
|
||||
abstract insertAfter(el: any /** TODO #9100 */, node: any /** TODO #9100 */): any /** TODO #9100 */;
|
||||
abstract setInnerHTML(el: any /** TODO #9100 */, value: any /** TODO #9100 */): any /** TODO #9100 */;
|
||||
abstract insertBefore(el: any /** TODO #9100 */, node: any /** TODO #9100 */): any
|
||||
/** TODO #9100 */;
|
||||
abstract insertAllBefore(el: any /** TODO #9100 */, nodes: any /** TODO #9100 */): any
|
||||
/** TODO #9100 */;
|
||||
abstract insertAfter(el: any /** TODO #9100 */, node: any /** TODO #9100 */): any
|
||||
/** TODO #9100 */;
|
||||
abstract setInnerHTML(el: any /** TODO #9100 */, value: any /** TODO #9100 */): any
|
||||
/** TODO #9100 */;
|
||||
abstract getText(el: any /** TODO #9100 */): string;
|
||||
abstract setText(el: any /** TODO #9100 */, value: string): any /** TODO #9100 */;
|
||||
abstract getValue(el: any /** TODO #9100 */): string;
|
||||
@ -88,7 +101,8 @@ export abstract class DomAdapter {
|
||||
abstract createElement(tagName: any /** TODO #9100 */, doc?: any /** TODO #9100 */): HTMLElement;
|
||||
abstract createElementNS(ns: string, tagName: string, doc?: any /** TODO #9100 */): Element;
|
||||
abstract createTextNode(text: string, doc?: any /** TODO #9100 */): Text;
|
||||
abstract createScriptTag(attrName: string, attrValue: string, doc?: any /** TODO #9100 */): HTMLElement;
|
||||
abstract createScriptTag(attrName: string, attrValue: string, doc?: any /** TODO #9100 */):
|
||||
HTMLElement;
|
||||
abstract createStyleElement(css: string, doc?: any /** TODO #9100 */): HTMLStyleElement;
|
||||
abstract createShadowRoot(el: any /** TODO #9100 */): any;
|
||||
abstract getShadowRoot(el: any /** TODO #9100 */): any;
|
||||
@ -101,20 +115,26 @@ export abstract class DomAdapter {
|
||||
abstract addClass(element: any /** TODO #9100 */, className: string): any /** TODO #9100 */;
|
||||
abstract removeClass(element: any /** TODO #9100 */, className: string): any /** TODO #9100 */;
|
||||
abstract hasClass(element: any /** TODO #9100 */, className: string): boolean;
|
||||
abstract setStyle(element: any /** TODO #9100 */, styleName: string, styleValue: string): any /** TODO #9100 */;
|
||||
abstract setStyle(element: any /** TODO #9100 */, styleName: string, styleValue: string): any
|
||||
/** TODO #9100 */;
|
||||
abstract removeStyle(element: any /** TODO #9100 */, styleName: string): any /** TODO #9100 */;
|
||||
abstract getStyle(element: any /** TODO #9100 */, styleName: string): string;
|
||||
abstract hasStyle(element: any /** TODO #9100 */, styleName: string, styleValue?: string): boolean;
|
||||
abstract hasStyle(element: any /** TODO #9100 */, styleName: string, styleValue?: string):
|
||||
boolean;
|
||||
abstract tagName(element: any /** TODO #9100 */): string;
|
||||
abstract attributeMap(element: any /** TODO #9100 */): Map<string, string>;
|
||||
abstract hasAttribute(element: any /** TODO #9100 */, attribute: string): boolean;
|
||||
abstract hasAttributeNS(element: any /** TODO #9100 */, ns: string, attribute: string): boolean;
|
||||
abstract getAttribute(element: any /** TODO #9100 */, attribute: string): string;
|
||||
abstract getAttributeNS(element: any /** TODO #9100 */, ns: string, attribute: string): string;
|
||||
abstract setAttribute(element: any /** TODO #9100 */, name: string, value: string): any /** TODO #9100 */;
|
||||
abstract setAttributeNS(element: any /** TODO #9100 */, ns: string, name: string, value: string): any /** TODO #9100 */;
|
||||
abstract removeAttribute(element: any /** TODO #9100 */, attribute: string): any /** TODO #9100 */;
|
||||
abstract removeAttributeNS(element: any /** TODO #9100 */, ns: string, attribute: string): any /** TODO #9100 */;
|
||||
abstract setAttribute(element: any /** TODO #9100 */, name: string, value: string): any
|
||||
/** TODO #9100 */;
|
||||
abstract setAttributeNS(element: any /** TODO #9100 */, ns: string, name: string, value: string):
|
||||
any /** TODO #9100 */;
|
||||
abstract removeAttribute(element: any /** TODO #9100 */, attribute: string): any
|
||||
/** TODO #9100 */;
|
||||
abstract removeAttributeNS(element: any /** TODO #9100 */, ns: string, attribute: string): any
|
||||
/** TODO #9100 */;
|
||||
abstract templateAwareRoot(el: any /** TODO #9100 */): any /** TODO #9100 */;
|
||||
abstract createHtmlDocument(): HTMLDocument;
|
||||
abstract defaultDoc(): HTMLDocument;
|
||||
@ -132,7 +152,8 @@ export abstract class DomAdapter {
|
||||
abstract adoptNode /*<T extends Node>*/ (node: Node /*T*/): Node /*T*/;
|
||||
abstract getHref(element: any /** TODO #9100 */): string;
|
||||
abstract getEventKey(event: any /** TODO #9100 */): string;
|
||||
abstract resolveAndSetHref(element: any /** TODO #9100 */, baseUrl: string, href: string): any /** TODO #9100 */;
|
||||
abstract resolveAndSetHref(element: any /** TODO #9100 */, baseUrl: string, href: string): any
|
||||
/** TODO #9100 */;
|
||||
abstract supportsDOMEvents(): boolean;
|
||||
abstract supportsNativeShadowDOM(): boolean;
|
||||
abstract getGlobalEventTarget(target: string): any;
|
||||
@ -141,7 +162,8 @@ export abstract class DomAdapter {
|
||||
abstract getBaseHref(): string;
|
||||
abstract resetBaseElement(): void;
|
||||
abstract getUserAgent(): string;
|
||||
abstract setData(element: any /** TODO #9100 */, name: string, value: string): any /** TODO #9100 */;
|
||||
abstract setData(element: any /** TODO #9100 */, name: string, value: string): any
|
||||
/** TODO #9100 */;
|
||||
abstract getComputedStyle(element: any /** TODO #9100 */): any;
|
||||
abstract getData(element: any /** TODO #9100 */, name: string): string;
|
||||
abstract setGlobalVar(name: string, value: any): any /** TODO #9100 */;
|
||||
|
@ -1,52 +1,31 @@
|
||||
import {
|
||||
Inject,
|
||||
Injectable,
|
||||
OpaqueToken,
|
||||
Renderer,
|
||||
RootRenderer,
|
||||
RenderComponentType,
|
||||
ViewEncapsulation
|
||||
} from '@angular/core';
|
||||
import {
|
||||
isPresent,
|
||||
isBlank,
|
||||
Json,
|
||||
RegExpWrapper,
|
||||
stringify,
|
||||
StringWrapper,
|
||||
isArray,
|
||||
isString
|
||||
} from '../facade/lang';
|
||||
import {Inject, Injectable, OpaqueToken, RenderComponentType, Renderer, RootRenderer, ViewEncapsulation} from '@angular/core';
|
||||
|
||||
import {StringMapWrapper} from '../facade/collection';
|
||||
|
||||
import {BaseException} from '../facade/exceptions';
|
||||
import {Json, RegExpWrapper, StringWrapper, isArray, isBlank, isPresent, isString, stringify} from '../facade/lang';
|
||||
|
||||
import {DomSharedStylesHost} from './shared_styles_host';
|
||||
|
||||
import {
|
||||
AnimationKeyframe,
|
||||
AnimationStyles,
|
||||
AnimationPlayer,
|
||||
AnimationDriver,
|
||||
RenderDebugInfo,
|
||||
} from '../../core_private';
|
||||
import {AnimationKeyframe, AnimationStyles, AnimationPlayer, AnimationDriver, RenderDebugInfo,} from '../../core_private';
|
||||
|
||||
import {EventManager} from './events/event_manager';
|
||||
import {DOCUMENT} from './dom_tokens';
|
||||
import {getDOM} from './dom_adapter';
|
||||
import {camelCaseToDashCase} from './util';
|
||||
|
||||
const NAMESPACE_URIS =
|
||||
{'xlink': 'http://www.w3.org/1999/xlink', 'svg': 'http://www.w3.org/2000/svg'};
|
||||
const NAMESPACE_URIS = {
|
||||
'xlink': 'http://www.w3.org/1999/xlink',
|
||||
'svg': 'http://www.w3.org/2000/svg'
|
||||
};
|
||||
const TEMPLATE_COMMENT_TEXT = 'template bindings={}';
|
||||
var TEMPLATE_BINDINGS_EXP = /^template bindings=(.*)$/g;
|
||||
|
||||
export abstract class DomRootRenderer implements RootRenderer {
|
||||
protected registeredComponents: Map<string, DomRenderer> = new Map<string, DomRenderer>();
|
||||
|
||||
constructor(public document: any, public eventManager: EventManager,
|
||||
public sharedStylesHost: DomSharedStylesHost,
|
||||
public animationDriver: AnimationDriver) {}
|
||||
constructor(
|
||||
public document: any, public eventManager: EventManager,
|
||||
public sharedStylesHost: DomSharedStylesHost, public animationDriver: AnimationDriver) {}
|
||||
|
||||
renderComponent(componentProto: RenderComponentType): Renderer {
|
||||
var renderer = this.registeredComponents.get(componentProto.id);
|
||||
@ -60,9 +39,9 @@ export abstract class DomRootRenderer implements RootRenderer {
|
||||
|
||||
@Injectable()
|
||||
export class DomRootRenderer_ extends DomRootRenderer {
|
||||
constructor(@Inject(DOCUMENT) _document: any, _eventManager: EventManager,
|
||||
sharedStylesHost: DomSharedStylesHost,
|
||||
animationDriver: AnimationDriver) {
|
||||
constructor(
|
||||
@Inject(DOCUMENT) _document: any, _eventManager: EventManager,
|
||||
sharedStylesHost: DomSharedStylesHost, animationDriver: AnimationDriver) {
|
||||
super(_document, _eventManager, sharedStylesHost, animationDriver);
|
||||
}
|
||||
}
|
||||
@ -72,8 +51,9 @@ export class DomRenderer implements Renderer {
|
||||
private _hostAttr: string;
|
||||
private _styles: string[];
|
||||
|
||||
constructor(private _rootRenderer: DomRootRenderer, private componentProto: RenderComponentType,
|
||||
private _animationDriver: AnimationDriver) {
|
||||
constructor(
|
||||
private _rootRenderer: DomRootRenderer, private componentProto: RenderComponentType,
|
||||
private _animationDriver: AnimationDriver) {
|
||||
this._styles = _flattenStyles(componentProto.id, componentProto.styles, []);
|
||||
if (componentProto.encapsulation !== ViewEncapsulation.Native) {
|
||||
this._rootRenderer.sharedStylesHost.addStyles(this._styles);
|
||||
@ -87,7 +67,7 @@ export class DomRenderer implements Renderer {
|
||||
}
|
||||
}
|
||||
|
||||
selectRootElement(selectorOrNode: string | any, debugInfo: RenderDebugInfo): Element {
|
||||
selectRootElement(selectorOrNode: string|any, debugInfo: RenderDebugInfo): Element {
|
||||
var el: any /** TODO #9100 */;
|
||||
if (isString(selectorOrNode)) {
|
||||
el = getDOM().querySelector(this._rootRenderer.document, selectorOrNode);
|
||||
@ -104,8 +84,9 @@ export class DomRenderer implements Renderer {
|
||||
createElement(parent: Element, name: string, debugInfo: RenderDebugInfo): Node {
|
||||
var nsAndName = splitNamespace(name);
|
||||
var el = isPresent(nsAndName[0]) ?
|
||||
getDOM().createElementNS((NAMESPACE_URIS as any /** TODO #9100 */)[nsAndName[0]], nsAndName[1]) :
|
||||
getDOM().createElement(nsAndName[1]);
|
||||
getDOM().createElementNS(
|
||||
(NAMESPACE_URIS as any /** TODO #9100 */)[nsAndName[0]], nsAndName[1]) :
|
||||
getDOM().createElement(nsAndName[1]);
|
||||
if (isPresent(this._contentAttr)) {
|
||||
getDOM().setAttribute(el, this._contentAttr, '');
|
||||
}
|
||||
@ -153,9 +134,7 @@ export class DomRenderer implements Renderer {
|
||||
appendNodes(parentElement, nodes);
|
||||
}
|
||||
|
||||
attachViewAfter(node: any, viewRootNodes: any[]) {
|
||||
moveNodesAfterSibling(node, viewRootNodes);
|
||||
}
|
||||
attachViewAfter(node: any, viewRootNodes: any[]) { moveNodesAfterSibling(node, viewRootNodes); }
|
||||
|
||||
detachView(viewRootNodes: any[]) {
|
||||
for (var i = 0; i < viewRootNodes.length; i++) {
|
||||
@ -170,13 +149,13 @@ export class DomRenderer implements Renderer {
|
||||
}
|
||||
|
||||
listen(renderElement: any, name: string, callback: Function): Function {
|
||||
return this._rootRenderer.eventManager.addEventListener(renderElement, name,
|
||||
decoratePreventDefault(callback));
|
||||
return this._rootRenderer.eventManager.addEventListener(
|
||||
renderElement, name, decoratePreventDefault(callback));
|
||||
}
|
||||
|
||||
listenGlobal(target: string, name: string, callback: Function): Function {
|
||||
return this._rootRenderer.eventManager.addGlobalEventListener(target, name,
|
||||
decoratePreventDefault(callback));
|
||||
return this._rootRenderer.eventManager.addGlobalEventListener(
|
||||
target, name, decoratePreventDefault(callback));
|
||||
}
|
||||
|
||||
setElementProperty(renderElement: any, propertyName: string, propertyValue: any): void {
|
||||
@ -213,8 +192,9 @@ export class DomRenderer implements Renderer {
|
||||
StringWrapper.replaceAll(getDOM().getText(renderElement), /\n/g, ''));
|
||||
var parsedBindings = Json.parse(existingBindings[1]);
|
||||
(parsedBindings as any /** TODO #9100 */)[dashCasedPropertyName] = propertyValue;
|
||||
getDOM().setText(renderElement, StringWrapper.replace(TEMPLATE_COMMENT_TEXT, '{}',
|
||||
Json.stringify(parsedBindings)));
|
||||
getDOM().setText(
|
||||
renderElement,
|
||||
StringWrapper.replace(TEMPLATE_COMMENT_TEXT, '{}', Json.stringify(parsedBindings)));
|
||||
} else {
|
||||
this.setElementAttribute(renderElement, propertyName, propertyValue);
|
||||
}
|
||||
@ -242,11 +222,11 @@ export class DomRenderer implements Renderer {
|
||||
|
||||
setText(renderNode: any, text: string): void { getDOM().setText(renderNode, text); }
|
||||
|
||||
animate(element: any,
|
||||
startingStyles: AnimationStyles,
|
||||
keyframes: AnimationKeyframe[], duration: number, delay: number,
|
||||
easing: string): AnimationPlayer {
|
||||
return this._animationDriver.animate(element, startingStyles, keyframes, duration, delay, easing);
|
||||
animate(
|
||||
element: any, startingStyles: AnimationStyles, keyframes: AnimationKeyframe[],
|
||||
duration: number, delay: number, easing: string): AnimationPlayer {
|
||||
return this._animationDriver.animate(
|
||||
element, startingStyles, keyframes, duration, delay, easing);
|
||||
}
|
||||
}
|
||||
|
||||
@ -295,7 +275,7 @@ function _shimHostAttribute(componentShortId: string): string {
|
||||
return StringWrapper.replaceAll(HOST_ATTR, COMPONENT_REGEX, componentShortId);
|
||||
}
|
||||
|
||||
function _flattenStyles(compId: string, styles: Array<any | any[]>, target: string[]): string[] {
|
||||
function _flattenStyles(compId: string, styles: Array<any|any[]>, target: string[]): string[] {
|
||||
for (var i = 0; i < styles.length; i++) {
|
||||
var style = styles[i];
|
||||
if (isArray(style)) {
|
||||
|
@ -1,10 +1,10 @@
|
||||
import {Injectable, Inject, OpaqueToken, NgZone} from '@angular/core';
|
||||
import {Inject, Injectable, NgZone, OpaqueToken} from '@angular/core';
|
||||
|
||||
import {BaseException} from '../../facade/exceptions';
|
||||
import {ListWrapper} from '../../facade/collection';
|
||||
import {BaseException} from '../../facade/exceptions';
|
||||
|
||||
|
||||
export const EVENT_MANAGER_PLUGINS: OpaqueToken = new OpaqueToken("EventManagerPlugins");
|
||||
export const EVENT_MANAGER_PLUGINS: OpaqueToken = new OpaqueToken('EventManagerPlugins');
|
||||
|
||||
@Injectable()
|
||||
export class EventManager {
|
||||
@ -47,10 +47,10 @@ export class EventManagerPlugin {
|
||||
supports(eventName: string): boolean { return false; }
|
||||
|
||||
addEventListener(element: HTMLElement, eventName: string, handler: Function): Function {
|
||||
throw "not implemented";
|
||||
throw 'not implemented';
|
||||
}
|
||||
|
||||
addGlobalEventListener(element: string, eventName: string, handler: Function): Function {
|
||||
throw "not implemented";
|
||||
throw 'not implemented';
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
import {EventManagerPlugin} from './event_manager';
|
||||
import {StringMapWrapper} from '../../facade/collection';
|
||||
|
||||
import {EventManagerPlugin} from './event_manager';
|
||||
|
||||
var _eventNames = {
|
||||
// pan
|
||||
'pan': true,
|
||||
|
@ -1,9 +1,11 @@
|
||||
import {Injectable, Inject, OpaqueToken} from '@angular/core';
|
||||
import {isPresent} from '../../facade/lang';
|
||||
import {Inject, Injectable, OpaqueToken} from '@angular/core';
|
||||
|
||||
import {BaseException} from '../../facade/exceptions';
|
||||
import {isPresent} from '../../facade/lang';
|
||||
|
||||
import {HammerGesturesPluginCommon} from './hammer_common';
|
||||
|
||||
export const HAMMER_GESTURE_CONFIG: OpaqueToken = new OpaqueToken("HammerGestureConfig");
|
||||
export const HAMMER_GESTURE_CONFIG: OpaqueToken = new OpaqueToken('HammerGestureConfig');
|
||||
|
||||
export interface HammerInstance {
|
||||
on(eventName: string, callback: Function): void;
|
||||
@ -51,7 +53,9 @@ export class HammerGesturesPlugin extends HammerGesturesPluginCommon {
|
||||
return zone.runOutsideAngular(() => {
|
||||
// Creating the manager bind events, must be done outside of angular
|
||||
var mc = this._config.buildHammer(element);
|
||||
var callback = function(eventObj: any /** TODO #???? */) { zone.runGuarded(function() { handler(eventObj); }); };
|
||||
var callback = function(eventObj: any /** TODO #???? */) {
|
||||
zone.runGuarded(function() { handler(eventObj); });
|
||||
};
|
||||
mc.on(eventName, callback);
|
||||
return () => { mc.off(eventName, callback); };
|
||||
});
|
||||
|
@ -1,8 +1,6 @@
|
||||
import {NgZone, Injectable} from '@angular/core';
|
||||
import {
|
||||
isPresent,
|
||||
StringWrapper,
|
||||
} from '../../facade/lang';
|
||||
import {Injectable, NgZone} from '@angular/core';
|
||||
|
||||
import {isPresent, StringWrapper,} from '../../facade/lang';
|
||||
import {StringMapWrapper, ListWrapper} from '../../facade/collection';
|
||||
|
||||
import {getDOM} from '../dom_adapter';
|
||||
@ -32,8 +30,8 @@ export class KeyEventsPlugin extends EventManagerPlugin {
|
||||
element, StringMapWrapper.get(parsedEvent, 'fullKey'), handler, this.manager.getZone());
|
||||
|
||||
return this.manager.getZone().runOutsideAngular(() => {
|
||||
return getDOM().onAndCancel(element, StringMapWrapper.get(parsedEvent, 'domEventName'),
|
||||
outsideHandler);
|
||||
return getDOM().onAndCancel(
|
||||
element, StringMapWrapper.get(parsedEvent, 'domEventName'), outsideHandler);
|
||||
});
|
||||
}
|
||||
|
||||
@ -89,8 +87,8 @@ export class KeyEventsPlugin extends EventManagerPlugin {
|
||||
return fullKey;
|
||||
}
|
||||
|
||||
static eventCallback(element: HTMLElement, fullKey: any, handler: Function,
|
||||
zone: NgZone): Function {
|
||||
static eventCallback(element: HTMLElement, fullKey: any, handler: Function, zone: NgZone):
|
||||
Function {
|
||||
return (event: any /** TODO #9100 */) => {
|
||||
if (StringWrapper.equals(KeyEventsPlugin.getEventFullKey(event), fullKey)) {
|
||||
zone.runGuarded(() => handler(event));
|
||||
|
@ -5,11 +5,11 @@ var DASH_CASE_REGEXP = /-([a-z])/g;
|
||||
|
||||
|
||||
export function camelCaseToDashCase(input: string): string {
|
||||
return StringWrapper.replaceAllMapped(input, CAMEL_CASE_REGEXP,
|
||||
(m: any /** TODO #9100 */) => { return '-' + m[1].toLowerCase(); });
|
||||
return StringWrapper.replaceAllMapped(
|
||||
input, CAMEL_CASE_REGEXP, (m: any /** TODO #9100 */) => { return '-' + m[1].toLowerCase(); });
|
||||
}
|
||||
|
||||
export function dashCaseToCamelCase(input: string): string {
|
||||
return StringWrapper.replaceAllMapped(input, DASH_CASE_REGEXP,
|
||||
(m: any /** TODO #9100 */) => { return m[1].toUpperCase(); });
|
||||
return StringWrapper.replaceAllMapped(
|
||||
input, DASH_CASE_REGEXP, (m: any /** TODO #9100 */) => { return m[1].toUpperCase(); });
|
||||
}
|
||||
|
@ -1,27 +1,20 @@
|
||||
import {AUTO_STYLE, BaseException} from '@angular/core';
|
||||
|
||||
import {AnimationDriver, AnimationKeyframe, AnimationPlayer, AnimationStyles, NoOpAnimationPlayer} from '../../core_private';
|
||||
import {StringMapWrapper} from '../facade/collection';
|
||||
import {isPresent, isNumber, StringWrapper} from '../facade/lang';
|
||||
import {BaseException, AUTO_STYLE} from '@angular/core';
|
||||
|
||||
import {
|
||||
AnimationDriver,
|
||||
AnimationPlayer,
|
||||
NoOpAnimationPlayer,
|
||||
AnimationKeyframe,
|
||||
AnimationStyles
|
||||
} from '../../core_private';
|
||||
|
||||
import {WebAnimationsPlayer} from './web_animations_player';
|
||||
import {StringWrapper, isNumber, isPresent} from '../facade/lang';
|
||||
|
||||
import {getDOM} from './dom_adapter';
|
||||
import {WebAnimationsPlayer} from './web_animations_player';
|
||||
|
||||
export class WebAnimationsDriver implements AnimationDriver {
|
||||
animate(element: any, startingStyles: AnimationStyles, keyframes: AnimationKeyframe[], duration: number, delay: number,
|
||||
easing: string): AnimationPlayer {
|
||||
|
||||
animate(
|
||||
element: any, startingStyles: AnimationStyles, keyframes: AnimationKeyframe[],
|
||||
duration: number, delay: number, easing: string): AnimationPlayer {
|
||||
var anyElm = <any>element;
|
||||
|
||||
var formattedSteps: any[] /** TODO #9100 */ = [];
|
||||
var startingStyleLookup: {[key: string]: string|number}= {};
|
||||
var startingStyleLookup: {[key: string]: string | number} = {};
|
||||
if (isPresent(startingStyles) && startingStyles.styles.length > 0) {
|
||||
startingStyleLookup = _populateStyles(anyElm, startingStyles, {});
|
||||
startingStyleLookup['offset'] = 0;
|
||||
@ -52,20 +45,22 @@ export class WebAnimationsDriver implements AnimationDriver {
|
||||
}
|
||||
}
|
||||
|
||||
function _populateStyles(element: any, styles: AnimationStyles, defaultStyles: {[key: string]: string|number}) {
|
||||
function _populateStyles(
|
||||
element: any, styles: AnimationStyles, defaultStyles: {[key: string]: string | number}) {
|
||||
var data = {};
|
||||
styles.styles.forEach((entry) => {
|
||||
StringMapWrapper.forEach(entry, (val: any /** TODO #9100 */, prop: any /** TODO #9100 */) => {
|
||||
(data as any /** TODO #9100 */)[prop] = val == AUTO_STYLE
|
||||
? _computeStyle(element, prop)
|
||||
: val.toString() + _resolveStyleUnit(val, prop);
|
||||
(data as any /** TODO #9100 */)[prop] = val == AUTO_STYLE ?
|
||||
_computeStyle(element, prop) :
|
||||
val.toString() + _resolveStyleUnit(val, prop);
|
||||
});
|
||||
});
|
||||
StringMapWrapper.forEach(defaultStyles, (value: any /** TODO #9100 */, prop: any /** TODO #9100 */) => {
|
||||
if (!isPresent((data as any /** TODO #9100 */)[prop])) {
|
||||
(data as any /** TODO #9100 */)[prop] = value;
|
||||
}
|
||||
});
|
||||
StringMapWrapper.forEach(
|
||||
defaultStyles, (value: any /** TODO #9100 */, prop: any /** TODO #9100 */) => {
|
||||
if (!isPresent((data as any /** TODO #9100 */)[prop])) {
|
||||
(data as any /** TODO #9100 */)[prop] = value;
|
||||
}
|
||||
});
|
||||
return data;
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
import {isPresent} from '../facade/lang';
|
||||
import {AnimationPlayer} from '../../core_private';
|
||||
import {isPresent} from '../facade/lang';
|
||||
|
||||
import {DomAnimatePlayer} from './dom_animate_player';
|
||||
|
||||
export class WebAnimationsPlayer implements AnimationPlayer {
|
||||
@ -47,11 +48,7 @@ export class WebAnimationsPlayer implements AnimationPlayer {
|
||||
this._onFinish();
|
||||
}
|
||||
|
||||
setPosition(p: any /** TODO #9100 */): void {
|
||||
this._player.currentTime = p * this.totalTime;
|
||||
}
|
||||
setPosition(p: any /** TODO #9100 */): void { this._player.currentTime = p * this.totalTime; }
|
||||
|
||||
getPosition(): number {
|
||||
return this._player.currentTime / this.totalTime;
|
||||
}
|
||||
getPosition(): number { return this._player.currentTime / this.totalTime; }
|
||||
}
|
||||
|
@ -1,13 +1,14 @@
|
||||
import {Injectable} from '@angular/core';
|
||||
|
||||
import {SecurityContext, SanitizationService} from '../../core_private';
|
||||
import {SanitizationService, SecurityContext} from '../../core_private';
|
||||
|
||||
import {sanitizeHtml} from './html_sanitizer';
|
||||
import {sanitizeUrl} from './url_sanitizer';
|
||||
import {sanitizeStyle} from './style_sanitizer';
|
||||
import {sanitizeUrl} from './url_sanitizer';
|
||||
|
||||
export {SecurityContext};
|
||||
|
||||
|
||||
/** Marker interface for a value that's safe to use in a particular context. */
|
||||
export interface SafeValue {}
|
||||
/** Marker interface for a value that's safe to use as HTML. */
|
||||
|
@ -1,8 +1,9 @@
|
||||
import {getDOM, DomAdapter} from '../dom/dom_adapter';
|
||||
import {DomAdapter, getDOM} from '../dom/dom_adapter';
|
||||
import {assertionsEnabled} from '../facade/lang';
|
||||
|
||||
import {sanitizeUrl} from './url_sanitizer';
|
||||
|
||||
|
||||
/** A <body> element that can be safely used to parse untrusted HTML. Lazily initialized below. */
|
||||
let inertElement: HTMLElement = null;
|
||||
/** Lazily initialized to make sure the DOM adapter gets set before use. */
|
||||
@ -36,7 +37,7 @@ function tagSet(tags: string): {[k: string]: boolean} {
|
||||
return res;
|
||||
}
|
||||
|
||||
function merge(...sets: { [k: string]: boolean }[]): {[k: string]: boolean} {
|
||||
function merge(...sets: {[k: string]: boolean}[]): {[k: string]: boolean} {
|
||||
let res: {[k: string]: boolean} = {};
|
||||
for (let s of sets) {
|
||||
for (let v in s) {
|
||||
@ -72,9 +73,10 @@ const BLOCK_ELEMENTS = merge(
|
||||
// Inline Elements - HTML5
|
||||
const INLINE_ELEMENTS = merge(
|
||||
OPTIONAL_END_TAG_INLINE_ELEMENTS,
|
||||
tagSet('a,abbr,acronym,b,' +
|
||||
'bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,' +
|
||||
'samp,small,span,strike,strong,sub,sup,time,tt,u,var'));
|
||||
tagSet(
|
||||
'a,abbr,acronym,b,' +
|
||||
'bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,' +
|
||||
'samp,small,span,strike,strong,sub,sup,time,tt,u,var'));
|
||||
|
||||
const VALID_ELEMENTS =
|
||||
merge(VOID_ELEMENTS, BLOCK_ELEMENTS, INLINE_ELEMENTS, OPTIONAL_END_TAG_ELEMENTS);
|
||||
@ -82,12 +84,12 @@ const VALID_ELEMENTS =
|
||||
// Attributes that have href and hence need to be sanitized
|
||||
const URI_ATTRS = tagSet('background,cite,href,longdesc,src,xlink:href');
|
||||
|
||||
const HTML_ATTRS =
|
||||
tagSet('abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,' +
|
||||
'color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,' +
|
||||
'ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,' +
|
||||
'scope,scrolling,shape,size,span,start,summary,tabindex,target,title,type,' +
|
||||
'valign,value,vspace,width');
|
||||
const HTML_ATTRS = tagSet(
|
||||
'abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,' +
|
||||
'color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,' +
|
||||
'ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,' +
|
||||
'scope,scrolling,shape,size,span,start,summary,tabindex,target,title,type,' +
|
||||
'valign,value,vspace,width');
|
||||
|
||||
// NB: This currently conciously doesn't support SVG. SVG sanitization has had several security
|
||||
// issues in the past, so it seems safer to leave it out if possible. If support for binding SVG via
|
||||
@ -183,14 +185,16 @@ const NON_ALPHANUMERIC_REGEXP = /([^\#-~ |!])/g;
|
||||
*/
|
||||
function encodeEntities(value: any /** TODO #9100 */) {
|
||||
return value.replace(/&/g, '&')
|
||||
.replace(SURROGATE_PAIR_REGEXP,
|
||||
function(match: any /** TODO #9100 */) {
|
||||
let hi = match.charCodeAt(0);
|
||||
let low = match.charCodeAt(1);
|
||||
return '&#' + (((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000) + ';';
|
||||
})
|
||||
.replace(NON_ALPHANUMERIC_REGEXP,
|
||||
function(match: any /** TODO #9100 */) { return '&#' + match.charCodeAt(0) + ';'; })
|
||||
.replace(
|
||||
SURROGATE_PAIR_REGEXP,
|
||||
function(match: any /** TODO #9100 */) {
|
||||
let hi = match.charCodeAt(0);
|
||||
let low = match.charCodeAt(1);
|
||||
return '&#' + (((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000) + ';';
|
||||
})
|
||||
.replace(
|
||||
NON_ALPHANUMERIC_REGEXP,
|
||||
function(match: any /** TODO #9100 */) { return '&#' + match.charCodeAt(0) + ';'; })
|
||||
.replace(/</g, '<')
|
||||
.replace(/>/g, '>');
|
||||
}
|
||||
|
@ -30,7 +30,8 @@ import {assertionsEnabled} from '../facade/lang';
|
||||
const SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi;
|
||||
|
||||
/** A pattern that matches safe data URLs. Only matches image and video types. */
|
||||
const DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm));base64,[a-z0-9+\/]+=*$/i;
|
||||
const DATA_URL_PATTERN =
|
||||
/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm));base64,[a-z0-9+\/]+=*$/i;
|
||||
|
||||
export function sanitizeUrl(url: string): string {
|
||||
url = String(url);
|
||||
|
@ -1,15 +1,12 @@
|
||||
import {MessageBus} from './message_bus';
|
||||
import {print, isPresent, DateWrapper, stringify, StringWrapper} from '../../facade/lang';
|
||||
import {
|
||||
PromiseCompleter,
|
||||
PromiseWrapper,
|
||||
ObservableWrapper,
|
||||
EventEmitter
|
||||
} from '../../facade/async';
|
||||
import {StringMapWrapper} from '../../facade/collection';
|
||||
import {Serializer} from './serializer';
|
||||
import {Injectable, Type} from '@angular/core';
|
||||
|
||||
import {EventEmitter, ObservableWrapper, PromiseCompleter, PromiseWrapper} from '../../facade/async';
|
||||
import {StringMapWrapper} from '../../facade/collection';
|
||||
import {DateWrapper, StringWrapper, isPresent, print, stringify} from '../../facade/lang';
|
||||
|
||||
import {MessageBus} from './message_bus';
|
||||
import {Serializer} from './serializer';
|
||||
|
||||
export abstract class ClientMessageBrokerFactory {
|
||||
/**
|
||||
* Initializes the given channel and attaches a new {@link ClientMessageBroker} to it.
|
||||
@ -45,13 +42,14 @@ export class ClientMessageBroker_ extends ClientMessageBroker {
|
||||
/** @internal */
|
||||
public _serializer: Serializer;
|
||||
|
||||
constructor(messageBus: MessageBus, _serializer: Serializer, public channel: any /** TODO #9100 */) {
|
||||
constructor(
|
||||
messageBus: MessageBus, _serializer: Serializer, public channel: any /** TODO #9100 */) {
|
||||
super();
|
||||
this._sink = messageBus.to(channel);
|
||||
this._serializer = _serializer;
|
||||
var source = messageBus.from(channel);
|
||||
ObservableWrapper.subscribe(source,
|
||||
(message: {[key: string]: any}) => this._handleMessage(message));
|
||||
ObservableWrapper.subscribe(
|
||||
source, (message: {[key: string]: any}) => this._handleMessage(message));
|
||||
}
|
||||
|
||||
private _generateMessageId(name: string): string {
|
||||
@ -112,10 +110,10 @@ export class ClientMessageBroker_ extends ClientMessageBroker {
|
||||
private _handleMessage(message: {[key: string]: any}): void {
|
||||
var data = new MessageData(message);
|
||||
// TODO(jteplitz602): replace these strings with messaging constants #3685
|
||||
if (StringWrapper.equals(data.type, "result") || StringWrapper.equals(data.type, "error")) {
|
||||
if (StringWrapper.equals(data.type, 'result') || StringWrapper.equals(data.type, 'error')) {
|
||||
var id = data.id;
|
||||
if (this._pending.has(id)) {
|
||||
if (StringWrapper.equals(data.type, "result")) {
|
||||
if (StringWrapper.equals(data.type, 'result')) {
|
||||
this._pending.get(id).resolve(data.value);
|
||||
} else {
|
||||
this._pending.get(id).reject(data.value, null);
|
||||
@ -132,9 +130,9 @@ class MessageData {
|
||||
id: string;
|
||||
|
||||
constructor(data: {[key: string]: any}) {
|
||||
this.type = StringMapWrapper.get(data, "type");
|
||||
this.id = this._getValueIfPresent(data, "id");
|
||||
this.value = this._getValueIfPresent(data, "value");
|
||||
this.type = StringMapWrapper.get(data, 'type');
|
||||
this.id = this._getValueIfPresent(data, 'id');
|
||||
this.value = this._getValueIfPresent(data, 'value');
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1,6 +1,8 @@
|
||||
import {EventEmitter} from '../../facade/async';
|
||||
import {NgZone} from '@angular/core';
|
||||
|
||||
import {EventEmitter} from '../../facade/async';
|
||||
|
||||
|
||||
/**
|
||||
* Message Bus is a low level API used to communicate between the UI and the background.
|
||||
* Communication is based on a channel abstraction. Messages published in a
|
||||
|
@ -2,6 +2,6 @@
|
||||
* All channels used by angular's WebWorker components are listed here.
|
||||
* You should not use these channels in your application code.
|
||||
*/
|
||||
export const RENDERER_CHANNEL = "ng-Renderer";
|
||||
export const EVENT_CHANNEL = "ng-Events";
|
||||
export const ROUTER_CHANNEL = "ng-Router";
|
||||
export const RENDERER_CHANNEL = 'ng-Renderer';
|
||||
export const EVENT_CHANNEL = 'ng-Events';
|
||||
export const ROUTER_CHANNEL = 'ng-Router';
|
||||
|
@ -1,11 +1,16 @@
|
||||
import {MessageBus, MessageBusSource, MessageBusSink} from './message_bus';
|
||||
import {BaseException} from '../../facade/exceptions';
|
||||
import {EventEmitter, ObservableWrapper} from '../../facade/async';
|
||||
import {StringMapWrapper} from '../../facade/collection';
|
||||
import {Injectable, NgZone} from '@angular/core';
|
||||
|
||||
import {EventEmitter, ObservableWrapper} from '../../facade/async';
|
||||
import {StringMapWrapper} from '../../facade/collection';
|
||||
import {BaseException} from '../../facade/exceptions';
|
||||
|
||||
import {MessageBus, MessageBusSink, MessageBusSource} from './message_bus';
|
||||
|
||||
|
||||
// TODO(jteplitz602) Replace this with the definition in lib.webworker.d.ts(#3492)
|
||||
export interface PostMessageTarget { postMessage: (message: any, transfer?:[ArrayBuffer]) => void; }
|
||||
export interface PostMessageTarget {
|
||||
postMessage: (message: any, transfer?: [ArrayBuffer]) => void;
|
||||
}
|
||||
|
||||
export class PostMessageBusSink implements MessageBusSink {
|
||||
private _zone: NgZone;
|
||||
@ -63,11 +68,11 @@ export class PostMessageBusSource implements MessageBusSource {
|
||||
|
||||
constructor(eventTarget?: EventTarget) {
|
||||
if (eventTarget) {
|
||||
eventTarget.addEventListener("message", (ev: MessageEvent) => this._handleMessages(ev));
|
||||
eventTarget.addEventListener('message', (ev: MessageEvent) => this._handleMessages(ev));
|
||||
} else {
|
||||
// if no eventTarget is given we assume we're in a WebWorker and listen on the global scope
|
||||
const workerScope = <EventTarget>self;
|
||||
workerScope.addEventListener("message", (ev: MessageEvent) => this._handleMessages(ev));
|
||||
workerScope.addEventListener('message', (ev: MessageEvent) => this._handleMessages(ev));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,8 @@
|
||||
// This file contains interface versions of browser types that can be serialized to Plain Old
|
||||
// JavaScript Objects
|
||||
export class LocationType {
|
||||
constructor(public href: string, public protocol: string, public host: string,
|
||||
public hostname: string, public port: string, public pathname: string,
|
||||
public search: string, public hash: string, public origin: string) {}
|
||||
constructor(
|
||||
public href: string, public protocol: string, public host: string, public hostname: string,
|
||||
public port: string, public pathname: string, public search: string, public hash: string,
|
||||
public origin: string) {}
|
||||
}
|
||||
|
@ -1,11 +1,14 @@
|
||||
import {Type, isArray, isPresent, serializeEnum} from '../../facade/lang';
|
||||
import {BaseException} from '../../facade/exceptions';
|
||||
import {Map, StringMapWrapper, MapWrapper} from '../../facade/collection';
|
||||
import {RenderComponentType, Injectable, ViewEncapsulation} from '@angular/core';
|
||||
import {Injectable, RenderComponentType, ViewEncapsulation} from '@angular/core';
|
||||
|
||||
import {VIEW_ENCAPSULATION_VALUES} from '../../../core_private';
|
||||
import {Map, MapWrapper, StringMapWrapper} from '../../facade/collection';
|
||||
import {BaseException} from '../../facade/exceptions';
|
||||
import {Type, isArray, isPresent, serializeEnum} from '../../facade/lang';
|
||||
|
||||
import {RenderStore} from './render_store';
|
||||
import {LocationType} from './serialized_types';
|
||||
|
||||
|
||||
// PRIMITIVE is any type that does not need to be serialized (string, number, boolean)
|
||||
// We set it to String so that it is considered a Type.
|
||||
export const PRIMITIVE: Type = String;
|
||||
@ -33,7 +36,7 @@ export class Serializer {
|
||||
} else if (type === LocationType) {
|
||||
return this._serializeLocation(obj);
|
||||
} else {
|
||||
throw new BaseException("No serializer for " + type.toString());
|
||||
throw new BaseException('No serializer for ' + type.toString());
|
||||
}
|
||||
}
|
||||
|
||||
@ -59,7 +62,7 @@ export class Serializer {
|
||||
} else if (type === LocationType) {
|
||||
return this._deserializeLocation(map);
|
||||
} else {
|
||||
throw new BaseException("No deserializer for " + type.toString());
|
||||
throw new BaseException('No deserializer for ' + type.toString());
|
||||
}
|
||||
}
|
||||
|
||||
@ -78,8 +81,9 @@ export class Serializer {
|
||||
}
|
||||
|
||||
private _deserializeLocation(loc: {[key: string]: any}): LocationType {
|
||||
return new LocationType(loc['href'], loc['protocol'], loc['host'], loc['hostname'], loc['port'],
|
||||
loc['pathname'], loc['search'], loc['hash'], loc['origin']);
|
||||
return new LocationType(
|
||||
loc['href'], loc['protocol'], loc['host'], loc['hostname'], loc['port'], loc['pathname'],
|
||||
loc['search'], loc['hash'], loc['origin']);
|
||||
}
|
||||
|
||||
private _serializeRenderComponentType(obj: RenderComponentType): Object {
|
||||
@ -93,9 +97,10 @@ export class Serializer {
|
||||
}
|
||||
|
||||
private _deserializeRenderComponentType(map: {[key: string]: any}): RenderComponentType {
|
||||
return new RenderComponentType(map['id'], map['templateUrl'], map['slotCount'],
|
||||
this.deserialize(map['encapsulation'], ViewEncapsulation),
|
||||
this.deserialize(map['styles'], PRIMITIVE));
|
||||
return new RenderComponentType(
|
||||
map['id'], map['templateUrl'], map['slotCount'],
|
||||
this.deserialize(map['encapsulation'], ViewEncapsulation),
|
||||
this.deserialize(map['styles'], PRIMITIVE));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,9 +1,10 @@
|
||||
import {Injectable} from '@angular/core';
|
||||
|
||||
import {EventEmitter, ObservableWrapper, PromiseWrapper} from '../../facade/async';
|
||||
import {ListWrapper, Map} from '../../facade/collection';
|
||||
import {Serializer} from '../shared/serializer';
|
||||
import {isPresent, Type, FunctionWrapper} from '../../facade/lang';
|
||||
import {FunctionWrapper, Type, isPresent} from '../../facade/lang';
|
||||
import {MessageBus} from '../shared/message_bus';
|
||||
import {EventEmitter, PromiseWrapper, ObservableWrapper} from '../../facade/async';
|
||||
import {Serializer} from '../shared/serializer';
|
||||
|
||||
export abstract class ServiceMessageBrokerFactory {
|
||||
/**
|
||||
@ -29,8 +30,8 @@ export class ServiceMessageBrokerFactory_ extends ServiceMessageBrokerFactory {
|
||||
}
|
||||
|
||||
export abstract class ServiceMessageBroker {
|
||||
abstract registerMethod(methodName: string, signature: Type[], method: Function,
|
||||
returnType?: Type): void;
|
||||
abstract registerMethod(
|
||||
methodName: string, signature: Type[], method: Function, returnType?: Type): void;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -43,15 +44,18 @@ export class ServiceMessageBroker_ extends ServiceMessageBroker {
|
||||
private _sink: EventEmitter<any>;
|
||||
private _methods: Map<string, Function> = new Map<string, Function>();
|
||||
|
||||
constructor(messageBus: MessageBus, private _serializer: Serializer, public channel: any /** TODO #9100 */) {
|
||||
constructor(
|
||||
messageBus: MessageBus, private _serializer: Serializer,
|
||||
public channel: any /** TODO #9100 */) {
|
||||
super();
|
||||
this._sink = messageBus.to(channel);
|
||||
var source = messageBus.from(channel);
|
||||
ObservableWrapper.subscribe(source, (message) => this._handleMessage(message));
|
||||
}
|
||||
|
||||
registerMethod(methodName: string, signature: Type[], method: (..._: any[]) => Promise<any>| void,
|
||||
returnType?: Type): void {
|
||||
registerMethod(
|
||||
methodName: string, signature: Type[], method: (..._: any[]) => Promise<any>| void,
|
||||
returnType?: Type): void {
|
||||
this._methods.set(methodName, (message: ReceivedMessage) => {
|
||||
var serializedArgs = message.args;
|
||||
let numArgs = signature === null ? 0 : signature.length;
|
||||
|
@ -1,13 +1,8 @@
|
||||
import {Serializer, RenderStoreObject} from '../shared/serializer';
|
||||
import {
|
||||
serializeMouseEvent,
|
||||
serializeKeyboardEvent,
|
||||
serializeGenericEvent,
|
||||
serializeEventWithTarget,
|
||||
serializeTransitionEvent
|
||||
} from './event_serializer';
|
||||
import {BaseException} from '../../facade/exceptions';
|
||||
import {EventEmitter, ObservableWrapper} from '../../facade/async';
|
||||
import {BaseException} from '../../facade/exceptions';
|
||||
import {RenderStoreObject, Serializer} from '../shared/serializer';
|
||||
|
||||
import {serializeEventWithTarget, serializeGenericEvent, serializeKeyboardEvent, serializeMouseEvent, serializeTransitionEvent} from './event_serializer';
|
||||
|
||||
export class EventDispatcher {
|
||||
constructor(private _sink: EventEmitter<any>, private _serializer: Serializer) {}
|
||||
@ -16,90 +11,90 @@ export class EventDispatcher {
|
||||
var serializedEvent: any /** TODO #9100 */;
|
||||
// TODO (jteplitz602): support custom events #3350
|
||||
switch (event.type) {
|
||||
case "click":
|
||||
case "mouseup":
|
||||
case "mousedown":
|
||||
case "dblclick":
|
||||
case "contextmenu":
|
||||
case "mouseenter":
|
||||
case "mouseleave":
|
||||
case "mousemove":
|
||||
case "mouseout":
|
||||
case "mouseover":
|
||||
case "show":
|
||||
case 'click':
|
||||
case 'mouseup':
|
||||
case 'mousedown':
|
||||
case 'dblclick':
|
||||
case 'contextmenu':
|
||||
case 'mouseenter':
|
||||
case 'mouseleave':
|
||||
case 'mousemove':
|
||||
case 'mouseout':
|
||||
case 'mouseover':
|
||||
case 'show':
|
||||
serializedEvent = serializeMouseEvent(event);
|
||||
break;
|
||||
case "keydown":
|
||||
case "keypress":
|
||||
case "keyup":
|
||||
case 'keydown':
|
||||
case 'keypress':
|
||||
case 'keyup':
|
||||
serializedEvent = serializeKeyboardEvent(event);
|
||||
break;
|
||||
case "input":
|
||||
case "change":
|
||||
case "blur":
|
||||
case 'input':
|
||||
case 'change':
|
||||
case 'blur':
|
||||
serializedEvent = serializeEventWithTarget(event);
|
||||
break;
|
||||
case "abort":
|
||||
case "afterprint":
|
||||
case "beforeprint":
|
||||
case "cached":
|
||||
case "canplay":
|
||||
case "canplaythrough":
|
||||
case "chargingchange":
|
||||
case "chargingtimechange":
|
||||
case "close":
|
||||
case "dischargingtimechange":
|
||||
case "DOMContentLoaded":
|
||||
case "downloading":
|
||||
case "durationchange":
|
||||
case "emptied":
|
||||
case "ended":
|
||||
case "error":
|
||||
case "fullscreenchange":
|
||||
case "fullscreenerror":
|
||||
case "invalid":
|
||||
case "languagechange":
|
||||
case "levelfchange":
|
||||
case "loadeddata":
|
||||
case "loadedmetadata":
|
||||
case "obsolete":
|
||||
case "offline":
|
||||
case "online":
|
||||
case "open":
|
||||
case "orientatoinchange":
|
||||
case "pause":
|
||||
case "pointerlockchange":
|
||||
case "pointerlockerror":
|
||||
case "play":
|
||||
case "playing":
|
||||
case "ratechange":
|
||||
case "readystatechange":
|
||||
case "reset":
|
||||
case "scroll":
|
||||
case "seeked":
|
||||
case "seeking":
|
||||
case "stalled":
|
||||
case "submit":
|
||||
case "success":
|
||||
case "suspend":
|
||||
case "timeupdate":
|
||||
case "updateready":
|
||||
case "visibilitychange":
|
||||
case "volumechange":
|
||||
case "waiting":
|
||||
case 'abort':
|
||||
case 'afterprint':
|
||||
case 'beforeprint':
|
||||
case 'cached':
|
||||
case 'canplay':
|
||||
case 'canplaythrough':
|
||||
case 'chargingchange':
|
||||
case 'chargingtimechange':
|
||||
case 'close':
|
||||
case 'dischargingtimechange':
|
||||
case 'DOMContentLoaded':
|
||||
case 'downloading':
|
||||
case 'durationchange':
|
||||
case 'emptied':
|
||||
case 'ended':
|
||||
case 'error':
|
||||
case 'fullscreenchange':
|
||||
case 'fullscreenerror':
|
||||
case 'invalid':
|
||||
case 'languagechange':
|
||||
case 'levelfchange':
|
||||
case 'loadeddata':
|
||||
case 'loadedmetadata':
|
||||
case 'obsolete':
|
||||
case 'offline':
|
||||
case 'online':
|
||||
case 'open':
|
||||
case 'orientatoinchange':
|
||||
case 'pause':
|
||||
case 'pointerlockchange':
|
||||
case 'pointerlockerror':
|
||||
case 'play':
|
||||
case 'playing':
|
||||
case 'ratechange':
|
||||
case 'readystatechange':
|
||||
case 'reset':
|
||||
case 'scroll':
|
||||
case 'seeked':
|
||||
case 'seeking':
|
||||
case 'stalled':
|
||||
case 'submit':
|
||||
case 'success':
|
||||
case 'suspend':
|
||||
case 'timeupdate':
|
||||
case 'updateready':
|
||||
case 'visibilitychange':
|
||||
case 'volumechange':
|
||||
case 'waiting':
|
||||
serializedEvent = serializeGenericEvent(event);
|
||||
break;
|
||||
case "transitionend":
|
||||
case 'transitionend':
|
||||
serializedEvent = serializeTransitionEvent(event);
|
||||
break;
|
||||
default:
|
||||
throw new BaseException(eventName + " not supported on WebWorkers");
|
||||
throw new BaseException(eventName + ' not supported on WebWorkers');
|
||||
}
|
||||
ObservableWrapper.callEmit(this._sink, {
|
||||
"element": this._serializer.serialize(element, RenderStoreObject),
|
||||
"eventName": eventName,
|
||||
"eventTarget": eventTarget,
|
||||
"event": serializedEvent
|
||||
'element': this._serializer.serialize(element, RenderStoreObject),
|
||||
'eventName': eventName,
|
||||
'eventTarget': eventTarget,
|
||||
'event': serializedEvent
|
||||
});
|
||||
|
||||
// TODO(kegluneq): Eventually, we want the user to indicate from the UI side whether the event
|
||||
|
@ -2,34 +2,13 @@ import {Set} from '../../facade/collection';
|
||||
import {isPresent} from '../../facade/lang';
|
||||
|
||||
const MOUSE_EVENT_PROPERTIES = [
|
||||
"altKey",
|
||||
"button",
|
||||
"clientX",
|
||||
"clientY",
|
||||
"metaKey",
|
||||
"movementX",
|
||||
"movementY",
|
||||
"offsetX",
|
||||
"offsetY",
|
||||
"region",
|
||||
"screenX",
|
||||
"screenY",
|
||||
"shiftKey"
|
||||
'altKey', 'button', 'clientX', 'clientY', 'metaKey', 'movementX', 'movementY', 'offsetX',
|
||||
'offsetY', 'region', 'screenX', 'screenY', 'shiftKey'
|
||||
];
|
||||
|
||||
const KEYBOARD_EVENT_PROPERTIES = [
|
||||
'altkey',
|
||||
'charCode',
|
||||
'code',
|
||||
'ctrlKey',
|
||||
'isComposing',
|
||||
'key',
|
||||
'keyCode',
|
||||
'location',
|
||||
'metaKey',
|
||||
'repeat',
|
||||
'shiftKey',
|
||||
'which'
|
||||
'altkey', 'charCode', 'code', 'ctrlKey', 'isComposing', 'key', 'keyCode', 'location', 'metaKey',
|
||||
'repeat', 'shiftKey', 'which'
|
||||
];
|
||||
|
||||
const TRANSITION_EVENT_PROPERTIES = ['propertyName', 'elapsedTime', 'pseudoElement'];
|
||||
@ -37,7 +16,7 @@ const TRANSITION_EVENT_PROPERTIES = ['propertyName', 'elapsedTime', 'pseudoEleme
|
||||
const EVENT_PROPERTIES = ['type', 'bubbles', 'cancelable'];
|
||||
|
||||
const NODES_WITH_VALUE = new Set(
|
||||
["input", "select", "option", "button", "li", "meter", "progress", "param", "textarea"]);
|
||||
['input', 'select', 'option', 'button', 'li', 'meter', 'progress', 'param', 'textarea']);
|
||||
|
||||
export function serializeGenericEvent(e: Event): {[key: string]: any} {
|
||||
return serializeEvent(e, EVENT_PROPERTIES);
|
||||
|
@ -1,14 +1,16 @@
|
||||
import {MessageBasedPlatformLocation} from './platform_location';
|
||||
import {BrowserPlatformLocation} from '../../browser/location/browser_platform_location';
|
||||
import {APP_INITIALIZER, Injector, NgZone} from '@angular/core';
|
||||
|
||||
import {BrowserPlatformLocation} from '../../browser/location/browser_platform_location';
|
||||
|
||||
import {MessageBasedPlatformLocation} from './platform_location';
|
||||
|
||||
|
||||
/**
|
||||
* A list of {@link Provider}s. To use the router in a Worker enabled application you must
|
||||
* include these providers when setting up the render thread.
|
||||
*/
|
||||
export const WORKER_RENDER_LOCATION_PROVIDERS = [
|
||||
MessageBasedPlatformLocation,
|
||||
BrowserPlatformLocation,
|
||||
MessageBasedPlatformLocation, BrowserPlatformLocation,
|
||||
{provide: APP_INITIALIZER, useFactory: initUiLocation, multi: true, deps: [Injector]}
|
||||
];
|
||||
|
||||
|
@ -1,22 +1,24 @@
|
||||
import {BrowserPlatformLocation} from '../../browser/location/browser_platform_location';
|
||||
import {UrlChangeListener} from '@angular/common';
|
||||
import {Injectable} from '@angular/core';
|
||||
import {ROUTER_CHANNEL} from '../shared/messaging_api';
|
||||
import {ServiceMessageBrokerFactory, ServiceMessageBroker} from '../shared/service_message_broker';
|
||||
import {PRIMITIVE, Serializer} from '../shared/serializer';
|
||||
import {LocationType} from '../shared/serialized_types';
|
||||
import {MessageBus} from '../shared/message_bus';
|
||||
|
||||
import {BrowserPlatformLocation} from '../../browser/location/browser_platform_location';
|
||||
import {EventEmitter, ObservableWrapper, PromiseWrapper} from '../../facade/async';
|
||||
import {FunctionWrapper} from '../../facade/lang';
|
||||
import {MessageBus} from '../shared/message_bus';
|
||||
import {ROUTER_CHANNEL} from '../shared/messaging_api';
|
||||
import {LocationType} from '../shared/serialized_types';
|
||||
import {PRIMITIVE, Serializer} from '../shared/serializer';
|
||||
import {ServiceMessageBroker, ServiceMessageBrokerFactory} from '../shared/service_message_broker';
|
||||
|
||||
@Injectable()
|
||||
export class MessageBasedPlatformLocation {
|
||||
private _channelSink: EventEmitter<Object>;
|
||||
private _broker: ServiceMessageBroker;
|
||||
|
||||
constructor(private _brokerFactory: ServiceMessageBrokerFactory,
|
||||
private _platformLocation: BrowserPlatformLocation, bus: MessageBus,
|
||||
private _serializer: Serializer) {
|
||||
constructor(
|
||||
private _brokerFactory: ServiceMessageBrokerFactory,
|
||||
private _platformLocation: BrowserPlatformLocation, bus: MessageBus,
|
||||
private _serializer: Serializer) {
|
||||
this._platformLocation.onPopState(
|
||||
<UrlChangeListener>FunctionWrapper.bind(this._sendUrlChangeEvent, this));
|
||||
this._platformLocation.onHashChange(
|
||||
@ -26,21 +28,21 @@ export class MessageBasedPlatformLocation {
|
||||
}
|
||||
|
||||
start(): void {
|
||||
this._broker.registerMethod("getLocation", null, FunctionWrapper.bind(this._getLocation, this),
|
||||
LocationType);
|
||||
this._broker.registerMethod("setPathname", [PRIMITIVE],
|
||||
FunctionWrapper.bind(this._setPathname, this));
|
||||
this._broker.registerMethod(
|
||||
"pushState", [PRIMITIVE, PRIMITIVE, PRIMITIVE],
|
||||
'getLocation', null, FunctionWrapper.bind(this._getLocation, this), LocationType);
|
||||
this._broker.registerMethod(
|
||||
'setPathname', [PRIMITIVE], FunctionWrapper.bind(this._setPathname, this));
|
||||
this._broker.registerMethod(
|
||||
'pushState', [PRIMITIVE, PRIMITIVE, PRIMITIVE],
|
||||
FunctionWrapper.bind(this._platformLocation.pushState, this._platformLocation));
|
||||
this._broker.registerMethod(
|
||||
"replaceState", [PRIMITIVE, PRIMITIVE, PRIMITIVE],
|
||||
'replaceState', [PRIMITIVE, PRIMITIVE, PRIMITIVE],
|
||||
FunctionWrapper.bind(this._platformLocation.replaceState, this._platformLocation));
|
||||
this._broker.registerMethod(
|
||||
"forward", null,
|
||||
'forward', null,
|
||||
FunctionWrapper.bind(this._platformLocation.forward, this._platformLocation));
|
||||
this._broker.registerMethod(
|
||||
"back", null, FunctionWrapper.bind(this._platformLocation.back, this._platformLocation));
|
||||
'back', null, FunctionWrapper.bind(this._platformLocation.back, this._platformLocation));
|
||||
}
|
||||
|
||||
private _getLocation(): Promise<Location> {
|
||||
|
@ -1,75 +1,88 @@
|
||||
import {Injectable, RootRenderer, Renderer, RenderComponentType} from '@angular/core';
|
||||
import {MessageBus} from '../shared/message_bus';
|
||||
import {Serializer, PRIMITIVE, RenderStoreObject} from '../shared/serializer';
|
||||
import {EVENT_CHANNEL, RENDERER_CHANNEL} from '../shared/messaging_api';
|
||||
import {EventDispatcher} from '../ui/event_dispatcher';
|
||||
import {RenderStore} from '../shared/render_store';
|
||||
import {ServiceMessageBrokerFactory} from '../shared/service_message_broker';
|
||||
import {Injectable, RenderComponentType, Renderer, RootRenderer} from '@angular/core';
|
||||
|
||||
import {FunctionWrapper} from '../../facade/lang';
|
||||
import {MessageBus} from '../shared/message_bus';
|
||||
import {EVENT_CHANNEL, RENDERER_CHANNEL} from '../shared/messaging_api';
|
||||
import {RenderStore} from '../shared/render_store';
|
||||
import {PRIMITIVE, RenderStoreObject, Serializer} from '../shared/serializer';
|
||||
import {ServiceMessageBrokerFactory} from '../shared/service_message_broker';
|
||||
import {EventDispatcher} from '../ui/event_dispatcher';
|
||||
|
||||
@Injectable()
|
||||
export class MessageBasedRenderer {
|
||||
private _eventDispatcher: EventDispatcher;
|
||||
|
||||
constructor(private _brokerFactory: ServiceMessageBrokerFactory, private _bus: MessageBus,
|
||||
private _serializer: Serializer, private _renderStore: RenderStore,
|
||||
private _rootRenderer: RootRenderer) {}
|
||||
constructor(
|
||||
private _brokerFactory: ServiceMessageBrokerFactory, private _bus: MessageBus,
|
||||
private _serializer: Serializer, private _renderStore: RenderStore,
|
||||
private _rootRenderer: RootRenderer) {}
|
||||
|
||||
start(): void {
|
||||
var broker = this._brokerFactory.createMessageBroker(RENDERER_CHANNEL);
|
||||
this._bus.initChannel(EVENT_CHANNEL);
|
||||
this._eventDispatcher = new EventDispatcher(this._bus.to(EVENT_CHANNEL), this._serializer);
|
||||
|
||||
broker.registerMethod("renderComponent", [RenderComponentType, PRIMITIVE],
|
||||
FunctionWrapper.bind(this._renderComponent, this));
|
||||
broker.registerMethod(
|
||||
'renderComponent', [RenderComponentType, PRIMITIVE],
|
||||
FunctionWrapper.bind(this._renderComponent, this));
|
||||
|
||||
broker.registerMethod("selectRootElement", [RenderStoreObject, PRIMITIVE, PRIMITIVE],
|
||||
FunctionWrapper.bind(this._selectRootElement, this));
|
||||
broker.registerMethod("createElement",
|
||||
[RenderStoreObject, RenderStoreObject, PRIMITIVE, PRIMITIVE],
|
||||
FunctionWrapper.bind(this._createElement, this));
|
||||
broker.registerMethod("createViewRoot", [RenderStoreObject, RenderStoreObject, PRIMITIVE],
|
||||
FunctionWrapper.bind(this._createViewRoot, this));
|
||||
broker.registerMethod("createTemplateAnchor", [RenderStoreObject, RenderStoreObject, PRIMITIVE],
|
||||
FunctionWrapper.bind(this._createTemplateAnchor, this));
|
||||
broker.registerMethod("createText",
|
||||
[RenderStoreObject, RenderStoreObject, PRIMITIVE, PRIMITIVE],
|
||||
FunctionWrapper.bind(this._createText, this));
|
||||
broker.registerMethod("projectNodes", [RenderStoreObject, RenderStoreObject, RenderStoreObject],
|
||||
FunctionWrapper.bind(this._projectNodes, this));
|
||||
broker.registerMethod("attachViewAfter",
|
||||
[RenderStoreObject, RenderStoreObject, RenderStoreObject],
|
||||
FunctionWrapper.bind(this._attachViewAfter, this));
|
||||
broker.registerMethod("detachView", [RenderStoreObject, RenderStoreObject],
|
||||
FunctionWrapper.bind(this._detachView, this));
|
||||
broker.registerMethod("destroyView", [RenderStoreObject, RenderStoreObject, RenderStoreObject],
|
||||
FunctionWrapper.bind(this._destroyView, this));
|
||||
broker.registerMethod("setElementProperty",
|
||||
[RenderStoreObject, RenderStoreObject, PRIMITIVE, PRIMITIVE],
|
||||
FunctionWrapper.bind(this._setElementProperty, this));
|
||||
broker.registerMethod("setElementAttribute",
|
||||
[RenderStoreObject, RenderStoreObject, PRIMITIVE, PRIMITIVE],
|
||||
FunctionWrapper.bind(this._setElementAttribute, this));
|
||||
broker.registerMethod("setBindingDebugInfo",
|
||||
[RenderStoreObject, RenderStoreObject, PRIMITIVE, PRIMITIVE],
|
||||
FunctionWrapper.bind(this._setBindingDebugInfo, this));
|
||||
broker.registerMethod("setElementClass",
|
||||
[RenderStoreObject, RenderStoreObject, PRIMITIVE, PRIMITIVE],
|
||||
FunctionWrapper.bind(this._setElementClass, this));
|
||||
broker.registerMethod("setElementStyle",
|
||||
[RenderStoreObject, RenderStoreObject, PRIMITIVE, PRIMITIVE],
|
||||
FunctionWrapper.bind(this._setElementStyle, this));
|
||||
broker.registerMethod("invokeElementMethod",
|
||||
[RenderStoreObject, RenderStoreObject, PRIMITIVE, PRIMITIVE],
|
||||
FunctionWrapper.bind(this._invokeElementMethod, this));
|
||||
broker.registerMethod("setText", [RenderStoreObject, RenderStoreObject, PRIMITIVE],
|
||||
FunctionWrapper.bind(this._setText, this));
|
||||
broker.registerMethod("listen", [RenderStoreObject, RenderStoreObject, PRIMITIVE, PRIMITIVE],
|
||||
FunctionWrapper.bind(this._listen, this));
|
||||
broker.registerMethod("listenGlobal", [RenderStoreObject, PRIMITIVE, PRIMITIVE, PRIMITIVE],
|
||||
FunctionWrapper.bind(this._listenGlobal, this));
|
||||
broker.registerMethod("listenDone", [RenderStoreObject, RenderStoreObject],
|
||||
FunctionWrapper.bind(this._listenDone, this));
|
||||
broker.registerMethod(
|
||||
'selectRootElement', [RenderStoreObject, PRIMITIVE, PRIMITIVE],
|
||||
FunctionWrapper.bind(this._selectRootElement, this));
|
||||
broker.registerMethod(
|
||||
'createElement', [RenderStoreObject, RenderStoreObject, PRIMITIVE, PRIMITIVE],
|
||||
FunctionWrapper.bind(this._createElement, this));
|
||||
broker.registerMethod(
|
||||
'createViewRoot', [RenderStoreObject, RenderStoreObject, PRIMITIVE],
|
||||
FunctionWrapper.bind(this._createViewRoot, this));
|
||||
broker.registerMethod(
|
||||
'createTemplateAnchor', [RenderStoreObject, RenderStoreObject, PRIMITIVE],
|
||||
FunctionWrapper.bind(this._createTemplateAnchor, this));
|
||||
broker.registerMethod(
|
||||
'createText', [RenderStoreObject, RenderStoreObject, PRIMITIVE, PRIMITIVE],
|
||||
FunctionWrapper.bind(this._createText, this));
|
||||
broker.registerMethod(
|
||||
'projectNodes', [RenderStoreObject, RenderStoreObject, RenderStoreObject],
|
||||
FunctionWrapper.bind(this._projectNodes, this));
|
||||
broker.registerMethod(
|
||||
'attachViewAfter', [RenderStoreObject, RenderStoreObject, RenderStoreObject],
|
||||
FunctionWrapper.bind(this._attachViewAfter, this));
|
||||
broker.registerMethod(
|
||||
'detachView', [RenderStoreObject, RenderStoreObject],
|
||||
FunctionWrapper.bind(this._detachView, this));
|
||||
broker.registerMethod(
|
||||
'destroyView', [RenderStoreObject, RenderStoreObject, RenderStoreObject],
|
||||
FunctionWrapper.bind(this._destroyView, this));
|
||||
broker.registerMethod(
|
||||
'setElementProperty', [RenderStoreObject, RenderStoreObject, PRIMITIVE, PRIMITIVE],
|
||||
FunctionWrapper.bind(this._setElementProperty, this));
|
||||
broker.registerMethod(
|
||||
'setElementAttribute', [RenderStoreObject, RenderStoreObject, PRIMITIVE, PRIMITIVE],
|
||||
FunctionWrapper.bind(this._setElementAttribute, this));
|
||||
broker.registerMethod(
|
||||
'setBindingDebugInfo', [RenderStoreObject, RenderStoreObject, PRIMITIVE, PRIMITIVE],
|
||||
FunctionWrapper.bind(this._setBindingDebugInfo, this));
|
||||
broker.registerMethod(
|
||||
'setElementClass', [RenderStoreObject, RenderStoreObject, PRIMITIVE, PRIMITIVE],
|
||||
FunctionWrapper.bind(this._setElementClass, this));
|
||||
broker.registerMethod(
|
||||
'setElementStyle', [RenderStoreObject, RenderStoreObject, PRIMITIVE, PRIMITIVE],
|
||||
FunctionWrapper.bind(this._setElementStyle, this));
|
||||
broker.registerMethod(
|
||||
'invokeElementMethod', [RenderStoreObject, RenderStoreObject, PRIMITIVE, PRIMITIVE],
|
||||
FunctionWrapper.bind(this._invokeElementMethod, this));
|
||||
broker.registerMethod(
|
||||
'setText', [RenderStoreObject, RenderStoreObject, PRIMITIVE],
|
||||
FunctionWrapper.bind(this._setText, this));
|
||||
broker.registerMethod(
|
||||
'listen', [RenderStoreObject, RenderStoreObject, PRIMITIVE, PRIMITIVE],
|
||||
FunctionWrapper.bind(this._listen, this));
|
||||
broker.registerMethod(
|
||||
'listenGlobal', [RenderStoreObject, PRIMITIVE, PRIMITIVE, PRIMITIVE],
|
||||
FunctionWrapper.bind(this._listenGlobal, this));
|
||||
broker.registerMethod(
|
||||
'listenDone', [RenderStoreObject, RenderStoreObject],
|
||||
FunctionWrapper.bind(this._listenDone, this));
|
||||
}
|
||||
|
||||
private _renderComponent(renderComponentType: RenderComponentType, rendererId: number) {
|
||||
@ -119,33 +132,33 @@ export class MessageBasedRenderer {
|
||||
}
|
||||
}
|
||||
|
||||
private _setElementProperty(renderer: Renderer, renderElement: any, propertyName: string,
|
||||
propertyValue: any) {
|
||||
private _setElementProperty(
|
||||
renderer: Renderer, renderElement: any, propertyName: string, propertyValue: any) {
|
||||
renderer.setElementProperty(renderElement, propertyName, propertyValue);
|
||||
}
|
||||
|
||||
private _setElementAttribute(renderer: Renderer, renderElement: any, attributeName: string,
|
||||
attributeValue: string) {
|
||||
private _setElementAttribute(
|
||||
renderer: Renderer, renderElement: any, attributeName: string, attributeValue: string) {
|
||||
renderer.setElementAttribute(renderElement, attributeName, attributeValue);
|
||||
}
|
||||
|
||||
private _setBindingDebugInfo(renderer: Renderer, renderElement: any, propertyName: string,
|
||||
propertyValue: string) {
|
||||
private _setBindingDebugInfo(
|
||||
renderer: Renderer, renderElement: any, propertyName: string, propertyValue: string) {
|
||||
renderer.setBindingDebugInfo(renderElement, propertyName, propertyValue);
|
||||
}
|
||||
|
||||
private _setElementClass(renderer: Renderer, renderElement: any, className: string,
|
||||
isAdd: boolean) {
|
||||
private _setElementClass(
|
||||
renderer: Renderer, renderElement: any, className: string, isAdd: boolean) {
|
||||
renderer.setElementClass(renderElement, className, isAdd);
|
||||
}
|
||||
|
||||
private _setElementStyle(renderer: Renderer, renderElement: any, styleName: string,
|
||||
styleValue: string) {
|
||||
private _setElementStyle(
|
||||
renderer: Renderer, renderElement: any, styleName: string, styleValue: string) {
|
||||
renderer.setElementStyle(renderElement, styleName, styleValue);
|
||||
}
|
||||
|
||||
private _invokeElementMethod(renderer: Renderer, renderElement: any, methodName: string,
|
||||
args: any[]) {
|
||||
private _invokeElementMethod(
|
||||
renderer: Renderer, renderElement: any, methodName: string, args: any[]) {
|
||||
renderer.invokeElementMethod(renderElement, methodName, args);
|
||||
}
|
||||
|
||||
@ -154,17 +167,19 @@ export class MessageBasedRenderer {
|
||||
}
|
||||
|
||||
private _listen(renderer: Renderer, renderElement: any, eventName: string, unlistenId: number) {
|
||||
var unregisterCallback = renderer.listen(renderElement, eventName,
|
||||
(event: any /** TODO #9100 */) => this._eventDispatcher.dispatchRenderEvent(
|
||||
renderElement, null, eventName, event));
|
||||
var unregisterCallback = renderer.listen(
|
||||
renderElement, eventName,
|
||||
(event: any /** TODO #9100 */) =>
|
||||
this._eventDispatcher.dispatchRenderEvent(renderElement, null, eventName, event));
|
||||
this._renderStore.store(unregisterCallback, unlistenId);
|
||||
}
|
||||
|
||||
private _listenGlobal(renderer: Renderer, eventTarget: string, eventName: string,
|
||||
unlistenId: number) {
|
||||
private _listenGlobal(
|
||||
renderer: Renderer, eventTarget: string, eventName: string, unlistenId: number) {
|
||||
var unregisterCallback = renderer.listenGlobal(
|
||||
eventTarget, eventName,
|
||||
(event: any /** TODO #9100 */) => this._eventDispatcher.dispatchRenderEvent(null, eventTarget, eventName, event));
|
||||
(event: any /** TODO #9100 */) =>
|
||||
this._eventDispatcher.dispatchRenderEvent(null, eventTarget, eventName, event));
|
||||
this._renderStore.store(unregisterCallback, unlistenId);
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
// no deserialization is necessary in TS.
|
||||
// This is only here to match dart interface
|
||||
export function deserializeGenericEvent(
|
||||
serializedEvent: {[key: string]: any}): {[key: string]: any} {
|
||||
export function deserializeGenericEvent(serializedEvent: {[key: string]: any}):
|
||||
{[key: string]: any} {
|
||||
return serializedEvent;
|
||||
}
|
||||
|
@ -1,18 +1,23 @@
|
||||
import {NgZone, APP_INITIALIZER} from '@angular/core';
|
||||
import {PlatformLocation} from '@angular/common';
|
||||
import {APP_INITIALIZER, NgZone} from '@angular/core';
|
||||
|
||||
import {WebWorkerPlatformLocation} from './platform_location';
|
||||
|
||||
|
||||
/**
|
||||
* Those providers should be added when the router is used in a worker context in addition to the
|
||||
* {@link ROUTER_PROVIDERS} and after them.
|
||||
*/
|
||||
export const WORKER_APP_LOCATION_PROVIDERS = [
|
||||
{provide: PlatformLocation, useClass: WebWorkerPlatformLocation},
|
||||
{provide: APP_INITIALIZER, useFactory: appInitFnFactory, multi: true, deps: [PlatformLocation, NgZone]}
|
||||
{provide: PlatformLocation, useClass: WebWorkerPlatformLocation}, {
|
||||
provide: APP_INITIALIZER,
|
||||
useFactory: appInitFnFactory,
|
||||
multi: true,
|
||||
deps: [PlatformLocation, NgZone]
|
||||
}
|
||||
];
|
||||
|
||||
function appInitFnFactory(platformLocation: WebWorkerPlatformLocation, zone: NgZone): () => Promise<boolean> {
|
||||
return () => {
|
||||
return zone.runGuarded(() => platformLocation.init());
|
||||
};
|
||||
function appInitFnFactory(platformLocation: WebWorkerPlatformLocation, zone: NgZone): () =>
|
||||
Promise<boolean> {
|
||||
return () => { return zone.runGuarded(() => platformLocation.init()); };
|
||||
}
|
||||
|
@ -1,19 +1,16 @@
|
||||
import {Injectable} from '@angular/core';
|
||||
import {
|
||||
FnArg,
|
||||
UiArguments,
|
||||
ClientMessageBroker,
|
||||
ClientMessageBrokerFactory
|
||||
} from '../shared/client_message_broker';
|
||||
import {PlatformLocation, UrlChangeListener} from '@angular/common';
|
||||
import {Injectable} from '@angular/core';
|
||||
|
||||
import {EventEmitter, ObservableWrapper, PromiseWrapper} from '../../facade/async';
|
||||
import {StringMapWrapper} from '../../facade/collection';
|
||||
import {BaseException} from '../../facade/exceptions';
|
||||
import {StringWrapper} from '../../facade/lang';
|
||||
import {ClientMessageBroker, ClientMessageBrokerFactory, FnArg, UiArguments} from '../shared/client_message_broker';
|
||||
import {MessageBus} from '../shared/message_bus';
|
||||
import {ROUTER_CHANNEL} from '../shared/messaging_api';
|
||||
import {LocationType} from '../shared/serialized_types';
|
||||
import {PromiseWrapper, EventEmitter, ObservableWrapper} from '../../facade/async';
|
||||
import {BaseException} from '../../facade/exceptions';
|
||||
import {PRIMITIVE, Serializer} from '../shared/serializer';
|
||||
import {MessageBus} from '../shared/message_bus';
|
||||
import {StringMapWrapper} from '../../facade/collection';
|
||||
import {StringWrapper} from '../../facade/lang';
|
||||
|
||||
import {deserializeGenericEvent} from './event_deserializer';
|
||||
|
||||
@Injectable()
|
||||
@ -24,8 +21,8 @@ export class WebWorkerPlatformLocation extends PlatformLocation {
|
||||
private _location: LocationType = null;
|
||||
private _channelSource: EventEmitter<Object>;
|
||||
|
||||
constructor(brokerFactory: ClientMessageBrokerFactory, bus: MessageBus,
|
||||
private _serializer: Serializer) {
|
||||
constructor(
|
||||
brokerFactory: ClientMessageBrokerFactory, bus: MessageBus, private _serializer: Serializer) {
|
||||
super();
|
||||
this._broker = brokerFactory.createMessageBroker(ROUTER_CHANNEL);
|
||||
|
||||
@ -34,9 +31,9 @@ export class WebWorkerPlatformLocation extends PlatformLocation {
|
||||
var listeners: Array<Function> = null;
|
||||
if (StringMapWrapper.contains(msg, 'event')) {
|
||||
let type: string = msg['event']['type'];
|
||||
if (StringWrapper.equals(type, "popstate")) {
|
||||
if (StringWrapper.equals(type, 'popstate')) {
|
||||
listeners = this._popStateListeners;
|
||||
} else if (StringWrapper.equals(type, "hashchange")) {
|
||||
} else if (StringWrapper.equals(type, 'hashchange')) {
|
||||
listeners = this._hashChangeListeners;
|
||||
}
|
||||
|
||||
@ -52,18 +49,21 @@ export class WebWorkerPlatformLocation extends PlatformLocation {
|
||||
|
||||
/** @internal **/
|
||||
init(): Promise<boolean> {
|
||||
var args: UiArguments = new UiArguments("getLocation");
|
||||
var args: UiArguments = new UiArguments('getLocation');
|
||||
|
||||
var locationPromise: Promise<LocationType> = this._broker.runOnService(args, LocationType);
|
||||
return PromiseWrapper.then(locationPromise, (val: LocationType): boolean => {
|
||||
this._location = val;
|
||||
return true;
|
||||
}, (err): boolean => { throw new BaseException(err); });
|
||||
return PromiseWrapper.then(
|
||||
locationPromise, (val: LocationType):
|
||||
boolean => {
|
||||
this._location = val;
|
||||
return true;
|
||||
},
|
||||
(err): boolean => { throw new BaseException(err); });
|
||||
}
|
||||
|
||||
getBaseHrefFromDOM(): string {
|
||||
throw new BaseException(
|
||||
"Attempt to get base href from DOM from WebWorker. You must either provide a value for the APP_BASE_HREF token through DI or use the hash location strategy.");
|
||||
'Attempt to get base href from DOM from WebWorker. You must either provide a value for the APP_BASE_HREF token through DI or use the hash location strategy.');
|
||||
}
|
||||
|
||||
onPopState(fn: UrlChangeListener): void { this._popStateListeners.push(fn); }
|
||||
@ -96,37 +96,37 @@ export class WebWorkerPlatformLocation extends PlatformLocation {
|
||||
|
||||
set pathname(newPath: string) {
|
||||
if (this._location === null) {
|
||||
throw new BaseException("Attempt to set pathname before value is obtained from UI");
|
||||
throw new BaseException('Attempt to set pathname before value is obtained from UI');
|
||||
}
|
||||
|
||||
this._location.pathname = newPath;
|
||||
|
||||
var fnArgs = [new FnArg(newPath, PRIMITIVE)];
|
||||
var args = new UiArguments("setPathname", fnArgs);
|
||||
var args = new UiArguments('setPathname', fnArgs);
|
||||
this._broker.runOnService(args, null);
|
||||
}
|
||||
|
||||
pushState(state: any, title: string, url: string): void {
|
||||
var fnArgs =
|
||||
[new FnArg(state, PRIMITIVE), new FnArg(title, PRIMITIVE), new FnArg(url, PRIMITIVE)];
|
||||
var args = new UiArguments("pushState", fnArgs);
|
||||
var args = new UiArguments('pushState', fnArgs);
|
||||
this._broker.runOnService(args, null);
|
||||
}
|
||||
|
||||
replaceState(state: any, title: string, url: string): void {
|
||||
var fnArgs =
|
||||
[new FnArg(state, PRIMITIVE), new FnArg(title, PRIMITIVE), new FnArg(url, PRIMITIVE)];
|
||||
var args = new UiArguments("replaceState", fnArgs);
|
||||
var args = new UiArguments('replaceState', fnArgs);
|
||||
this._broker.runOnService(args, null);
|
||||
}
|
||||
|
||||
forward(): void {
|
||||
var args = new UiArguments("forward");
|
||||
var args = new UiArguments('forward');
|
||||
this._broker.runOnService(args, null);
|
||||
}
|
||||
|
||||
back(): void {
|
||||
var args = new UiArguments("back");
|
||||
var args = new UiArguments('back');
|
||||
this._broker.runOnService(args, null);
|
||||
}
|
||||
}
|
||||
|
@ -1,22 +1,16 @@
|
||||
import {
|
||||
Renderer,
|
||||
RootRenderer,
|
||||
RenderComponentType,
|
||||
Injectable,
|
||||
ViewEncapsulation
|
||||
} from '@angular/core';
|
||||
|
||||
import {ClientMessageBrokerFactory, FnArg, UiArguments} from '../shared/client_message_broker';
|
||||
import {isPresent, isBlank} from '../../facade/lang';
|
||||
import {ListWrapper} from '../../facade/collection';
|
||||
import {RenderStore} from '../shared/render_store';
|
||||
import {RENDERER_CHANNEL, EVENT_CHANNEL} from '../shared/messaging_api';
|
||||
import {Serializer, RenderStoreObject} from '../shared/serializer';
|
||||
import {MessageBus} from '../shared/message_bus';
|
||||
import {ObservableWrapper} from '../../facade/async';
|
||||
import {deserializeGenericEvent} from './event_deserializer';
|
||||
import {Injectable, RenderComponentType, Renderer, RootRenderer, ViewEncapsulation} from '@angular/core';
|
||||
|
||||
import {AnimationKeyframe, AnimationPlayer, AnimationStyles, RenderDebugInfo} from '../../../core_private';
|
||||
import {ObservableWrapper} from '../../facade/async';
|
||||
import {ListWrapper} from '../../facade/collection';
|
||||
import {isBlank, isPresent} from '../../facade/lang';
|
||||
import {ClientMessageBrokerFactory, FnArg, UiArguments} from '../shared/client_message_broker';
|
||||
import {MessageBus} from '../shared/message_bus';
|
||||
import {EVENT_CHANNEL, RENDERER_CHANNEL} from '../shared/messaging_api';
|
||||
import {RenderStore} from '../shared/render_store';
|
||||
import {RenderStoreObject, Serializer} from '../shared/serializer';
|
||||
|
||||
import {deserializeGenericEvent} from './event_deserializer';
|
||||
|
||||
@Injectable()
|
||||
export class WebWorkerRootRenderer implements RootRenderer {
|
||||
@ -25,8 +19,9 @@ export class WebWorkerRootRenderer implements RootRenderer {
|
||||
private _componentRenderers: Map<string, WebWorkerRenderer> =
|
||||
new Map<string, WebWorkerRenderer>();
|
||||
|
||||
constructor(messageBrokerFactory: ClientMessageBrokerFactory, bus: MessageBus,
|
||||
private _serializer: Serializer, private _renderStore: RenderStore) {
|
||||
constructor(
|
||||
messageBrokerFactory: ClientMessageBrokerFactory, bus: MessageBus,
|
||||
private _serializer: Serializer, private _renderStore: RenderStore) {
|
||||
this._messageBroker = messageBrokerFactory.createMessageBroker(RENDERER_CHANNEL);
|
||||
bus.initChannel(EVENT_CHANNEL);
|
||||
var source = bus.from(EVENT_CHANNEL);
|
||||
@ -83,8 +78,8 @@ export class WebWorkerRootRenderer implements RootRenderer {
|
||||
}
|
||||
|
||||
export class WebWorkerRenderer implements Renderer, RenderStoreObject {
|
||||
constructor(private _rootRenderer: WebWorkerRootRenderer,
|
||||
private _componentType: RenderComponentType) {}
|
||||
constructor(
|
||||
private _rootRenderer: WebWorkerRootRenderer, private _componentType: RenderComponentType) {}
|
||||
|
||||
private _runOnService(fnName: string, fnArgs: FnArg[]) {
|
||||
var fnArgsWithRenderer = [new FnArg(this, RenderStoreObject)].concat(fnArgs);
|
||||
@ -93,16 +88,15 @@ export class WebWorkerRenderer implements Renderer, RenderStoreObject {
|
||||
|
||||
selectRootElement(selectorOrNode: string, debugInfo?: RenderDebugInfo): any {
|
||||
var node = this._rootRenderer.allocateNode();
|
||||
this._runOnService('selectRootElement',
|
||||
[new FnArg(selectorOrNode, null), new FnArg(node, RenderStoreObject)]);
|
||||
this._runOnService(
|
||||
'selectRootElement', [new FnArg(selectorOrNode, null), new FnArg(node, RenderStoreObject)]);
|
||||
return node;
|
||||
}
|
||||
|
||||
createElement(parentElement: any, name: string, debugInfo?: RenderDebugInfo): any {
|
||||
var node = this._rootRenderer.allocateNode();
|
||||
this._runOnService('createElement', [
|
||||
new FnArg(parentElement, RenderStoreObject),
|
||||
new FnArg(name, null),
|
||||
new FnArg(parentElement, RenderStoreObject), new FnArg(name, null),
|
||||
new FnArg(node, RenderStoreObject)
|
||||
]);
|
||||
return node;
|
||||
@ -110,8 +104,8 @@ export class WebWorkerRenderer implements Renderer, RenderStoreObject {
|
||||
|
||||
createViewRoot(hostElement: any): any {
|
||||
var viewRoot = this._componentType.encapsulation === ViewEncapsulation.Native ?
|
||||
this._rootRenderer.allocateNode() :
|
||||
hostElement;
|
||||
this._rootRenderer.allocateNode() :
|
||||
hostElement;
|
||||
this._runOnService(
|
||||
'createViewRoot',
|
||||
[new FnArg(hostElement, RenderStoreObject), new FnArg(viewRoot, RenderStoreObject)]);
|
||||
@ -129,8 +123,7 @@ export class WebWorkerRenderer implements Renderer, RenderStoreObject {
|
||||
createText(parentElement: any, value: string, debugInfo?: RenderDebugInfo): any {
|
||||
var node = this._rootRenderer.allocateNode();
|
||||
this._runOnService('createText', [
|
||||
new FnArg(parentElement, RenderStoreObject),
|
||||
new FnArg(value, null),
|
||||
new FnArg(parentElement, RenderStoreObject), new FnArg(value, null),
|
||||
new FnArg(node, RenderStoreObject)
|
||||
]);
|
||||
return node;
|
||||
@ -161,63 +154,56 @@ export class WebWorkerRenderer implements Renderer, RenderStoreObject {
|
||||
|
||||
setElementProperty(renderElement: any, propertyName: string, propertyValue: any) {
|
||||
this._runOnService('setElementProperty', [
|
||||
new FnArg(renderElement, RenderStoreObject),
|
||||
new FnArg(propertyName, null),
|
||||
new FnArg(renderElement, RenderStoreObject), new FnArg(propertyName, null),
|
||||
new FnArg(propertyValue, null)
|
||||
]);
|
||||
}
|
||||
|
||||
setElementAttribute(renderElement: any, attributeName: string, attributeValue: string) {
|
||||
this._runOnService('setElementAttribute', [
|
||||
new FnArg(renderElement, RenderStoreObject),
|
||||
new FnArg(attributeName, null),
|
||||
new FnArg(renderElement, RenderStoreObject), new FnArg(attributeName, null),
|
||||
new FnArg(attributeValue, null)
|
||||
]);
|
||||
}
|
||||
|
||||
setBindingDebugInfo(renderElement: any, propertyName: string, propertyValue: string) {
|
||||
this._runOnService('setBindingDebugInfo', [
|
||||
new FnArg(renderElement, RenderStoreObject),
|
||||
new FnArg(propertyName, null),
|
||||
new FnArg(renderElement, RenderStoreObject), new FnArg(propertyName, null),
|
||||
new FnArg(propertyValue, null)
|
||||
]);
|
||||
}
|
||||
|
||||
setElementClass(renderElement: any, className: string, isAdd: boolean) {
|
||||
this._runOnService('setElementClass', [
|
||||
new FnArg(renderElement, RenderStoreObject),
|
||||
new FnArg(className, null),
|
||||
new FnArg(renderElement, RenderStoreObject), new FnArg(className, null),
|
||||
new FnArg(isAdd, null)
|
||||
]);
|
||||
}
|
||||
|
||||
setElementStyle(renderElement: any, styleName: string, styleValue: string) {
|
||||
this._runOnService('setElementStyle', [
|
||||
new FnArg(renderElement, RenderStoreObject),
|
||||
new FnArg(styleName, null),
|
||||
new FnArg(renderElement, RenderStoreObject), new FnArg(styleName, null),
|
||||
new FnArg(styleValue, null)
|
||||
]);
|
||||
}
|
||||
|
||||
invokeElementMethod(renderElement: any, methodName: string, args?: any[]) {
|
||||
this._runOnService('invokeElementMethod', [
|
||||
new FnArg(renderElement, RenderStoreObject),
|
||||
new FnArg(methodName, null),
|
||||
new FnArg(renderElement, RenderStoreObject), new FnArg(methodName, null),
|
||||
new FnArg(args, null)
|
||||
]);
|
||||
}
|
||||
|
||||
setText(renderNode: any, text: string) {
|
||||
this._runOnService('setText',
|
||||
[new FnArg(renderNode, RenderStoreObject), new FnArg(text, null)]);
|
||||
this._runOnService(
|
||||
'setText', [new FnArg(renderNode, RenderStoreObject), new FnArg(text, null)]);
|
||||
}
|
||||
|
||||
listen(renderElement: WebWorkerRenderNode, name: string, callback: Function): Function {
|
||||
renderElement.events.listen(name, callback);
|
||||
var unlistenCallbackId = this._rootRenderer.allocateId();
|
||||
this._runOnService('listen', [
|
||||
new FnArg(renderElement, RenderStoreObject),
|
||||
new FnArg(name, null),
|
||||
new FnArg(renderElement, RenderStoreObject), new FnArg(name, null),
|
||||
new FnArg(unlistenCallbackId, null)
|
||||
]);
|
||||
return () => {
|
||||
@ -238,10 +224,11 @@ export class WebWorkerRenderer implements Renderer, RenderStoreObject {
|
||||
};
|
||||
}
|
||||
|
||||
animate(element: any, startingStyles: AnimationStyles, keyframes: AnimationKeyframe[], duration: number, delay: number,
|
||||
easing: string): AnimationPlayer {
|
||||
// TODO
|
||||
return null;
|
||||
animate(
|
||||
element: any, startingStyles: AnimationStyles, keyframes: AnimationKeyframe[],
|
||||
duration: number, delay: number, easing: string): AnimationPlayer {
|
||||
// TODO
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
import {Type} from '../../facade/lang';
|
||||
import {DomAdapter, setRootDomAdapter} from '../../dom/dom_adapter';
|
||||
import {Type} from '../../facade/lang';
|
||||
|
||||
|
||||
/**
|
||||
* This adapter is required to log error messages.
|
||||
@ -34,127 +35,170 @@ export class WorkerDomAdapter extends DomAdapter {
|
||||
}
|
||||
}
|
||||
|
||||
hasProperty(element: any /** TODO #9100 */, name: string): boolean { throw "not implemented"; }
|
||||
setProperty(el: Element, name: string, value: any) { throw "not implemented"; }
|
||||
getProperty(el: Element, name: string): any { throw "not implemented"; }
|
||||
invoke(el: Element, methodName: string, args: any[]): any { throw "not implemented"; }
|
||||
hasProperty(element: any /** TODO #9100 */, name: string): boolean { throw 'not implemented'; }
|
||||
setProperty(el: Element, name: string, value: any) { throw 'not implemented'; }
|
||||
getProperty(el: Element, name: string): any { throw 'not implemented'; }
|
||||
invoke(el: Element, methodName: string, args: any[]): any { throw 'not implemented'; }
|
||||
|
||||
getXHR(): Type { throw "not implemented"; }
|
||||
getXHR(): Type { throw 'not implemented'; }
|
||||
|
||||
get attrToPropMap(): {[key: string]: string} { throw "not implemented"; }
|
||||
set attrToPropMap(value: {[key: string]: string}) { throw "not implemented"; }
|
||||
get attrToPropMap(): {[key: string]: string} { throw 'not implemented'; }
|
||||
set attrToPropMap(value: {[key: string]: string}) { throw 'not implemented'; }
|
||||
|
||||
parse(templateHtml: string) { throw "not implemented"; }
|
||||
query(selector: string): any { throw "not implemented"; }
|
||||
querySelector(el: any /** TODO #9100 */, selector: string): HTMLElement { throw "not implemented"; }
|
||||
querySelectorAll(el: any /** TODO #9100 */, selector: string): any[] { throw "not implemented"; }
|
||||
on(el: any /** TODO #9100 */, evt: any /** TODO #9100 */, listener: any /** TODO #9100 */) { throw "not implemented"; }
|
||||
onAndCancel(el: any /** TODO #9100 */, evt: any /** TODO #9100 */, listener: any /** TODO #9100 */): Function { throw "not implemented"; }
|
||||
dispatchEvent(el: any /** TODO #9100 */, evt: any /** TODO #9100 */) { throw "not implemented"; }
|
||||
createMouseEvent(eventType: any /** TODO #9100 */): any { throw "not implemented"; }
|
||||
createEvent(eventType: string): any { throw "not implemented"; }
|
||||
preventDefault(evt: any /** TODO #9100 */) { throw "not implemented"; }
|
||||
isPrevented(evt: any /** TODO #9100 */): boolean { throw "not implemented"; }
|
||||
getInnerHTML(el: any /** TODO #9100 */): string { throw "not implemented"; }
|
||||
getTemplateContent(el: any /** TODO #9100 */): any { throw "not implemented"; }
|
||||
getOuterHTML(el: any /** TODO #9100 */): string { throw "not implemented"; }
|
||||
nodeName(node: any /** TODO #9100 */): string { throw "not implemented"; }
|
||||
nodeValue(node: any /** TODO #9100 */): string { throw "not implemented"; }
|
||||
type(node: any /** TODO #9100 */): string { throw "not implemented"; }
|
||||
content(node: any /** TODO #9100 */): any { throw "not implemented"; }
|
||||
firstChild(el: any /** TODO #9100 */): Node { throw "not implemented"; }
|
||||
nextSibling(el: any /** TODO #9100 */): Node { throw "not implemented"; }
|
||||
parentElement(el: any /** TODO #9100 */): Node { throw "not implemented"; }
|
||||
childNodes(el: any /** TODO #9100 */): Node[] { throw "not implemented"; }
|
||||
childNodesAsList(el: any /** TODO #9100 */): Node[] { throw "not implemented"; }
|
||||
clearNodes(el: any /** TODO #9100 */) { throw "not implemented"; }
|
||||
appendChild(el: any /** TODO #9100 */, node: any /** TODO #9100 */) { throw "not implemented"; }
|
||||
removeChild(el: any /** TODO #9100 */, node: any /** TODO #9100 */) { throw "not implemented"; }
|
||||
replaceChild(el: any /** TODO #9100 */, newNode: any /** TODO #9100 */, oldNode: any /** TODO #9100 */) { throw "not implemented"; }
|
||||
remove(el: any /** TODO #9100 */): Node { throw "not implemented"; }
|
||||
insertBefore(el: any /** TODO #9100 */, node: any /** TODO #9100 */) { throw "not implemented"; }
|
||||
insertAllBefore(el: any /** TODO #9100 */, nodes: any /** TODO #9100 */) { throw "not implemented"; }
|
||||
insertAfter(el: any /** TODO #9100 */, node: any /** TODO #9100 */) { throw "not implemented"; }
|
||||
setInnerHTML(el: any /** TODO #9100 */, value: any /** TODO #9100 */) { throw "not implemented"; }
|
||||
getText(el: any /** TODO #9100 */): string { throw "not implemented"; }
|
||||
setText(el: any /** TODO #9100 */, value: string) { throw "not implemented"; }
|
||||
getValue(el: any /** TODO #9100 */): string { throw "not implemented"; }
|
||||
setValue(el: any /** TODO #9100 */, value: string) { throw "not implemented"; }
|
||||
getChecked(el: any /** TODO #9100 */): boolean { throw "not implemented"; }
|
||||
setChecked(el: any /** TODO #9100 */, value: boolean) { throw "not implemented"; }
|
||||
createComment(text: string): any { throw "not implemented"; }
|
||||
createTemplate(html: any /** TODO #9100 */): HTMLElement { throw "not implemented"; }
|
||||
createElement(tagName: any /** TODO #9100 */, doc?: any /** TODO #9100 */): HTMLElement { throw "not implemented"; }
|
||||
createElementNS(ns: string, tagName: string, doc?: any /** TODO #9100 */): Element { throw "not implemented"; }
|
||||
createTextNode(text: string, doc?: any /** TODO #9100 */): Text { throw "not implemented"; }
|
||||
createScriptTag(attrName: string, attrValue: string, doc?: any /** TODO #9100 */): HTMLElement {
|
||||
throw "not implemented";
|
||||
parse(templateHtml: string) { throw 'not implemented'; }
|
||||
query(selector: string): any { throw 'not implemented'; }
|
||||
querySelector(el: any /** TODO #9100 */, selector: string): HTMLElement {
|
||||
throw 'not implemented';
|
||||
}
|
||||
createStyleElement(css: string, doc?: any /** TODO #9100 */): HTMLStyleElement { throw "not implemented"; }
|
||||
createShadowRoot(el: any /** TODO #9100 */): any { throw "not implemented"; }
|
||||
getShadowRoot(el: any /** TODO #9100 */): any { throw "not implemented"; }
|
||||
getHost(el: any /** TODO #9100 */): any { throw "not implemented"; }
|
||||
getDistributedNodes(el: any /** TODO #9100 */): Node[] { throw "not implemented"; }
|
||||
clone(node: Node): Node { throw "not implemented"; }
|
||||
getElementsByClassName(element: any /** TODO #9100 */, name: string): HTMLElement[] { throw "not implemented"; }
|
||||
getElementsByTagName(element: any /** TODO #9100 */, name: string): HTMLElement[] { throw "not implemented"; }
|
||||
classList(element: any /** TODO #9100 */): any[] { throw "not implemented"; }
|
||||
addClass(element: any /** TODO #9100 */, className: string) { throw "not implemented"; }
|
||||
removeClass(element: any /** TODO #9100 */, className: string) { throw "not implemented"; }
|
||||
hasClass(element: any /** TODO #9100 */, className: string): boolean { throw "not implemented"; }
|
||||
setStyle(element: any /** TODO #9100 */, styleName: string, styleValue: string) { throw "not implemented"; }
|
||||
removeStyle(element: any /** TODO #9100 */, styleName: string) { throw "not implemented"; }
|
||||
getStyle(element: any /** TODO #9100 */, styleName: string): string { throw "not implemented"; }
|
||||
hasStyle(element: any /** TODO #9100 */, styleName: string, styleValue?: string): boolean { throw "not implemented"; }
|
||||
tagName(element: any /** TODO #9100 */): string { throw "not implemented"; }
|
||||
attributeMap(element: any /** TODO #9100 */): Map<string, string> { throw "not implemented"; }
|
||||
hasAttribute(element: any /** TODO #9100 */, attribute: string): boolean { throw "not implemented"; }
|
||||
hasAttributeNS(element: any /** TODO #9100 */, ns: string, attribute: string): boolean { throw "not implemented"; }
|
||||
getAttribute(element: any /** TODO #9100 */, attribute: string): string { throw "not implemented"; }
|
||||
getAttributeNS(element: any /** TODO #9100 */, ns: string, attribute: string): string { throw "not implemented"; }
|
||||
setAttribute(element: any /** TODO #9100 */, name: string, value: string) { throw "not implemented"; }
|
||||
setAttributeNS(element: any /** TODO #9100 */, ns: string, name: string, value: string) { throw "not implemented"; }
|
||||
removeAttribute(element: any /** TODO #9100 */, attribute: string) { throw "not implemented"; }
|
||||
removeAttributeNS(element: any /** TODO #9100 */, ns: string, attribute: string) { throw "not implemented"; }
|
||||
templateAwareRoot(el: any /** TODO #9100 */) { throw "not implemented"; }
|
||||
createHtmlDocument(): HTMLDocument { throw "not implemented"; }
|
||||
defaultDoc(): HTMLDocument { throw "not implemented"; }
|
||||
getBoundingClientRect(el: any /** TODO #9100 */) { throw "not implemented"; }
|
||||
getTitle(): string { throw "not implemented"; }
|
||||
setTitle(newTitle: string) { throw "not implemented"; }
|
||||
elementMatches(n: any /** TODO #9100 */, selector: string): boolean { throw "not implemented"; }
|
||||
isTemplateElement(el: any): boolean { throw "not implemented"; }
|
||||
isTextNode(node: any /** TODO #9100 */): boolean { throw "not implemented"; }
|
||||
isCommentNode(node: any /** TODO #9100 */): boolean { throw "not implemented"; }
|
||||
isElementNode(node: any /** TODO #9100 */): boolean { throw "not implemented"; }
|
||||
hasShadowRoot(node: any /** TODO #9100 */): boolean { throw "not implemented"; }
|
||||
isShadowRoot(node: any /** TODO #9100 */): boolean { throw "not implemented"; }
|
||||
importIntoDoc(node: Node): Node { throw "not implemented"; }
|
||||
adoptNode(node: Node): Node { throw "not implemented"; }
|
||||
getHref(element: any /** TODO #9100 */): string { throw "not implemented"; }
|
||||
getEventKey(event: any /** TODO #9100 */): string { throw "not implemented"; }
|
||||
resolveAndSetHref(element: any /** TODO #9100 */, baseUrl: string, href: string) { throw "not implemented"; }
|
||||
supportsDOMEvents(): boolean { throw "not implemented"; }
|
||||
supportsNativeShadowDOM(): boolean { throw "not implemented"; }
|
||||
getGlobalEventTarget(target: string): any { throw "not implemented"; }
|
||||
getHistory(): History { throw "not implemented"; }
|
||||
getLocation(): Location { throw "not implemented"; }
|
||||
getBaseHref(): string { throw "not implemented"; }
|
||||
resetBaseElement(): void { throw "not implemented"; }
|
||||
getUserAgent(): string { throw "not implemented"; }
|
||||
setData(element: any /** TODO #9100 */, name: string, value: string) { throw "not implemented"; }
|
||||
getComputedStyle(element: any /** TODO #9100 */): any { throw "not implemented"; }
|
||||
getData(element: any /** TODO #9100 */, name: string): string { throw "not implemented"; }
|
||||
setGlobalVar(name: string, value: any) { throw "not implemented"; }
|
||||
requestAnimationFrame(callback: any /** TODO #9100 */): number { throw "not implemented"; }
|
||||
cancelAnimationFrame(id: any /** TODO #9100 */) { throw "not implemented"; }
|
||||
performanceNow(): number { throw "not implemented"; }
|
||||
getAnimationPrefix(): string { throw "not implemented"; }
|
||||
getTransitionEnd(): string { throw "not implemented"; }
|
||||
supportsAnimation(): boolean { throw "not implemented"; }
|
||||
supportsWebAnimation(): boolean { throw "not implemented"; }
|
||||
querySelectorAll(el: any /** TODO #9100 */, selector: string): any[] { throw 'not implemented'; }
|
||||
on(el: any /** TODO #9100 */, evt: any /** TODO #9100 */, listener: any /** TODO #9100 */) {
|
||||
throw 'not implemented';
|
||||
}
|
||||
onAndCancel(
|
||||
el: any /** TODO #9100 */, evt: any /** TODO #9100 */,
|
||||
listener: any /** TODO #9100 */): Function {
|
||||
throw 'not implemented';
|
||||
}
|
||||
dispatchEvent(el: any /** TODO #9100 */, evt: any /** TODO #9100 */) { throw 'not implemented'; }
|
||||
createMouseEvent(eventType: any /** TODO #9100 */): any { throw 'not implemented'; }
|
||||
createEvent(eventType: string): any { throw 'not implemented'; }
|
||||
preventDefault(evt: any /** TODO #9100 */) { throw 'not implemented'; }
|
||||
isPrevented(evt: any /** TODO #9100 */): boolean { throw 'not implemented'; }
|
||||
getInnerHTML(el: any /** TODO #9100 */): string { throw 'not implemented'; }
|
||||
getTemplateContent(el: any /** TODO #9100 */): any { throw 'not implemented'; }
|
||||
getOuterHTML(el: any /** TODO #9100 */): string { throw 'not implemented'; }
|
||||
nodeName(node: any /** TODO #9100 */): string { throw 'not implemented'; }
|
||||
nodeValue(node: any /** TODO #9100 */): string { throw 'not implemented'; }
|
||||
type(node: any /** TODO #9100 */): string { throw 'not implemented'; }
|
||||
content(node: any /** TODO #9100 */): any { throw 'not implemented'; }
|
||||
firstChild(el: any /** TODO #9100 */): Node { throw 'not implemented'; }
|
||||
nextSibling(el: any /** TODO #9100 */): Node { throw 'not implemented'; }
|
||||
parentElement(el: any /** TODO #9100 */): Node { throw 'not implemented'; }
|
||||
childNodes(el: any /** TODO #9100 */): Node[] { throw 'not implemented'; }
|
||||
childNodesAsList(el: any /** TODO #9100 */): Node[] { throw 'not implemented'; }
|
||||
clearNodes(el: any /** TODO #9100 */) { throw 'not implemented'; }
|
||||
appendChild(el: any /** TODO #9100 */, node: any /** TODO #9100 */) { throw 'not implemented'; }
|
||||
removeChild(el: any /** TODO #9100 */, node: any /** TODO #9100 */) { throw 'not implemented'; }
|
||||
replaceChild(
|
||||
el: any /** TODO #9100 */, newNode: any /** TODO #9100 */, oldNode: any /** TODO #9100 */) {
|
||||
throw 'not implemented';
|
||||
}
|
||||
remove(el: any /** TODO #9100 */): Node { throw 'not implemented'; }
|
||||
insertBefore(el: any /** TODO #9100 */, node: any /** TODO #9100 */) { throw 'not implemented'; }
|
||||
insertAllBefore(el: any /** TODO #9100 */, nodes: any /** TODO #9100 */) {
|
||||
throw 'not implemented';
|
||||
}
|
||||
insertAfter(el: any /** TODO #9100 */, node: any /** TODO #9100 */) { throw 'not implemented'; }
|
||||
setInnerHTML(el: any /** TODO #9100 */, value: any /** TODO #9100 */) { throw 'not implemented'; }
|
||||
getText(el: any /** TODO #9100 */): string { throw 'not implemented'; }
|
||||
setText(el: any /** TODO #9100 */, value: string) { throw 'not implemented'; }
|
||||
getValue(el: any /** TODO #9100 */): string { throw 'not implemented'; }
|
||||
setValue(el: any /** TODO #9100 */, value: string) { throw 'not implemented'; }
|
||||
getChecked(el: any /** TODO #9100 */): boolean { throw 'not implemented'; }
|
||||
setChecked(el: any /** TODO #9100 */, value: boolean) { throw 'not implemented'; }
|
||||
createComment(text: string): any { throw 'not implemented'; }
|
||||
createTemplate(html: any /** TODO #9100 */): HTMLElement { throw 'not implemented'; }
|
||||
createElement(tagName: any /** TODO #9100 */, doc?: any /** TODO #9100 */): HTMLElement {
|
||||
throw 'not implemented';
|
||||
}
|
||||
createElementNS(ns: string, tagName: string, doc?: any /** TODO #9100 */): Element {
|
||||
throw 'not implemented';
|
||||
}
|
||||
createTextNode(text: string, doc?: any /** TODO #9100 */): Text { throw 'not implemented'; }
|
||||
createScriptTag(attrName: string, attrValue: string, doc?: any /** TODO #9100 */): HTMLElement {
|
||||
throw 'not implemented';
|
||||
}
|
||||
createStyleElement(css: string, doc?: any /** TODO #9100 */): HTMLStyleElement {
|
||||
throw 'not implemented';
|
||||
}
|
||||
createShadowRoot(el: any /** TODO #9100 */): any { throw 'not implemented'; }
|
||||
getShadowRoot(el: any /** TODO #9100 */): any { throw 'not implemented'; }
|
||||
getHost(el: any /** TODO #9100 */): any { throw 'not implemented'; }
|
||||
getDistributedNodes(el: any /** TODO #9100 */): Node[] { throw 'not implemented'; }
|
||||
clone(node: Node): Node { throw 'not implemented'; }
|
||||
getElementsByClassName(element: any /** TODO #9100 */, name: string): HTMLElement[] {
|
||||
throw 'not implemented';
|
||||
}
|
||||
getElementsByTagName(element: any /** TODO #9100 */, name: string): HTMLElement[] {
|
||||
throw 'not implemented';
|
||||
}
|
||||
classList(element: any /** TODO #9100 */): any[] { throw 'not implemented'; }
|
||||
addClass(element: any /** TODO #9100 */, className: string) { throw 'not implemented'; }
|
||||
removeClass(element: any /** TODO #9100 */, className: string) { throw 'not implemented'; }
|
||||
hasClass(element: any /** TODO #9100 */, className: string): boolean { throw 'not implemented'; }
|
||||
setStyle(element: any /** TODO #9100 */, styleName: string, styleValue: string) {
|
||||
throw 'not implemented';
|
||||
}
|
||||
removeStyle(element: any /** TODO #9100 */, styleName: string) { throw 'not implemented'; }
|
||||
getStyle(element: any /** TODO #9100 */, styleName: string): string { throw 'not implemented'; }
|
||||
hasStyle(element: any /** TODO #9100 */, styleName: string, styleValue?: string): boolean {
|
||||
throw 'not implemented';
|
||||
}
|
||||
tagName(element: any /** TODO #9100 */): string { throw 'not implemented'; }
|
||||
attributeMap(element: any /** TODO #9100 */): Map<string, string> { throw 'not implemented'; }
|
||||
hasAttribute(element: any /** TODO #9100 */, attribute: string): boolean {
|
||||
throw 'not implemented';
|
||||
}
|
||||
hasAttributeNS(element: any /** TODO #9100 */, ns: string, attribute: string): boolean {
|
||||
throw 'not implemented';
|
||||
}
|
||||
getAttribute(element: any /** TODO #9100 */, attribute: string): string {
|
||||
throw 'not implemented';
|
||||
}
|
||||
getAttributeNS(element: any /** TODO #9100 */, ns: string, attribute: string): string {
|
||||
throw 'not implemented';
|
||||
}
|
||||
setAttribute(element: any /** TODO #9100 */, name: string, value: string) {
|
||||
throw 'not implemented';
|
||||
}
|
||||
setAttributeNS(element: any /** TODO #9100 */, ns: string, name: string, value: string) {
|
||||
throw 'not implemented';
|
||||
}
|
||||
removeAttribute(element: any /** TODO #9100 */, attribute: string) { throw 'not implemented'; }
|
||||
removeAttributeNS(element: any /** TODO #9100 */, ns: string, attribute: string) {
|
||||
throw 'not implemented';
|
||||
}
|
||||
templateAwareRoot(el: any /** TODO #9100 */) { throw 'not implemented'; }
|
||||
createHtmlDocument(): HTMLDocument { throw 'not implemented'; }
|
||||
defaultDoc(): HTMLDocument { throw 'not implemented'; }
|
||||
getBoundingClientRect(el: any /** TODO #9100 */) { throw 'not implemented'; }
|
||||
getTitle(): string { throw 'not implemented'; }
|
||||
setTitle(newTitle: string) { throw 'not implemented'; }
|
||||
elementMatches(n: any /** TODO #9100 */, selector: string): boolean { throw 'not implemented'; }
|
||||
isTemplateElement(el: any): boolean { throw 'not implemented'; }
|
||||
isTextNode(node: any /** TODO #9100 */): boolean { throw 'not implemented'; }
|
||||
isCommentNode(node: any /** TODO #9100 */): boolean { throw 'not implemented'; }
|
||||
isElementNode(node: any /** TODO #9100 */): boolean { throw 'not implemented'; }
|
||||
hasShadowRoot(node: any /** TODO #9100 */): boolean { throw 'not implemented'; }
|
||||
isShadowRoot(node: any /** TODO #9100 */): boolean { throw 'not implemented'; }
|
||||
importIntoDoc(node: Node): Node { throw 'not implemented'; }
|
||||
adoptNode(node: Node): Node { throw 'not implemented'; }
|
||||
getHref(element: any /** TODO #9100 */): string { throw 'not implemented'; }
|
||||
getEventKey(event: any /** TODO #9100 */): string { throw 'not implemented'; }
|
||||
resolveAndSetHref(element: any /** TODO #9100 */, baseUrl: string, href: string) {
|
||||
throw 'not implemented';
|
||||
}
|
||||
supportsDOMEvents(): boolean { throw 'not implemented'; }
|
||||
supportsNativeShadowDOM(): boolean { throw 'not implemented'; }
|
||||
getGlobalEventTarget(target: string): any { throw 'not implemented'; }
|
||||
getHistory(): History { throw 'not implemented'; }
|
||||
getLocation(): Location { throw 'not implemented'; }
|
||||
getBaseHref(): string { throw 'not implemented'; }
|
||||
resetBaseElement(): void { throw 'not implemented'; }
|
||||
getUserAgent(): string { throw 'not implemented'; }
|
||||
setData(element: any /** TODO #9100 */, name: string, value: string) { throw 'not implemented'; }
|
||||
getComputedStyle(element: any /** TODO #9100 */): any { throw 'not implemented'; }
|
||||
getData(element: any /** TODO #9100 */, name: string): string { throw 'not implemented'; }
|
||||
setGlobalVar(name: string, value: any) { throw 'not implemented'; }
|
||||
requestAnimationFrame(callback: any /** TODO #9100 */): number { throw 'not implemented'; }
|
||||
cancelAnimationFrame(id: any /** TODO #9100 */) { throw 'not implemented'; }
|
||||
performanceNow(): number { throw 'not implemented'; }
|
||||
getAnimationPrefix(): string { throw 'not implemented'; }
|
||||
getTransitionEnd(): string { throw 'not implemented'; }
|
||||
supportsAnimation(): boolean { throw 'not implemented'; }
|
||||
supportsWebAnimation(): boolean { throw 'not implemented'; }
|
||||
|
||||
supportsCookies(): boolean { return false; }
|
||||
getCookie(name: string): string { throw "not implemented"; }
|
||||
setCookie(name: string, value: string) { throw "not implemented"; }
|
||||
getCookie(name: string): string { throw 'not implemented'; }
|
||||
setCookie(name: string, value: string) { throw 'not implemented'; }
|
||||
}
|
||||
|
@ -1,36 +1,19 @@
|
||||
import {WebWorkerRootRenderer} from "./web_workers/worker/renderer";
|
||||
import {print, isBlank, isPresent} from "./facade/lang";
|
||||
import {
|
||||
PLATFORM_DIRECTIVES,
|
||||
PLATFORM_PIPES,
|
||||
ExceptionHandler,
|
||||
APPLICATION_COMMON_PROVIDERS,
|
||||
PLATFORM_COMMON_PROVIDERS,
|
||||
OpaqueToken,
|
||||
RootRenderer,
|
||||
PlatformRef,
|
||||
getPlatform,
|
||||
createPlatform,
|
||||
assertPlatform,
|
||||
ReflectiveInjector,
|
||||
APP_INITIALIZER,
|
||||
NgZone,
|
||||
Type,
|
||||
ComponentRef,
|
||||
coreLoadAndBootstrap
|
||||
} from "@angular/core";
|
||||
import {COMMON_DIRECTIVES, COMMON_PIPES, FORM_PROVIDERS} from "@angular/common";
|
||||
import {ClientMessageBrokerFactory, ClientMessageBrokerFactory_} from "./web_workers/shared/client_message_broker";
|
||||
import {ServiceMessageBrokerFactory, ServiceMessageBrokerFactory_} from "./web_workers/shared/service_message_broker";
|
||||
import {Serializer} from "./web_workers/shared/serializer";
|
||||
import {ON_WEB_WORKER} from "./web_workers/shared/api";
|
||||
import {RenderStore} from "./web_workers/shared/render_store";
|
||||
import {BROWSER_SANITIZATION_PROVIDERS} from "./browser";
|
||||
import {WorkerDomAdapter} from "./web_workers/worker/worker_adapter";
|
||||
import {PostMessageBus, PostMessageBusSink, PostMessageBusSource} from "./web_workers/shared/post_message_bus";
|
||||
import {MessageBus} from "./web_workers/shared/message_bus";
|
||||
import {COMPILER_PROVIDERS, XHR} from "@angular/compiler";
|
||||
import {XHRImpl} from "./xhr/xhr_impl";
|
||||
import {COMMON_DIRECTIVES, COMMON_PIPES, FORM_PROVIDERS} from '@angular/common';
|
||||
import {COMPILER_PROVIDERS, XHR} from '@angular/compiler';
|
||||
import {APPLICATION_COMMON_PROVIDERS, APP_INITIALIZER, ComponentRef, ExceptionHandler, NgZone, OpaqueToken, PLATFORM_COMMON_PROVIDERS, PLATFORM_DIRECTIVES, PLATFORM_PIPES, PlatformRef, ReflectiveInjector, RootRenderer, Type, assertPlatform, coreLoadAndBootstrap, createPlatform, getPlatform} from '@angular/core';
|
||||
|
||||
import {BROWSER_SANITIZATION_PROVIDERS} from './browser';
|
||||
import {isBlank, isPresent, print} from './facade/lang';
|
||||
import {ON_WEB_WORKER} from './web_workers/shared/api';
|
||||
import {ClientMessageBrokerFactory, ClientMessageBrokerFactory_} from './web_workers/shared/client_message_broker';
|
||||
import {MessageBus} from './web_workers/shared/message_bus';
|
||||
import {PostMessageBus, PostMessageBusSink, PostMessageBusSource} from './web_workers/shared/post_message_bus';
|
||||
import {RenderStore} from './web_workers/shared/render_store';
|
||||
import {Serializer} from './web_workers/shared/serializer';
|
||||
import {ServiceMessageBrokerFactory, ServiceMessageBrokerFactory_} from './web_workers/shared/service_message_broker';
|
||||
import {WebWorkerRootRenderer} from './web_workers/worker/renderer';
|
||||
import {WorkerDomAdapter} from './web_workers/worker/worker_adapter';
|
||||
import {XHRImpl} from './xhr/xhr_impl';
|
||||
|
||||
class PrintLogger {
|
||||
log = print;
|
||||
@ -42,29 +25,20 @@ class PrintLogger {
|
||||
const WORKER_APP_PLATFORM_MARKER = new OpaqueToken('WorkerAppPlatformMarker');
|
||||
|
||||
export const WORKER_APP_PLATFORM_PROVIDERS: Array<any /*Type | Provider | any[]*/> =
|
||||
[
|
||||
PLATFORM_COMMON_PROVIDERS,
|
||||
{provide: WORKER_APP_PLATFORM_MARKER, useValue: true}
|
||||
];
|
||||
[PLATFORM_COMMON_PROVIDERS, {provide: WORKER_APP_PLATFORM_MARKER, useValue: true}];
|
||||
|
||||
export const WORKER_APP_APPLICATION_PROVIDERS: Array<any /*Type | Provider | any[]*/> =
|
||||
[
|
||||
APPLICATION_COMMON_PROVIDERS,
|
||||
FORM_PROVIDERS,
|
||||
BROWSER_SANITIZATION_PROVIDERS,
|
||||
Serializer,
|
||||
{provide: PLATFORM_PIPES, useValue: COMMON_PIPES, multi: true},
|
||||
{provide: PLATFORM_DIRECTIVES, useValue: COMMON_DIRECTIVES, multi: true},
|
||||
{provide: ClientMessageBrokerFactory, useClass: ClientMessageBrokerFactory_},
|
||||
{provide: ServiceMessageBrokerFactory, useClass: ServiceMessageBrokerFactory_},
|
||||
WebWorkerRootRenderer,
|
||||
{provide: RootRenderer, useExisting: WebWorkerRootRenderer},
|
||||
{provide: ON_WEB_WORKER, useValue: true},
|
||||
RenderStore,
|
||||
{provide: ExceptionHandler, useFactory: _exceptionHandler, deps: []},
|
||||
{provide: MessageBus, useFactory: createMessageBus, deps: [NgZone]},
|
||||
{provide: APP_INITIALIZER, useValue: setupWebWorker, multi: true}
|
||||
];
|
||||
export const WORKER_APP_APPLICATION_PROVIDERS: Array<any /*Type | Provider | any[]*/> = [
|
||||
APPLICATION_COMMON_PROVIDERS, FORM_PROVIDERS, BROWSER_SANITIZATION_PROVIDERS, Serializer,
|
||||
{provide: PLATFORM_PIPES, useValue: COMMON_PIPES, multi: true},
|
||||
{provide: PLATFORM_DIRECTIVES, useValue: COMMON_DIRECTIVES, multi: true},
|
||||
{provide: ClientMessageBrokerFactory, useClass: ClientMessageBrokerFactory_},
|
||||
{provide: ServiceMessageBrokerFactory, useClass: ServiceMessageBrokerFactory_},
|
||||
WebWorkerRootRenderer, {provide: RootRenderer, useExisting: WebWorkerRootRenderer},
|
||||
{provide: ON_WEB_WORKER, useValue: true}, RenderStore,
|
||||
{provide: ExceptionHandler, useFactory: _exceptionHandler, deps: []},
|
||||
{provide: MessageBus, useFactory: createMessageBus, deps: [NgZone]},
|
||||
{provide: APP_INITIALIZER, useValue: setupWebWorker, multi: true}
|
||||
];
|
||||
|
||||
export function workerAppPlatform(): PlatformRef {
|
||||
if (isBlank(getPlatform())) {
|
||||
@ -74,14 +48,14 @@ export function workerAppPlatform(): PlatformRef {
|
||||
}
|
||||
|
||||
export function bootstrapApp(
|
||||
appComponentType: Type,
|
||||
customProviders?: Array<any /*Type | Provider | any[]*/>): Promise<ComponentRef<any>> {
|
||||
var appInjector = ReflectiveInjector.resolveAndCreate([
|
||||
WORKER_APP_APPLICATION_PROVIDERS,
|
||||
COMPILER_PROVIDERS,
|
||||
{provide: XHR, useClass: XHRImpl},
|
||||
isPresent(customProviders) ? customProviders : []],
|
||||
workerAppPlatform().injector);
|
||||
appComponentType: Type,
|
||||
customProviders?: Array<any /*Type | Provider | any[]*/>): Promise<ComponentRef<any>> {
|
||||
var appInjector = ReflectiveInjector.resolveAndCreate(
|
||||
[
|
||||
WORKER_APP_APPLICATION_PROVIDERS, COMPILER_PROVIDERS, {provide: XHR, useClass: XHRImpl},
|
||||
isPresent(customProviders) ? customProviders : []
|
||||
],
|
||||
workerAppPlatform().injector);
|
||||
return coreLoadAndBootstrap(appComponentType, appInjector);
|
||||
}
|
||||
|
||||
@ -92,7 +66,7 @@ function _exceptionHandler(): ExceptionHandler {
|
||||
|
||||
// TODO(jteplitz602) remove this and compile with lib.webworker.d.ts (#3492)
|
||||
let _postMessage = {
|
||||
postMessage: (message: any, transferrables?:[ArrayBuffer]) => {
|
||||
postMessage: (message: any, transferrables?: [ArrayBuffer]) => {
|
||||
(<any>postMessage)(message, transferrables);
|
||||
}
|
||||
};
|
||||
|
@ -1,45 +1,29 @@
|
||||
import {isBlank, isPresent} from "./facade/lang";
|
||||
import {MessageBus} from "./web_workers/shared/message_bus";
|
||||
import {
|
||||
NgZone,
|
||||
Injector,
|
||||
OpaqueToken,
|
||||
Testability,
|
||||
ExceptionHandler,
|
||||
APPLICATION_COMMON_PROVIDERS,
|
||||
PLATFORM_COMMON_PROVIDERS,
|
||||
RootRenderer,
|
||||
PLATFORM_INITIALIZER,
|
||||
PlatformRef,
|
||||
getPlatform,
|
||||
createPlatform,
|
||||
assertPlatform,
|
||||
ReflectiveInjector,
|
||||
Injectable,
|
||||
APP_INITIALIZER,
|
||||
ApplicationRef
|
||||
} from "@angular/core";
|
||||
import {wtfInit, AnimationDriver, NoOpAnimationDriver} from '../core_private';
|
||||
import {getDOM} from "./dom/dom_adapter";
|
||||
import {DomEventsPlugin} from "./dom/events/dom_events";
|
||||
import {KeyEventsPlugin} from "./dom/events/key_events";
|
||||
import {HammerGesturesPlugin, HAMMER_GESTURE_CONFIG, HammerGestureConfig} from "./dom/events/hammer_gestures";
|
||||
import {DOCUMENT} from "./dom/dom_tokens";
|
||||
import {DomRootRenderer, DomRootRenderer_} from "./dom/dom_renderer";
|
||||
import {DomSharedStylesHost, SharedStylesHost} from "./dom/shared_styles_host";
|
||||
import {BrowserGetTestability} from "./browser/testability";
|
||||
import {BrowserDomAdapter} from "./browser/browser_adapter";
|
||||
import {MessageBasedRenderer} from "./web_workers/ui/renderer";
|
||||
import {ServiceMessageBrokerFactory, ServiceMessageBrokerFactory_} from "./web_workers/shared/service_message_broker";
|
||||
import {ClientMessageBrokerFactory, ClientMessageBrokerFactory_} from "./web_workers/shared/client_message_broker";
|
||||
import {Serializer} from "./web_workers/shared/serializer";
|
||||
import {ON_WEB_WORKER} from "./web_workers/shared/api";
|
||||
import {RenderStore} from "./web_workers/shared/render_store";
|
||||
import {EventManager, EVENT_MANAGER_PLUGINS} from "./dom/events/event_manager";
|
||||
import {BROWSER_SANITIZATION_PROVIDERS, BROWSER_APP_COMPILER_PROVIDERS} from "./browser";
|
||||
import {PostMessageBus, PostMessageBusSink, PostMessageBusSource} from "./web_workers/shared/post_message_bus";
|
||||
import {BaseException} from "./facade/exceptions";
|
||||
import {PromiseWrapper} from "./facade/async";
|
||||
import {APPLICATION_COMMON_PROVIDERS, APP_INITIALIZER, ApplicationRef, ExceptionHandler, Injectable, Injector, NgZone, OpaqueToken, PLATFORM_COMMON_PROVIDERS, PLATFORM_INITIALIZER, PlatformRef, ReflectiveInjector, RootRenderer, Testability, assertPlatform, createPlatform, getPlatform} from '@angular/core';
|
||||
|
||||
import {AnimationDriver, NoOpAnimationDriver, wtfInit} from '../core_private';
|
||||
|
||||
import {BROWSER_APP_COMPILER_PROVIDERS, BROWSER_SANITIZATION_PROVIDERS} from './browser';
|
||||
import {BrowserDomAdapter} from './browser/browser_adapter';
|
||||
import {BrowserGetTestability} from './browser/testability';
|
||||
import {getDOM} from './dom/dom_adapter';
|
||||
import {DomRootRenderer, DomRootRenderer_} from './dom/dom_renderer';
|
||||
import {DOCUMENT} from './dom/dom_tokens';
|
||||
import {DomEventsPlugin} from './dom/events/dom_events';
|
||||
import {EVENT_MANAGER_PLUGINS, EventManager} from './dom/events/event_manager';
|
||||
import {HAMMER_GESTURE_CONFIG, HammerGestureConfig, HammerGesturesPlugin} from './dom/events/hammer_gestures';
|
||||
import {KeyEventsPlugin} from './dom/events/key_events';
|
||||
import {DomSharedStylesHost, SharedStylesHost} from './dom/shared_styles_host';
|
||||
import {PromiseWrapper} from './facade/async';
|
||||
import {BaseException} from './facade/exceptions';
|
||||
import {isBlank, isPresent} from './facade/lang';
|
||||
import {ON_WEB_WORKER} from './web_workers/shared/api';
|
||||
import {ClientMessageBrokerFactory, ClientMessageBrokerFactory_} from './web_workers/shared/client_message_broker';
|
||||
import {MessageBus} from './web_workers/shared/message_bus';
|
||||
import {PostMessageBus, PostMessageBusSink, PostMessageBusSource} from './web_workers/shared/post_message_bus';
|
||||
import {RenderStore} from './web_workers/shared/render_store';
|
||||
import {Serializer} from './web_workers/shared/serializer';
|
||||
import {ServiceMessageBrokerFactory, ServiceMessageBrokerFactory_} from './web_workers/shared/service_message_broker';
|
||||
import {MessageBasedRenderer} from './web_workers/ui/renderer';
|
||||
|
||||
const WORKER_RENDER_PLATFORM_MARKER = new OpaqueToken('WorkerRenderPlatformMarker');
|
||||
|
||||
@ -59,7 +43,7 @@ export class WebWorkerInstance {
|
||||
}
|
||||
}
|
||||
|
||||
export const WORKER_SCRIPT: OpaqueToken = new OpaqueToken("WebWorkerScript");
|
||||
export const WORKER_SCRIPT: OpaqueToken = new OpaqueToken('WebWorkerScript');
|
||||
|
||||
/**
|
||||
* A multiple providers used to automatically call the `start()` method after the service is
|
||||
@ -67,44 +51,47 @@ export const WORKER_SCRIPT: OpaqueToken = new OpaqueToken("WebWorkerScript");
|
||||
*
|
||||
* TODO(vicb): create an interface for startable services to implement
|
||||
*/
|
||||
export const WORKER_RENDER_STARTABLE_MESSAGING_SERVICE = new OpaqueToken('WorkerRenderStartableMsgService');
|
||||
export const WORKER_RENDER_STARTABLE_MESSAGING_SERVICE =
|
||||
new OpaqueToken('WorkerRenderStartableMsgService');
|
||||
|
||||
export const WORKER_RENDER_PLATFORM_PROVIDERS: Array<any /*Type | Provider | any[]*/> = [
|
||||
PLATFORM_COMMON_PROVIDERS,
|
||||
{provide: WORKER_RENDER_PLATFORM_MARKER, useValue: true},
|
||||
PLATFORM_COMMON_PROVIDERS, {provide: WORKER_RENDER_PLATFORM_MARKER, useValue: true},
|
||||
{provide: PLATFORM_INITIALIZER, useValue: initWebWorkerRenderPlatform, multi: true}
|
||||
];
|
||||
|
||||
export const WORKER_RENDER_APPLICATION_PROVIDERS: Array<any /*Type | Provider | any[]*/> =
|
||||
[
|
||||
APPLICATION_COMMON_PROVIDERS,
|
||||
MessageBasedRenderer,
|
||||
{provide: WORKER_RENDER_STARTABLE_MESSAGING_SERVICE, useExisting: MessageBasedRenderer, multi: true},
|
||||
BROWSER_SANITIZATION_PROVIDERS,
|
||||
{provide: ExceptionHandler, useFactory: _exceptionHandler, deps: []},
|
||||
{provide: DOCUMENT, useFactory: _document, deps: []},
|
||||
// TODO(jteplitz602): Investigate if we definitely need EVENT_MANAGER on the render thread
|
||||
// #5298
|
||||
{provide: EVENT_MANAGER_PLUGINS, useClass: DomEventsPlugin, multi: true},
|
||||
{provide: EVENT_MANAGER_PLUGINS, useClass: KeyEventsPlugin, multi: true},
|
||||
{provide: EVENT_MANAGER_PLUGINS, useClass: HammerGesturesPlugin, multi: true},
|
||||
{provide: HAMMER_GESTURE_CONFIG, useClass: HammerGestureConfig},
|
||||
{provide: DomRootRenderer, useClass: DomRootRenderer_},
|
||||
{provide: RootRenderer, useExisting: DomRootRenderer},
|
||||
{provide: SharedStylesHost, useExisting: DomSharedStylesHost},
|
||||
{provide: ServiceMessageBrokerFactory, useClass: ServiceMessageBrokerFactory_},
|
||||
{provide: ClientMessageBrokerFactory, useClass: ClientMessageBrokerFactory_},
|
||||
{provide: AnimationDriver, useFactory: _resolveDefaultAnimationDriver},
|
||||
Serializer,
|
||||
{provide: ON_WEB_WORKER, useValue: false},
|
||||
RenderStore,
|
||||
DomSharedStylesHost,
|
||||
Testability,
|
||||
EventManager,
|
||||
WebWorkerInstance,
|
||||
{ provide: APP_INITIALIZER, useFactory: initWebWorkerAppFn, multi: true, deps: [Injector] },
|
||||
{ provide: MessageBus, useFactory: messageBusFactory, deps: [WebWorkerInstance] }
|
||||
];
|
||||
export const WORKER_RENDER_APPLICATION_PROVIDERS: Array<any /*Type | Provider | any[]*/> = [
|
||||
APPLICATION_COMMON_PROVIDERS,
|
||||
MessageBasedRenderer,
|
||||
{
|
||||
provide: WORKER_RENDER_STARTABLE_MESSAGING_SERVICE,
|
||||
useExisting: MessageBasedRenderer,
|
||||
multi: true
|
||||
},
|
||||
BROWSER_SANITIZATION_PROVIDERS,
|
||||
{provide: ExceptionHandler, useFactory: _exceptionHandler, deps: []},
|
||||
{provide: DOCUMENT, useFactory: _document, deps: []},
|
||||
// TODO(jteplitz602): Investigate if we definitely need EVENT_MANAGER on the render thread
|
||||
// #5298
|
||||
{provide: EVENT_MANAGER_PLUGINS, useClass: DomEventsPlugin, multi: true},
|
||||
{provide: EVENT_MANAGER_PLUGINS, useClass: KeyEventsPlugin, multi: true},
|
||||
{provide: EVENT_MANAGER_PLUGINS, useClass: HammerGesturesPlugin, multi: true},
|
||||
{provide: HAMMER_GESTURE_CONFIG, useClass: HammerGestureConfig},
|
||||
{provide: DomRootRenderer, useClass: DomRootRenderer_},
|
||||
{provide: RootRenderer, useExisting: DomRootRenderer},
|
||||
{provide: SharedStylesHost, useExisting: DomSharedStylesHost},
|
||||
{provide: ServiceMessageBrokerFactory, useClass: ServiceMessageBrokerFactory_},
|
||||
{provide: ClientMessageBrokerFactory, useClass: ClientMessageBrokerFactory_},
|
||||
{provide: AnimationDriver, useFactory: _resolveDefaultAnimationDriver},
|
||||
Serializer,
|
||||
{provide: ON_WEB_WORKER, useValue: false},
|
||||
RenderStore,
|
||||
DomSharedStylesHost,
|
||||
Testability,
|
||||
EventManager,
|
||||
WebWorkerInstance,
|
||||
{provide: APP_INITIALIZER, useFactory: initWebWorkerAppFn, multi: true, deps: [Injector]},
|
||||
{provide: MessageBus, useFactory: messageBusFactory, deps: [WebWorkerInstance]}
|
||||
];
|
||||
|
||||
export function initializeGenericWorkerRenderer(injector: Injector) {
|
||||
var bus = injector.get(MessageBus);
|
||||
@ -117,16 +104,15 @@ export function initializeGenericWorkerRenderer(injector: Injector) {
|
||||
}
|
||||
|
||||
export function bootstrapRender(
|
||||
workerScriptUri: string,
|
||||
customProviders?: Array<any /*Type | Provider | any[]*/>): Promise<ApplicationRef> {
|
||||
workerScriptUri: string,
|
||||
customProviders?: Array<any /*Type | Provider | any[]*/>): Promise<ApplicationRef> {
|
||||
var app = ReflectiveInjector.resolveAndCreate(
|
||||
[
|
||||
WORKER_RENDER_APPLICATION_PROVIDERS,
|
||||
BROWSER_APP_COMPILER_PROVIDERS,
|
||||
{provide: WORKER_SCRIPT, useValue: workerScriptUri},
|
||||
isPresent(customProviders) ? customProviders : []
|
||||
],
|
||||
workerRenderPlatform().injector);
|
||||
[
|
||||
WORKER_RENDER_APPLICATION_PROVIDERS, BROWSER_APP_COMPILER_PROVIDERS,
|
||||
{provide: WORKER_SCRIPT, useValue: workerScriptUri},
|
||||
isPresent(customProviders) ? customProviders : []
|
||||
],
|
||||
workerRenderPlatform().injector);
|
||||
// Return a promise so that we keep the same semantics as Dart,
|
||||
// and we might want to wait for the app side to come up
|
||||
// in the future...
|
||||
@ -165,7 +151,7 @@ function initWebWorkerAppFn(injector: Injector): () => void {
|
||||
scriptUri = injector.get(WORKER_SCRIPT);
|
||||
} catch (e) {
|
||||
throw new BaseException(
|
||||
"You must provide your WebWorker's initialization script with the WORKER_SCRIPT token");
|
||||
'You must provide your WebWorker\'s initialization script with the WORKER_SCRIPT token');
|
||||
}
|
||||
|
||||
let instance = injector.get(WebWorkerInstance);
|
||||
|
@ -1,10 +1,11 @@
|
||||
import {XHR} from '@angular/compiler';
|
||||
import {PromiseWrapper, PromiseCompleter} from '../facade/promise';
|
||||
|
||||
import {isPresent} from '../facade/lang';
|
||||
import {PromiseCompleter, PromiseWrapper} from '../facade/promise';
|
||||
|
||||
export class XHRImpl extends XHR {
|
||||
get(url: string): Promise<string> {
|
||||
var completer: PromiseCompleter <string> = PromiseWrapper.completer();
|
||||
var completer: PromiseCompleter<string> = PromiseWrapper.completer();
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.open('GET', url, true);
|
||||
xhr.responseType = 'text';
|
||||
|
Reference in New Issue
Block a user