@angular/platform-browser
Version:
Angular - library for using Angular in a web browser
1 lines • 37.2 kB
Source Map (JSON)
{"version":3,"file":"_browser-chunk.mjs","sources":["../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/packages/platform-browser/src/browser/browser_adapter.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/packages/platform-browser/src/browser/testability.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/packages/platform-browser/src/browser/xhr.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/packages/platform-browser/src/dom/events/key_events.ts","../../../../../darwin_arm64-fastbuild-ST-fdfa778d11ba/bin/packages/platform-browser/src/browser.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n ɵparseCookieValue as parseCookieValue,\n ɵsetRootDomAdapter as setRootDomAdapter,\n ɵDomAdapter as DomAdapter,\n} from '@angular/common';\n\n/**\n * A `DomAdapter` powered by full browser DOM APIs.\n *\n * @security Tread carefully! Interacting with the DOM directly is dangerous and\n * can introduce XSS risks.\n */\nexport class BrowserDomAdapter extends DomAdapter {\n override readonly supportsDOMEvents: boolean = true;\n\n static makeCurrent() {\n setRootDomAdapter(new BrowserDomAdapter());\n }\n\n override onAndCancel(el: Node, evt: any, listener: any, options: any): Function {\n el.addEventListener(evt, listener, options);\n return () => {\n el.removeEventListener(evt, listener, options);\n };\n }\n override dispatchEvent(el: Node, evt: any) {\n el.dispatchEvent(evt);\n }\n override remove(node: Node): void {\n (node as Element | Text | Comment).remove();\n }\n override createElement(tagName: string, doc?: Document): HTMLElement {\n doc = doc || this.getDefaultDocument();\n return doc.createElement(tagName);\n }\n override createHtmlDocument(): Document {\n return document.implementation.createHTMLDocument('fakeTitle');\n }\n override getDefaultDocument(): Document {\n return document;\n }\n\n override isElementNode(node: Node): boolean {\n return node.nodeType === Node.ELEMENT_NODE;\n }\n\n override isShadowRoot(node: any): boolean {\n return node instanceof DocumentFragment;\n }\n\n /** @deprecated No longer being used in Ivy code. To be removed in version 14. */\n override getGlobalEventTarget(doc: Document, target: string): EventTarget | null {\n if (target === 'window') {\n return window;\n }\n if (target === 'document') {\n return doc;\n }\n if (target === 'body') {\n return doc.body;\n }\n return null;\n }\n override getBaseHref(doc: Document): string | null {\n const href = getBaseElementHref();\n return href == null ? null : relativePath(href);\n }\n override resetBaseElement(): void {\n baseElement = null;\n }\n override getUserAgent(): string {\n return window.navigator.userAgent;\n }\n override getCookie(name: string): string | null {\n return parseCookieValue(document.cookie, name);\n }\n}\n\nlet baseElement: HTMLElement | null = null;\nfunction getBaseElementHref(): string | null {\n baseElement = baseElement || document.head.querySelector('base');\n return baseElement ? baseElement.getAttribute('href') : null;\n}\n\nfunction relativePath(url: string): string {\n // The base URL doesn't really matter, we just need it so relative paths have something\n // to resolve against. In the browser `HTMLBaseElement.href` is always absolute.\n return new URL(url, document.baseURI).pathname;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {ɵgetDOM as getDOM} from '@angular/common';\nimport {\n GetTestability,\n Testability,\n TestabilityRegistry,\n ɵglobal as global,\n ɵRuntimeError as RuntimeError,\n} from '@angular/core';\n\nimport {RuntimeErrorCode} from '../errors';\n\nexport class BrowserGetTestability implements GetTestability {\n addToWindow(registry: TestabilityRegistry): void {\n global['getAngularTestability'] = (elem: any, findInAncestors: boolean = true) => {\n const testability = registry.findTestabilityInTree(elem, findInAncestors);\n if (testability == null) {\n throw new RuntimeError(\n RuntimeErrorCode.TESTABILITY_NOT_FOUND,\n (typeof ngDevMode === 'undefined' || ngDevMode) &&\n 'Could not find testability for element.',\n );\n }\n return testability;\n };\n\n global['getAllAngularTestabilities'] = () => registry.getAllTestabilities();\n\n global['getAllAngularRootElements'] = () => registry.getAllRootElements();\n\n const whenAllStable = (callback: () => void) => {\n const testabilities = global['getAllAngularTestabilities']() as Testability[];\n let count = testabilities.length;\n const decrement = function () {\n count--;\n if (count == 0) {\n callback();\n }\n };\n testabilities.forEach((testability) => {\n testability.whenStable(decrement);\n });\n };\n\n if (!global['frameworkStabilizers']) {\n global['frameworkStabilizers'] = [];\n }\n global['frameworkStabilizers'].push(whenAllStable);\n }\n\n findTestabilityInTree(\n registry: TestabilityRegistry,\n elem: any,\n findInAncestors: boolean,\n ): Testability | null {\n if (elem == null) {\n return null;\n }\n const t = registry.getTestability(elem);\n if (t != null) {\n return t;\n } else if (!findInAncestors) {\n return null;\n }\n if (getDOM().isShadowRoot(elem)) {\n return this.findTestabilityInTree(registry, (<any>elem).host, true);\n }\n return this.findTestabilityInTree(registry, elem.parentElement, true);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {XhrFactory} from '@angular/common';\nimport {Injectable} from '@angular/core';\n\n/**\n * A factory for `HttpXhrBackend` that uses the `XMLHttpRequest` browser API.\n */\n@Injectable()\nexport class BrowserXhr implements XhrFactory {\n build(): XMLHttpRequest {\n return new XMLHttpRequest();\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {DOCUMENT, ɵgetDOM as getDOM} from '@angular/common';\nimport {Inject, Injectable, type ListenerOptions, NgZone} from '@angular/core';\n\nimport {EventManagerPlugin} from './event_manager_plugin';\n\n/**\n * Defines supported modifiers for key events.\n */\nconst MODIFIER_KEYS = ['alt', 'control', 'meta', 'shift'];\n\n// The following values are here for cross-browser compatibility and to match the W3C standard\n// cf https://www.w3.org/TR/DOM-Level-3-Events-key/\nconst _keyMap: {[k: string]: string} = {\n '\\b': 'Backspace',\n '\\t': 'Tab',\n '\\x7F': 'Delete',\n '\\x1B': 'Escape',\n 'Del': 'Delete',\n 'Esc': 'Escape',\n 'Left': 'ArrowLeft',\n 'Right': 'ArrowRight',\n 'Up': 'ArrowUp',\n 'Down': 'ArrowDown',\n 'Menu': 'ContextMenu',\n 'Scroll': 'ScrollLock',\n 'Win': 'OS',\n};\n\n/**\n * Retrieves modifiers from key-event objects.\n */\nconst MODIFIER_KEY_GETTERS: {[key: string]: (event: KeyboardEvent) => boolean} = {\n 'alt': (event: KeyboardEvent) => event.altKey,\n 'control': (event: KeyboardEvent) => event.ctrlKey,\n 'meta': (event: KeyboardEvent) => event.metaKey,\n 'shift': (event: KeyboardEvent) => event.shiftKey,\n};\n\n/**\n * A browser plug-in that provides support for handling of key events in Angular.\n */\n@Injectable()\nexport class KeyEventsPlugin extends EventManagerPlugin {\n /**\n * Initializes an instance of the browser plug-in.\n * @param doc The document in which key events will be detected.\n */\n constructor(@Inject(DOCUMENT) doc: any) {\n super(doc);\n }\n\n /**\n * Reports whether a named key event is supported.\n * @param eventName The event name to query.\n * @return True if the named key event is supported.\n */\n override supports(eventName: string): boolean {\n return KeyEventsPlugin.parseEventName(eventName) != null;\n }\n\n /**\n * Registers a handler for a specific element and key event.\n * @param element The HTML element to receive event notifications.\n * @param eventName The name of the key event to listen for.\n * @param handler A function to call when the notification occurs. Receives the\n * event object as an argument.\n * @returns The key event that was registered.\n */\n override addEventListener(\n element: HTMLElement,\n eventName: string,\n handler: Function,\n options?: ListenerOptions,\n ): Function {\n const parsedEvent = KeyEventsPlugin.parseEventName(eventName)!;\n\n const outsideHandler = KeyEventsPlugin.eventCallback(\n parsedEvent['fullKey'],\n handler,\n this.manager.getZone(),\n );\n\n return this.manager.getZone().runOutsideAngular(() => {\n return getDOM().onAndCancel(element, parsedEvent['domEventName'], outsideHandler, options);\n });\n }\n\n /**\n * Parses the user provided full keyboard event definition and normalizes it for\n * later internal use. It ensures the string is all lowercase, converts special\n * characters to a standard spelling, and orders all the values consistently.\n *\n * @param eventName The name of the key event to listen for.\n * @returns an object with the full, normalized string, and the dom event name\n * or null in the case when the event doesn't match a keyboard event.\n */\n static parseEventName(eventName: string): {fullKey: string; domEventName: string} | null {\n const parts: string[] = eventName.toLowerCase().split('.');\n\n const domEventName = parts.shift();\n if (parts.length === 0 || !(domEventName === 'keydown' || domEventName === 'keyup')) {\n return null;\n }\n\n const key = KeyEventsPlugin._normalizeKey(parts.pop()!);\n\n let fullKey = '';\n let codeIX = parts.indexOf('code');\n if (codeIX > -1) {\n parts.splice(codeIX, 1);\n fullKey = 'code.';\n }\n MODIFIER_KEYS.forEach((modifierName) => {\n const index: number = parts.indexOf(modifierName);\n if (index > -1) {\n parts.splice(index, 1);\n fullKey += modifierName + '.';\n }\n });\n fullKey += key;\n\n if (parts.length != 0 || key.length === 0) {\n // returning null instead of throwing to let another plugin process the event\n return null;\n }\n\n // NOTE: Please don't rewrite this as so, as it will break JSCompiler property renaming.\n // The code must remain in the `result['domEventName']` form.\n // return {domEventName, fullKey};\n const result: {fullKey: string; domEventName: string} = {} as any;\n result['domEventName'] = domEventName;\n result['fullKey'] = fullKey;\n return result;\n }\n\n /**\n * Determines whether the actual keys pressed match the configured key code string.\n * The `fullKeyCode` event is normalized in the `parseEventName` method when the\n * event is attached to the DOM during the `addEventListener` call. This is unseen\n * by the end user and is normalized for internal consistency and parsing.\n *\n * @param event The keyboard event.\n * @param fullKeyCode The normalized user defined expected key event string\n * @returns boolean.\n */\n static matchEventFullKeyCode(event: KeyboardEvent, fullKeyCode: string): boolean {\n let keycode = _keyMap[event.key] || event.key;\n let key = '';\n if (fullKeyCode.indexOf('code.') > -1) {\n keycode = event.code;\n key = 'code.';\n }\n // the keycode could be unidentified so we have to check here\n if (keycode == null || !keycode) return false;\n keycode = keycode.toLowerCase();\n if (keycode === ' ') {\n keycode = 'space'; // for readability\n } else if (keycode === '.') {\n keycode = 'dot'; // because '.' is used as a separator in event names\n }\n MODIFIER_KEYS.forEach((modifierName) => {\n if (modifierName !== keycode) {\n const modifierGetter = MODIFIER_KEY_GETTERS[modifierName];\n if (modifierGetter(event)) {\n key += modifierName + '.';\n }\n }\n });\n key += keycode;\n return key === fullKeyCode;\n }\n\n /**\n * Configures a handler callback for a key event.\n * @param fullKey The event name that combines all simultaneous keystrokes.\n * @param handler The function that responds to the key event.\n * @param zone The zone in which the event occurred.\n * @returns A callback function.\n */\n static eventCallback(fullKey: string, handler: Function, zone: NgZone): Function {\n return (event: KeyboardEvent) => {\n if (KeyEventsPlugin.matchEventFullKeyCode(event, fullKey)) {\n zone.runGuarded(() => handler(event));\n }\n };\n }\n\n /** @internal */\n static _normalizeKey(keyName: string): string {\n return keyName === 'esc' ? 'escape' : keyName;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n CommonModule,\n DOCUMENT,\n XhrFactory,\n ɵPLATFORM_BROWSER_ID as PLATFORM_BROWSER_ID,\n} from '@angular/common';\nimport {\n ApplicationConfig,\n ApplicationModule,\n ApplicationRef,\n createPlatformFactory,\n ErrorHandler,\n InjectionToken,\n NgModule,\n PLATFORM_ID,\n PLATFORM_INITIALIZER,\n platformCore,\n PlatformRef,\n Provider,\n RendererFactory2,\n StaticProvider,\n Testability,\n Type,\n ɵINJECTOR_SCOPE as INJECTOR_SCOPE,\n ɵinternalCreateApplication as internalCreateApplication,\n ɵRuntimeError as RuntimeError,\n ɵsetDocument,\n ɵTESTABILITY as TESTABILITY,\n ɵTESTABILITY_GETTER as TESTABILITY_GETTER,\n inject,\n ɵresolveComponentResources as resolveComponentResources,\n} from '@angular/core';\n\nimport {BrowserDomAdapter} from './browser/browser_adapter';\nimport {BrowserGetTestability} from './browser/testability';\nimport {BrowserXhr} from './browser/xhr';\nimport {DomRendererFactory2} from './dom/dom_renderer';\nimport {DomEventsPlugin} from './dom/events/dom_events';\nimport {EVENT_MANAGER_PLUGINS, EventManager} from './dom/events/event_manager';\nimport {KeyEventsPlugin} from './dom/events/key_events';\nimport {SharedStylesHost} from './dom/shared_styles_host';\nimport {RuntimeErrorCode} from './errors';\n\n/**\n * A context object that can be passed to `bootstrapApplication` to provide a pre-existing platform\n * injector.\n *\n * @publicApi\n */\nexport interface BootstrapContext {\n /**\n * A reference to a platform.\n */\n platformRef: PlatformRef;\n}\n\n/**\n * Bootstraps an instance of an Angular application and renders a standalone component as the\n * application's root component. More information about standalone components can be found in [this\n * guide](guide/components/importing).\n *\n * @usageNotes\n * The root component passed into this function *must* be a standalone one (should have the\n * `standalone: true` flag in the `@Component` decorator config).\n *\n * ```angular-ts\n * @Component({\n * standalone: true,\n * template: 'Hello world!'\n * })\n * class RootComponent {}\n *\n * const appRef: ApplicationRef = await bootstrapApplication(RootComponent);\n * ```\n *\n * You can add the list of providers that should be available in the application injector by\n * specifying the `providers` field in an object passed as the second argument:\n *\n * ```ts\n * await bootstrapApplication(RootComponent, {\n * providers: [\n * {provide: BACKEND_URL, useValue: 'https://yourdomain.com/api'}\n * ]\n * });\n * ```\n *\n * The `importProvidersFrom` helper method can be used to collect all providers from any\n * existing NgModule (and transitively from all NgModules that it imports):\n *\n * ```ts\n * await bootstrapApplication(RootComponent, {\n * providers: [\n * importProvidersFrom(SomeNgModule)\n * ]\n * });\n * ```\n *\n * Note: the `bootstrapApplication` method doesn't include [Testability](api/core/Testability) by\n * default. You can add [Testability](api/core/Testability) by getting the list of necessary\n * providers using `provideProtractorTestingSupport()` function and adding them into the `providers`\n * array, for example:\n *\n * ```ts\n * import {provideProtractorTestingSupport} from '@angular/platform-browser';\n *\n * await bootstrapApplication(RootComponent, {providers: [provideProtractorTestingSupport()]});\n * ```\n *\n * @param rootComponent A reference to a standalone component that should be rendered.\n * @param options Extra configuration for the bootstrap operation, see `ApplicationConfig` for\n * additional info.\n * @param context Optional context object that can be used to provide a pre-existing\n * platform injector. This is useful for advanced use-cases, for example, server-side\n * rendering, where the platform is created for each request.\n * @returns A promise that returns an `ApplicationRef` instance once resolved.\n *\n * @publicApi\n */\nexport function bootstrapApplication(\n rootComponent: Type<unknown>,\n options?: ApplicationConfig,\n context?: BootstrapContext,\n): Promise<ApplicationRef> {\n const config = {\n rootComponent,\n platformRef: context?.platformRef,\n ...createProvidersConfig(options),\n };\n\n // Attempt to resolve component resources before bootstrapping in JIT mode,\n // however don't interrupt the bootstrapping process.\n if ((typeof ngJitMode === 'undefined' || ngJitMode) && typeof fetch === 'function') {\n return resolveComponentResources(fetch)\n .catch((error) => {\n console.error(error);\n return Promise.resolve();\n })\n .then(() => internalCreateApplication(config));\n }\n\n return internalCreateApplication(config);\n}\n\n/**\n * Create an instance of an Angular application without bootstrapping any components. This is useful\n * for the situation where one wants to decouple application environment creation (a platform and\n * associated injectors) from rendering components on a screen. Components can be subsequently\n * bootstrapped on the returned `ApplicationRef`.\n *\n * @param options Extra configuration for the application environment, see `ApplicationConfig` for\n * additional info.\n * @returns A promise that returns an `ApplicationRef` instance once resolved.\n *\n * @publicApi\n */\nexport function createApplication(options?: ApplicationConfig): Promise<ApplicationRef> {\n return internalCreateApplication(createProvidersConfig(options));\n}\n\nfunction createProvidersConfig(options?: ApplicationConfig) {\n return {\n appProviders: [...BROWSER_MODULE_PROVIDERS, ...(options?.providers ?? [])],\n platformProviders: INTERNAL_BROWSER_PLATFORM_PROVIDERS,\n };\n}\n\n/**\n * Returns a set of providers required to setup [Testability](api/core/Testability) for an\n * application bootstrapped using the `bootstrapApplication` function. The set of providers is\n * needed to support testing an application with Protractor (which relies on the Testability APIs\n * to be present).\n *\n * @returns An array of providers required to setup Testability for an application and make it\n * available for testing using Protractor.\n *\n * @publicApi\n */\nexport function provideProtractorTestingSupport(): Provider[] {\n // Return a copy to prevent changes to the original array in case any in-place\n // alterations are performed to the `provideProtractorTestingSupport` call results in app\n // code.\n return [...TESTABILITY_PROVIDERS];\n}\n\nexport function initDomAdapter() {\n BrowserDomAdapter.makeCurrent();\n}\n\nexport function errorHandler(): ErrorHandler {\n return new ErrorHandler();\n}\n\nexport function _document(): any {\n // Tell ivy about the global document\n ɵsetDocument(document);\n return document;\n}\n\nconst INTERNAL_BROWSER_PLATFORM_PROVIDERS: StaticProvider[] = [\n {provide: PLATFORM_ID, useValue: PLATFORM_BROWSER_ID},\n {provide: PLATFORM_INITIALIZER, useValue: initDomAdapter, multi: true},\n {provide: DOCUMENT, useFactory: _document},\n];\n\n/**\n * A factory function that returns a `PlatformRef` instance associated with browser service\n * providers.\n *\n * @publicApi\n */\nexport const platformBrowser: (extraProviders?: StaticProvider[]) => PlatformRef =\n createPlatformFactory(platformCore, 'browser', INTERNAL_BROWSER_PLATFORM_PROVIDERS);\n\n/**\n * Internal marker to signal whether providers from the `BrowserModule` are already present in DI.\n * This is needed to avoid loading `BrowserModule` providers twice. We can't rely on the\n * `BrowserModule` presence itself, since the standalone-based bootstrap just imports\n * `BrowserModule` providers without referencing the module itself.\n */\nconst BROWSER_MODULE_PROVIDERS_MARKER = new InjectionToken(\n typeof ngDevMode === 'undefined' || ngDevMode ? 'BrowserModule Providers Marker' : '',\n);\n\nconst TESTABILITY_PROVIDERS = [\n {\n provide: TESTABILITY_GETTER,\n useClass: BrowserGetTestability,\n },\n {\n provide: TESTABILITY,\n useClass: Testability,\n },\n {\n provide: Testability, // Also provide as `Testability` for backwards-compatibility.\n useClass: Testability,\n },\n];\n\nconst BROWSER_MODULE_PROVIDERS: Provider[] = [\n {provide: INJECTOR_SCOPE, useValue: 'root'},\n {provide: ErrorHandler, useFactory: errorHandler},\n {\n provide: EVENT_MANAGER_PLUGINS,\n useClass: DomEventsPlugin,\n multi: true,\n },\n {provide: EVENT_MANAGER_PLUGINS, useClass: KeyEventsPlugin, multi: true},\n DomRendererFactory2,\n SharedStylesHost,\n EventManager,\n {provide: RendererFactory2, useExisting: DomRendererFactory2},\n {provide: XhrFactory, useClass: BrowserXhr},\n typeof ngDevMode === 'undefined' || ngDevMode\n ? {provide: BROWSER_MODULE_PROVIDERS_MARKER, useValue: true}\n : [],\n];\n\n/**\n * Exports required infrastructure for all Angular apps.\n * Included by default in all Angular apps created with the CLI\n * `new` command.\n * Re-exports `CommonModule` and `ApplicationModule`, making their\n * exports and providers available to all apps.\n *\n * @publicApi\n */\n@NgModule({\n providers: [...BROWSER_MODULE_PROVIDERS, ...TESTABILITY_PROVIDERS],\n exports: [CommonModule, ApplicationModule],\n})\nexport class BrowserModule {\n constructor() {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const providersAlreadyPresent = inject(BROWSER_MODULE_PROVIDERS_MARKER, {\n optional: true,\n skipSelf: true,\n });\n\n if (providersAlreadyPresent) {\n throw new RuntimeError(\n RuntimeErrorCode.BROWSER_MODULE_ALREADY_LOADED,\n `Providers from the \\`BrowserModule\\` have already been loaded. If you need access ` +\n `to common directives such as NgIf and NgFor, import the \\`CommonModule\\` instead.`,\n );\n }\n }\n }\n}\n"],"names":["BrowserDomAdapter","DomAdapter","supportsDOMEvents","makeCurrent","setRootDomAdapter","onAndCancel","el","evt","listener","options","addEventListener","removeEventListener","dispatchEvent","remove","node","createElement","tagName","doc","getDefaultDocument","createHtmlDocument","document","implementation","createHTMLDocument","isElementNode","nodeType","Node","ELEMENT_NODE","isShadowRoot","DocumentFragment","getGlobalEventTarget","target","window","body","getBaseHref","href","getBaseElementHref","relativePath","resetBaseElement","baseElement","getUserAgent","navigator","userAgent","getCookie","name","parseCookieValue","cookie","head","querySelector","getAttribute","url","URL","baseURI","pathname","BrowserGetTestability","addToWindow","registry","global","elem","findInAncestors","testability","findTestabilityInTree","RuntimeError","ngDevMode","getAllTestabilities","getAllRootElements","whenAllStable","callback","testabilities","count","length","decrement","forEach","whenStable","push","t","getTestability","getDOM","host","parentElement","BrowserXhr","build","XMLHttpRequest","deps","i0","ɵɵFactoryTarget","Injectable","decorators","MODIFIER_KEYS","_keyMap","MODIFIER_KEY_GETTERS","event","altKey","ctrlKey","metaKey","shiftKey","KeyEventsPlugin","EventManagerPlugin","constructor","supports","eventName","parseEventName","element","handler","parsedEvent","outsideHandler","eventCallback","manager","getZone","runOutsideAngular","parts","toLowerCase","split","domEventName","shift","key","_normalizeKey","pop","fullKey","codeIX","indexOf","splice","modifierName","index","result","matchEventFullKeyCode","fullKeyCode","keycode","code","modifierGetter","zone","runGuarded","keyName","ɵfac","ɵɵngDeclareFactory","minVersion","version","ngImport","type","DOCUMENT","Inject","bootstrapApplication","rootComponent","context","config","platformRef","createProvidersConfig","ngJitMode","fetch","resolveComponentResources","catch","error","console","Promise","resolve","then","internalCreateApplication","createApplication","appProviders","BROWSER_MODULE_PROVIDERS","providers","platformProviders","INTERNAL_BROWSER_PLATFORM_PROVIDERS","provideProtractorTestingSupport","TESTABILITY_PROVIDERS","initDomAdapter","errorHandler","ErrorHandler","_document","ɵsetDocument","provide","PLATFORM_ID","useValue","PLATFORM_BROWSER_ID","PLATFORM_INITIALIZER","multi","useFactory","platformBrowser","createPlatformFactory","platformCore","BROWSER_MODULE_PROVIDERS_MARKER","InjectionToken","TESTABILITY_GETTER","useClass","TESTABILITY","Testability","INJECTOR_SCOPE","EVENT_MANAGER_PLUGINS","DomEventsPlugin","DomRendererFactory2","SharedStylesHost","EventManager","RendererFactory2","useExisting","XhrFactory","BrowserModule","providersAlreadyPresent","inject","optional","skipSelf","NgModule","exports","CommonModule","ApplicationModule","imports","args"],"mappings":"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"}