Previously these symbols were exposed via platform-browser-dynamic, then we merged then into platform-browser thinking that tools would know how to shake off the compiler and other dynamic bits not used with the offline compilation flow. This turned out to be wrong as both webpack and rollup don't have good enough tree-shaking capabilities to do this today. We think that in the future we'll be able to merge these two entry points into one, but we need to give tooling some time before we can do it. In the meantime the reintroduction of the -dynamic package point allows us to separate the compiler dependencies from the rest of the framework. This change undoes the previous breaking change that removed the platform-browser-dynamic package.
89 lines
3.9 KiB
TypeScript
89 lines
3.9 KiB
TypeScript
import {FORM_PROVIDERS, PlatformLocation} from '@angular/common';
|
|
import {APPLICATION_COMMON_PROVIDERS, ExceptionHandler, OpaqueToken, PLATFORM_COMMON_PROVIDERS, PLATFORM_INITIALIZER, PlatformRef, ReflectiveInjector, RootRenderer, Testability, assertPlatform, createPlatform, getPlatform} from '@angular/core';
|
|
|
|
import {AnimationDriver, NoOpAnimationDriver, SanitizationService, wtfInit} from '../core_private';
|
|
import {WebAnimationsDriver} from '../src/dom/web_animations_driver';
|
|
|
|
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} from './facade/lang';
|
|
import {DomSanitizationService, DomSanitizationServiceImpl} from './security/dom_sanitization_service';
|
|
|
|
|
|
const BROWSER_PLATFORM_MARKER = new OpaqueToken('BrowserPlatformMarker');
|
|
|
|
/**
|
|
* A set of providers to initialize the Angular platform in a web browser.
|
|
*
|
|
* 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: PLATFORM_INITIALIZER, useValue: initDomAdapter, multi: true},
|
|
{provide: PlatformLocation, useClass: BrowserPlatformLocation}
|
|
];
|
|
|
|
export const BROWSER_SANITIZATION_PROVIDERS: Array<any> = [
|
|
{provide: SanitizationService, useExisting: DomSanitizationService},
|
|
{provide: DomSanitizationService, useClass: DomSanitizationServiceImpl},
|
|
];
|
|
|
|
/**
|
|
* A set of providers to initialize an Angular application in a web browser.
|
|
*
|
|
* 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: 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 function browserPlatform(): PlatformRef {
|
|
if (isBlank(getPlatform())) {
|
|
createPlatform(ReflectiveInjector.resolveAndCreate(BROWSER_PLATFORM_PROVIDERS));
|
|
}
|
|
return assertPlatform(BROWSER_PLATFORM_MARKER);
|
|
}
|
|
|
|
function initDomAdapter() {
|
|
BrowserDomAdapter.makeCurrent();
|
|
wtfInit();
|
|
BrowserGetTestability.init();
|
|
}
|
|
|
|
function _exceptionHandler(): ExceptionHandler {
|
|
return new ExceptionHandler(getDOM());
|
|
}
|
|
|
|
function _document(): any {
|
|
return getDOM().defaultDoc();
|
|
}
|
|
|
|
function _resolveDefaultAnimationDriver(): AnimationDriver {
|
|
if (getDOM().supportsWebAnimation()) {
|
|
return new WebAnimationsDriver();
|
|
}
|
|
return new NoOpAnimationDriver();
|
|
}
|