@angular/platform-browser 8.2.0 → 8.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,16 +1,18 @@
1
1
  /**
2
- * @license Angular v8.2.0
2
+ * @license Angular v8.2.4
3
3
  * (c) 2010-2019 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
6
6
 
7
- import { NgZone, ɵglobal, createPlatformFactory, platformCore, NgModule, APP_ID, PLATFORM_INITIALIZER } from '@angular/core';
8
- import { ɵgetDOM, BrowserModule, ɵELEMENT_PROBE_PROVIDERS, ɵBrowserDomAdapter } from '@angular/platform-browser';
7
+ import { ɵglobal, NgZone, PLATFORM_INITIALIZER, createPlatformFactory, platformCore, NgModule, APP_ID } from '@angular/core';
8
+ import { ɵgetDOM, ɵBrowserDomAdapter, BrowserModule, ɵELEMENT_PROBE_PROVIDERS } from '@angular/platform-browser';
9
9
 
10
10
  /**
11
11
  * @fileoverview added by tsickle
12
12
  * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
13
13
  */
14
+ /** @type {?} */
15
+ let browserDetection;
14
16
  class BrowserDetection {
15
17
  /**
16
18
  * @private
@@ -25,7 +27,7 @@ class BrowserDetection {
25
27
  /**
26
28
  * @return {?}
27
29
  */
28
- static setup() { }
30
+ static setup() { browserDetection = new BrowserDetection(null); }
29
31
  /**
30
32
  * @param {?} ua
31
33
  */
@@ -125,7 +127,114 @@ class BrowserDetection {
125
127
  return (typeof testEl.createShadowRoot !== 'undefined');
126
128
  }
127
129
  }
130
+ if (false) {
131
+ /**
132
+ * @type {?}
133
+ * @private
134
+ */
135
+ BrowserDetection.prototype._overrideUa;
136
+ }
128
137
  BrowserDetection.setup();
138
+ /**
139
+ * @param {?} element
140
+ * @param {?} eventType
141
+ * @return {?}
142
+ */
143
+ function dispatchEvent(element, eventType) {
144
+ ɵgetDOM().dispatchEvent(element, ɵgetDOM().createEvent(eventType));
145
+ }
146
+ /**
147
+ * @param {?} html
148
+ * @return {?}
149
+ */
150
+ function el(html) {
151
+ return (/** @type {?} */ (ɵgetDOM().firstChild(ɵgetDOM().content(ɵgetDOM().createTemplate(html)))));
152
+ }
153
+ /**
154
+ * @param {?} css
155
+ * @return {?}
156
+ */
157
+ function normalizeCSS(css) {
158
+ return css.replace(/\s+/g, ' ')
159
+ .replace(/:\s/g, ':')
160
+ .replace(/'/g, '"')
161
+ .replace(/ }/g, '}')
162
+ .replace(/url\((\"|\s)(.+)(\"|\s)\)(\s*)/g, (/**
163
+ * @param {...?} match
164
+ * @return {?}
165
+ */
166
+ (...match) => `url("${match[2]}")`))
167
+ .replace(/\[(.+)=([^"\]]+)\]/g, (/**
168
+ * @param {...?} match
169
+ * @return {?}
170
+ */
171
+ (...match) => `[${match[1]}="${match[2]}"]`));
172
+ }
173
+ /** @type {?} */
174
+ const _selfClosingTags = ['br', 'hr', 'input'];
175
+ /**
176
+ * @param {?} el
177
+ * @return {?}
178
+ */
179
+ function stringifyElement(el /** TODO #9100 */) {
180
+ /** @type {?} */
181
+ let result = '';
182
+ if (ɵgetDOM().isElementNode(el)) {
183
+ /** @type {?} */
184
+ const tagName = ɵgetDOM().tagName(el).toLowerCase();
185
+ // Opening tag
186
+ result += `<${tagName}`;
187
+ // Attributes in an ordered way
188
+ /** @type {?} */
189
+ const attributeMap = ɵgetDOM().attributeMap(el);
190
+ /** @type {?} */
191
+ const sortedKeys = Array.from(attributeMap.keys()).sort();
192
+ for (const key of sortedKeys) {
193
+ /** @type {?} */
194
+ const lowerCaseKey = key.toLowerCase();
195
+ /** @type {?} */
196
+ let attValue = attributeMap.get(key);
197
+ if (typeof attValue !== 'string') {
198
+ result += ` ${lowerCaseKey}`;
199
+ }
200
+ else {
201
+ // Browsers order style rules differently. Order them alphabetically for consistency.
202
+ if (lowerCaseKey === 'style') {
203
+ attValue = attValue.split(/; ?/).filter((/**
204
+ * @param {?} s
205
+ * @return {?}
206
+ */
207
+ s => !!s)).sort().map((/**
208
+ * @param {?} s
209
+ * @return {?}
210
+ */
211
+ s => `${s};`)).join(' ');
212
+ }
213
+ result += ` ${lowerCaseKey}="${attValue}"`;
214
+ }
215
+ }
216
+ result += '>';
217
+ // Children
218
+ /** @type {?} */
219
+ const childrenRoot = ɵgetDOM().templateAwareRoot(el);
220
+ /** @type {?} */
221
+ const children = childrenRoot ? ɵgetDOM().childNodes(childrenRoot) : [];
222
+ for (let j = 0; j < children.length; j++) {
223
+ result += stringifyElement(children[j]);
224
+ }
225
+ // Closing tag
226
+ if (_selfClosingTags.indexOf(tagName) == -1) {
227
+ result += `</${tagName}>`;
228
+ }
229
+ }
230
+ else if (ɵgetDOM().isCommentNode(el)) {
231
+ result += `<!--${ɵgetDOM().nodeValue(el)}-->`;
232
+ }
233
+ else {
234
+ result += ɵgetDOM().getText(el);
235
+ }
236
+ return result;
237
+ }
129
238
  /**
130
239
  * @return {?}
131
240
  */
@@ -1 +1 @@
1
- {"version":3,"file":"testing.js","sources":["../testing/src/browser_util.ts","../testing/src/browser.ts","../testing/testing.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google Inc. 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.io/license\n */\n\nimport {NgZone, ɵglobal as global} from '@angular/core';\nimport {ɵgetDOM as getDOM} from '@angular/platform-browser';\n\nexport let browserDetection: BrowserDetection;\n\nexport class BrowserDetection {\n private _overrideUa: string|null;\n private get _ua(): string {\n if (typeof this._overrideUa === 'string') {\n return this._overrideUa;\n }\n\n return getDOM() ? getDOM().getUserAgent() : '';\n }\n\n static setup() { browserDetection = new BrowserDetection(null); }\n\n constructor(ua: string|null) { this._overrideUa = ua; }\n\n get isFirefox(): boolean { return this._ua.indexOf('Firefox') > -1; }\n\n get isAndroid(): boolean {\n return this._ua.indexOf('Mozilla/5.0') > -1 && this._ua.indexOf('Android') > -1 &&\n this._ua.indexOf('AppleWebKit') > -1 && this._ua.indexOf('Chrome') == -1 &&\n this._ua.indexOf('IEMobile') == -1;\n }\n\n get isEdge(): boolean { return this._ua.indexOf('Edge') > -1; }\n\n get isIE(): boolean { return this._ua.indexOf('Trident') > -1; }\n\n get isWebkit(): boolean {\n return this._ua.indexOf('AppleWebKit') > -1 && this._ua.indexOf('Edge') == -1 &&\n this._ua.indexOf('IEMobile') == -1;\n }\n\n get isIOS7(): boolean {\n return (this._ua.indexOf('iPhone OS 7') > -1 || this._ua.indexOf('iPad OS 7') > -1) &&\n this._ua.indexOf('IEMobile') == -1;\n }\n\n get isSlow(): boolean { return this.isAndroid || this.isIE || this.isIOS7; }\n\n // The Intl API is only natively supported in Chrome, Firefox, IE11 and Edge.\n // This detector is needed in tests to make the difference between:\n // 1) IE11/Edge: they have a native Intl API, but with some discrepancies\n // 2) IE9/IE10: they use the polyfill, and so no discrepancies\n get supportsNativeIntlApi(): boolean {\n return !!(<any>global).Intl && (<any>global).Intl !== (<any>global).IntlPolyfill;\n }\n\n get isChromeDesktop(): boolean {\n return this._ua.indexOf('Chrome') > -1 && this._ua.indexOf('Mobile Safari') == -1 &&\n this._ua.indexOf('Edge') == -1;\n }\n\n // \"Old Chrome\" means Chrome 3X, where there are some discrepancies in the Intl API.\n // Android 4.4 and 5.X have such browsers by default (respectively 30 and 39).\n get isOldChrome(): boolean {\n return this._ua.indexOf('Chrome') > -1 && this._ua.indexOf('Chrome/3') > -1 &&\n this._ua.indexOf('Edge') == -1;\n }\n\n get supportsCustomElements() { return (typeof(<any>global).customElements !== 'undefined'); }\n\n get supportsDeprecatedCustomCustomElementsV0() {\n return (typeof(document as any).registerElement !== 'undefined');\n }\n\n get supportsRegExUnicodeFlag(): boolean { return RegExp.prototype.hasOwnProperty('unicode'); }\n\n get supportsShadowDom() {\n const testEl = document.createElement('div');\n return (typeof testEl.attachShadow !== 'undefined');\n }\n\n get supportsDeprecatedShadowDomV0() {\n const testEl = document.createElement('div') as any;\n return (typeof testEl.createShadowRoot !== 'undefined');\n }\n}\n\nBrowserDetection.setup();\n\nexport function dispatchEvent(element: any, eventType: any): void {\n getDOM().dispatchEvent(element, getDOM().createEvent(eventType));\n}\n\nexport function el(html: string): HTMLElement {\n return <HTMLElement>getDOM().firstChild(getDOM().content(getDOM().createTemplate(html)));\n}\n\nexport function normalizeCSS(css: string): string {\n return css.replace(/\\s+/g, ' ')\n .replace(/:\\s/g, ':')\n .replace(/'/g, '\"')\n .replace(/ }/g, '}')\n .replace(/url\\((\\\"|\\s)(.+)(\\\"|\\s)\\)(\\s*)/g, (...match: string[]) => `url(\"${match[2]}\")`)\n .replace(/\\[(.+)=([^\"\\]]+)\\]/g, (...match: string[]) => `[${match[1]}=\"${match[2]}\"]`);\n}\n\nconst _selfClosingTags = ['br', 'hr', 'input'];\nexport function stringifyElement(el: any /** TODO #9100 */): string {\n let result = '';\n if (getDOM().isElementNode(el)) {\n const tagName = getDOM().tagName(el).toLowerCase();\n\n // Opening tag\n result += `<${tagName}`;\n\n // Attributes in an ordered way\n const attributeMap = getDOM().attributeMap(el);\n const sortedKeys = Array.from(attributeMap.keys()).sort();\n for (const key of sortedKeys) {\n const lowerCaseKey = key.toLowerCase();\n let attValue = attributeMap.get(key);\n\n if (typeof attValue !== 'string') {\n result += ` ${lowerCaseKey}`;\n } else {\n // Browsers order style rules differently. Order them alphabetically for consistency.\n if (lowerCaseKey === 'style') {\n attValue = attValue.split(/; ?/).filter(s => !!s).sort().map(s => `${s};`).join(' ');\n }\n\n result += ` ${lowerCaseKey}=\"${attValue}\"`;\n }\n }\n result += '>';\n\n // Children\n const childrenRoot = getDOM().templateAwareRoot(el);\n const children = childrenRoot ? getDOM().childNodes(childrenRoot) : [];\n for (let j = 0; j < children.length; j++) {\n result += stringifyElement(children[j]);\n }\n\n // Closing tag\n if (_selfClosingTags.indexOf(tagName) == -1) {\n result += `</${tagName}>`;\n }\n } else if (getDOM().isCommentNode(el)) {\n result += `<!--${getDOM().nodeValue(el)}-->`;\n } else {\n result += getDOM().getText(el);\n }\n\n return result;\n}\n\nexport function createNgZone(): NgZone {\n return new NgZone({enableLongStackTrace: true});\n}\n","/**\n * @license\n * Copyright Google Inc. 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.io/license\n */\nimport {APP_ID, NgModule, NgZone, PLATFORM_INITIALIZER, PlatformRef, StaticProvider, createPlatformFactory, platformCore} from '@angular/core';\nimport {BrowserModule, ɵBrowserDomAdapter as BrowserDomAdapter, ɵELEMENT_PROBE_PROVIDERS as ELEMENT_PROBE_PROVIDERS} from '@angular/platform-browser';\nimport {BrowserDetection, createNgZone} from './browser_util';\n\nfunction initBrowserTests() {\n BrowserDomAdapter.makeCurrent();\n BrowserDetection.setup();\n}\n\nconst _TEST_BROWSER_PLATFORM_PROVIDERS: StaticProvider[] =\n [{provide: PLATFORM_INITIALIZER, useValue: initBrowserTests, multi: true}];\n\n/**\n * Platform for testing\n *\n * @publicApi\n */\nexport const platformBrowserTesting =\n createPlatformFactory(platformCore, 'browserTesting', _TEST_BROWSER_PLATFORM_PROVIDERS);\n\n/**\n * NgModule for testing.\n *\n * @publicApi\n */\n@NgModule({\n exports: [BrowserModule],\n providers: [\n {provide: APP_ID, useValue: 'a'},\n ELEMENT_PROBE_PROVIDERS,\n {provide: NgZone, useFactory: createNgZone},\n ]\n})\nexport class BrowserTestingModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {createNgZone as ɵangular_packages_platform_browser_testing_testing_a} from './src/browser_util';"],"names":["getDOM","global","BrowserDomAdapter","ELEMENT_PROBE_PROVIDERS"],"mappings":"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"}
1
+ {"version":3,"file":"testing.js","sources":["../testing/src/browser_util.ts","../testing/src/browser.ts","../testing/testing.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google Inc. 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.io/license\n */\n\nimport {NgZone, ɵglobal as global} from '@angular/core';\nimport {ɵgetDOM as getDOM} from '@angular/platform-browser';\n\nexport let browserDetection: BrowserDetection;\n\nexport class BrowserDetection {\n private _overrideUa: string|null;\n private get _ua(): string {\n if (typeof this._overrideUa === 'string') {\n return this._overrideUa;\n }\n\n return getDOM() ? getDOM().getUserAgent() : '';\n }\n\n static setup() { browserDetection = new BrowserDetection(null); }\n\n constructor(ua: string|null) { this._overrideUa = ua; }\n\n get isFirefox(): boolean { return this._ua.indexOf('Firefox') > -1; }\n\n get isAndroid(): boolean {\n return this._ua.indexOf('Mozilla/5.0') > -1 && this._ua.indexOf('Android') > -1 &&\n this._ua.indexOf('AppleWebKit') > -1 && this._ua.indexOf('Chrome') == -1 &&\n this._ua.indexOf('IEMobile') == -1;\n }\n\n get isEdge(): boolean { return this._ua.indexOf('Edge') > -1; }\n\n get isIE(): boolean { return this._ua.indexOf('Trident') > -1; }\n\n get isWebkit(): boolean {\n return this._ua.indexOf('AppleWebKit') > -1 && this._ua.indexOf('Edge') == -1 &&\n this._ua.indexOf('IEMobile') == -1;\n }\n\n get isIOS7(): boolean {\n return (this._ua.indexOf('iPhone OS 7') > -1 || this._ua.indexOf('iPad OS 7') > -1) &&\n this._ua.indexOf('IEMobile') == -1;\n }\n\n get isSlow(): boolean { return this.isAndroid || this.isIE || this.isIOS7; }\n\n // The Intl API is only natively supported in Chrome, Firefox, IE11 and Edge.\n // This detector is needed in tests to make the difference between:\n // 1) IE11/Edge: they have a native Intl API, but with some discrepancies\n // 2) IE9/IE10: they use the polyfill, and so no discrepancies\n get supportsNativeIntlApi(): boolean {\n return !!(<any>global).Intl && (<any>global).Intl !== (<any>global).IntlPolyfill;\n }\n\n get isChromeDesktop(): boolean {\n return this._ua.indexOf('Chrome') > -1 && this._ua.indexOf('Mobile Safari') == -1 &&\n this._ua.indexOf('Edge') == -1;\n }\n\n // \"Old Chrome\" means Chrome 3X, where there are some discrepancies in the Intl API.\n // Android 4.4 and 5.X have such browsers by default (respectively 30 and 39).\n get isOldChrome(): boolean {\n return this._ua.indexOf('Chrome') > -1 && this._ua.indexOf('Chrome/3') > -1 &&\n this._ua.indexOf('Edge') == -1;\n }\n\n get supportsCustomElements() { return (typeof(<any>global).customElements !== 'undefined'); }\n\n get supportsDeprecatedCustomCustomElementsV0() {\n return (typeof(document as any).registerElement !== 'undefined');\n }\n\n get supportsRegExUnicodeFlag(): boolean { return RegExp.prototype.hasOwnProperty('unicode'); }\n\n get supportsShadowDom() {\n const testEl = document.createElement('div');\n return (typeof testEl.attachShadow !== 'undefined');\n }\n\n get supportsDeprecatedShadowDomV0() {\n const testEl = document.createElement('div') as any;\n return (typeof testEl.createShadowRoot !== 'undefined');\n }\n}\n\nBrowserDetection.setup();\n\nexport function dispatchEvent(element: any, eventType: any): void {\n getDOM().dispatchEvent(element, getDOM().createEvent(eventType));\n}\n\nexport function el(html: string): HTMLElement {\n return <HTMLElement>getDOM().firstChild(getDOM().content(getDOM().createTemplate(html)));\n}\n\nexport function normalizeCSS(css: string): string {\n return css.replace(/\\s+/g, ' ')\n .replace(/:\\s/g, ':')\n .replace(/'/g, '\"')\n .replace(/ }/g, '}')\n .replace(/url\\((\\\"|\\s)(.+)(\\\"|\\s)\\)(\\s*)/g, (...match: string[]) => `url(\"${match[2]}\")`)\n .replace(/\\[(.+)=([^\"\\]]+)\\]/g, (...match: string[]) => `[${match[1]}=\"${match[2]}\"]`);\n}\n\nconst _selfClosingTags = ['br', 'hr', 'input'];\nexport function stringifyElement(el: any /** TODO #9100 */): string {\n let result = '';\n if (getDOM().isElementNode(el)) {\n const tagName = getDOM().tagName(el).toLowerCase();\n\n // Opening tag\n result += `<${tagName}`;\n\n // Attributes in an ordered way\n const attributeMap = getDOM().attributeMap(el);\n const sortedKeys = Array.from(attributeMap.keys()).sort();\n for (const key of sortedKeys) {\n const lowerCaseKey = key.toLowerCase();\n let attValue = attributeMap.get(key);\n\n if (typeof attValue !== 'string') {\n result += ` ${lowerCaseKey}`;\n } else {\n // Browsers order style rules differently. Order them alphabetically for consistency.\n if (lowerCaseKey === 'style') {\n attValue = attValue.split(/; ?/).filter(s => !!s).sort().map(s => `${s};`).join(' ');\n }\n\n result += ` ${lowerCaseKey}=\"${attValue}\"`;\n }\n }\n result += '>';\n\n // Children\n const childrenRoot = getDOM().templateAwareRoot(el);\n const children = childrenRoot ? getDOM().childNodes(childrenRoot) : [];\n for (let j = 0; j < children.length; j++) {\n result += stringifyElement(children[j]);\n }\n\n // Closing tag\n if (_selfClosingTags.indexOf(tagName) == -1) {\n result += `</${tagName}>`;\n }\n } else if (getDOM().isCommentNode(el)) {\n result += `<!--${getDOM().nodeValue(el)}-->`;\n } else {\n result += getDOM().getText(el);\n }\n\n return result;\n}\n\nexport function createNgZone(): NgZone {\n return new NgZone({enableLongStackTrace: true});\n}\n","/**\n * @license\n * Copyright Google Inc. 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.io/license\n */\nimport {APP_ID, NgModule, NgZone, PLATFORM_INITIALIZER, PlatformRef, StaticProvider, createPlatformFactory, platformCore} from '@angular/core';\nimport {BrowserModule, ɵBrowserDomAdapter as BrowserDomAdapter, ɵELEMENT_PROBE_PROVIDERS as ELEMENT_PROBE_PROVIDERS} from '@angular/platform-browser';\nimport {BrowserDetection, createNgZone} from './browser_util';\n\nfunction initBrowserTests() {\n BrowserDomAdapter.makeCurrent();\n BrowserDetection.setup();\n}\n\nconst _TEST_BROWSER_PLATFORM_PROVIDERS: StaticProvider[] =\n [{provide: PLATFORM_INITIALIZER, useValue: initBrowserTests, multi: true}];\n\n/**\n * Platform for testing\n *\n * @publicApi\n */\nexport const platformBrowserTesting =\n createPlatformFactory(platformCore, 'browserTesting', _TEST_BROWSER_PLATFORM_PROVIDERS);\n\n/**\n * NgModule for testing.\n *\n * @publicApi\n */\n@NgModule({\n exports: [BrowserModule],\n providers: [\n {provide: APP_ID, useValue: 'a'},\n ELEMENT_PROBE_PROVIDERS,\n {provide: NgZone, useFactory: createNgZone},\n ]\n})\nexport class BrowserTestingModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {createNgZone as ɵangular_packages_platform_browser_testing_testing_a} from './src/browser_util';"],"names":["getDOM","global","BrowserDomAdapter","ELEMENT_PROBE_PROVIDERS"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v8.2.0
2
+ * @license Angular v8.2.4
3
3
  * (c) 2010-2019 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -1,12 +1,12 @@
1
1
  /**
2
- * @license Angular v8.2.0
2
+ * @license Angular v8.2.4
3
3
  * (c) 2010-2019 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
6
6
 
7
7
  import { __extends, __spread, __decorate, __param, __metadata, __assign } from 'tslib';
8
- import { ɵparseCookieValue, DOCUMENT, PlatformLocation, isPlatformServer, CommonModule, ɵPLATFORM_BROWSER_ID } from '@angular/common';
9
- import { ɵglobal, Injectable, Inject, InjectionToken, ApplicationInitStatus, APP_INITIALIZER, Injector, setTestabilityGetter, NgProbeToken, Optional, ApplicationRef, NgZone, getDebugNode, ViewEncapsulation, APP_ID, RendererStyleFlags2, PLATFORM_ID, ɵConsole, SecurityContext, ɵ_sanitizeHtml, ɵ_sanitizeStyle, ɵ_sanitizeUrl, PLATFORM_INITIALIZER, Sanitizer, createPlatformFactory, platformCore, ErrorHandler, ɵAPP_ROOT, RendererFactory2, Testability, NgModule, ApplicationModule, SkipSelf, ɵɵinject, ɵɵdefineInjectable, Version } from '@angular/core';
8
+ import { ɵparseCookieValue, DOCUMENT, PlatformLocation, isPlatformServer, ɵPLATFORM_BROWSER_ID, CommonModule } from '@angular/common';
9
+ import { ɵglobal, Injectable, Inject, InjectionToken, ApplicationInitStatus, APP_INITIALIZER, Injector, setTestabilityGetter, ApplicationRef, NgZone, getDebugNode, NgProbeToken, Optional, ViewEncapsulation, APP_ID, RendererStyleFlags2, PLATFORM_ID, ɵConsole, SecurityContext, ɵ_sanitizeHtml, ɵ_sanitizeStyle, ɵ_sanitizeUrl, PLATFORM_INITIALIZER, Sanitizer, createPlatformFactory, platformCore, ErrorHandler, ɵAPP_ROOT, RendererFactory2, Testability, NgModule, ApplicationModule, SkipSelf, ɵɵinject, ɵɵdefineInjectable, Version } from '@angular/core';
10
10
 
11
11
  /**
12
12
  * @license
@@ -19,6 +19,9 @@ var _DOM = null;
19
19
  function getDOM() {
20
20
  return _DOM;
21
21
  }
22
+ function setDOM(adapter) {
23
+ _DOM = adapter;
24
+ }
22
25
  function setRootDomAdapter(adapter) {
23
26
  if (!_DOM) {
24
27
  _DOM = adapter;
@@ -733,6 +736,26 @@ var BrowserGetTestability = /** @class */ (function () {
733
736
  * Use of this source code is governed by an MIT-style license that can be
734
737
  * found in the LICENSE file at https://angular.io/license
735
738
  */
739
+ var CAMEL_CASE_REGEXP = /([A-Z])/g;
740
+ var DASH_CASE_REGEXP = /-([a-z])/g;
741
+ function camelCaseToDashCase(input) {
742
+ return input.replace(CAMEL_CASE_REGEXP, function () {
743
+ var m = [];
744
+ for (var _i = 0; _i < arguments.length; _i++) {
745
+ m[_i] = arguments[_i];
746
+ }
747
+ return '-' + m[1].toLowerCase();
748
+ });
749
+ }
750
+ function dashCaseToCamelCase(input) {
751
+ return input.replace(DASH_CASE_REGEXP, function () {
752
+ var m = [];
753
+ for (var _i = 0; _i < arguments.length; _i++) {
754
+ m[_i] = arguments[_i];
755
+ }
756
+ return m[1].toUpperCase();
757
+ });
758
+ }
736
759
  /**
737
760
  * Exports the value under a given `name` in the global property `ng`. For example `ng.probe` if
738
761
  * `name` is `'probe'`.
@@ -1275,6 +1298,7 @@ var isBlackListedEvent = function (eventName) {
1275
1298
  }
1276
1299
  return blackListedMap.hasOwnProperty(eventName);
1277
1300
  };
1301
+ var ɵ2 = isBlackListedEvent;
1278
1302
  // a global listener to handle all dom event,
1279
1303
  // so we do not need to create a closure every time
1280
1304
  var globalListener = function (event) {
@@ -1319,6 +1343,7 @@ var globalListener = function (event) {
1319
1343
  }
1320
1344
  }
1321
1345
  };
1346
+ var ɵ3 = globalListener;
1322
1347
  var DomEventsPlugin = /** @class */ (function (_super) {
1323
1348
  __extends(DomEventsPlugin, _super);
1324
1349
  function DomEventsPlugin(doc, ngZone, platformId) {
@@ -1356,6 +1381,20 @@ var DomEventsPlugin = /** @class */ (function (_super) {
1356
1381
  DomEventsPlugin.prototype.supports = function (eventName) { return true; };
1357
1382
  DomEventsPlugin.prototype.addEventListener = function (element, eventName, handler) {
1358
1383
  var _this = this;
1384
+ /**
1385
+ * This code is about to add a listener to the DOM. If Zone.js is present, than
1386
+ * `addEventListener` has been patched. The patched code adds overhead in both
1387
+ * memory and speed (3x slower) than native. For this reason if we detect that
1388
+ * Zone.js is present we use a simple version of zone aware addEventListener instead.
1389
+ * The result is faster registration and the zone will be restored.
1390
+ * But ZoneSpec.onScheduleTask, ZoneSpec.onInvokeTask, ZoneSpec.onCancelTask
1391
+ * will not be invoked
1392
+ * We also do manual zone restoration in element.ts renderEventHandlerClosure method.
1393
+ *
1394
+ * NOTE: it is possible that the element is from different iframe, and so we
1395
+ * have to check before we execute the method.
1396
+ */
1397
+ var self = this;
1359
1398
  var zoneJsLoaded = element[ADD_EVENT_LISTENER];
1360
1399
  var callback = handler;
1361
1400
  // if zonejs is loaded and current zone is not ngZone
@@ -1645,15 +1684,15 @@ var HammerGesturesPlugin = /** @class */ (function (_super) {
1645
1684
  * Defines supported modifiers for key events.
1646
1685
  */
1647
1686
  var MODIFIER_KEYS = ['alt', 'control', 'meta', 'shift'];
1648
- var ɵ0$4 = function (event) { return event.altKey; }, ɵ1$1 = function (event) { return event.ctrlKey; }, ɵ2 = function (event) { return event.metaKey; }, ɵ3 = function (event) { return event.shiftKey; };
1687
+ var ɵ0$4 = function (event) { return event.altKey; }, ɵ1$1 = function (event) { return event.ctrlKey; }, ɵ2$1 = function (event) { return event.metaKey; }, ɵ3$1 = function (event) { return event.shiftKey; };
1649
1688
  /**
1650
1689
  * Retrieves modifiers from key-event objects.
1651
1690
  */
1652
1691
  var MODIFIER_KEY_GETTERS = {
1653
1692
  'alt': ɵ0$4,
1654
1693
  'control': ɵ1$1,
1655
- 'meta': ɵ2,
1656
- 'shift': ɵ3
1694
+ 'meta': ɵ2$1,
1695
+ 'shift': ɵ3$1
1657
1696
  };
1658
1697
  /**
1659
1698
  * @publicApi
@@ -2505,7 +2544,7 @@ var By = /** @class */ (function () {
2505
2544
  /**
2506
2545
  * @publicApi
2507
2546
  */
2508
- var VERSION = new Version('8.2.0');
2547
+ var VERSION = new Version('8.2.4');
2509
2548
 
2510
2549
  /**
2511
2550
  * @license