blob: d563c53a94e9c2bf230f66b77c904fdfffc85414 [file] [log] [blame]
{"version":3,"file":"platform-browser.js","sources":["../../../../../../packages/platform-browser/src/dom/dom_adapter.ts","../../../../../../packages/platform-browser/src/browser/generic_browser_adapter.ts","../../../../../../packages/platform-browser/src/browser/browser_adapter.ts","../../../../../../packages/platform-browser/src/browser/location/history.ts","../../../../../../packages/platform-browser/src/browser/location/browser_platform_location.ts","../../../../../../packages/platform-browser/src/browser/server-transition.ts","../../../../../../packages/platform-browser/src/browser/testability.ts","../../../../../../packages/platform-browser/src/dom/util.ts","../../../../../../packages/platform-browser/src/dom/debug/ng_probe.ts","../../../../../../packages/platform-browser/src/dom/events/event_manager.ts","../../../../../../packages/platform-browser/src/dom/shared_styles_host.ts","../../../../../../packages/platform-browser/src/dom/dom_renderer.ts","../../../../../../packages/platform-browser/src/dom/events/dom_events.ts","../../../../../../packages/platform-browser/src/dom/events/hammer_gestures.ts","../../../../../../packages/platform-browser/src/dom/events/key_events.ts","../../../../../../packages/platform-browser/src/security/dom_sanitization_service.ts","../../../../../../packages/platform-browser/src/browser.ts","../../../../../../packages/platform-browser/src/browser/meta.ts","../../../../../../packages/platform-browser/src/browser/title.ts","../../../../../../packages/platform-browser/src/browser/tools/browser.ts","../../../../../../packages/platform-browser/src/browser/tools/common_tools.ts","../../../../../../packages/platform-browser/src/browser/tools/tools.ts","../../../../../../packages/platform-browser/src/browser/transfer_state.ts","../../../../../../packages/platform-browser/src/dom/debug/by.ts","../../../../../../packages/platform-browser/src/private_export.ts","../../../../../../packages/platform-browser/src/version.ts","../../../../../../packages/platform-browser/src/platform-browser.ts","../../../../../../packages/platform-browser/public_api.ts","../../../../../../packages/platform-browser/index.ts","../../../../../../packages/platform-browser/platform-browser.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 {Type} from '@angular/core';\n\nlet _DOM: DomAdapter = null !;\n\nexport function getDOM() {\n return _DOM;\n}\n\nexport function setDOM(adapter: DomAdapter) {\n _DOM = adapter;\n}\n\nexport function setRootDomAdapter(adapter: DomAdapter) {\n if (!_DOM) {\n _DOM = adapter;\n }\n}\n\n/* tslint:disable:requireParameterType */\n/**\n * Provides DOM operations in an environment-agnostic way.\n *\n * @security Tread carefully! Interacting with the DOM directly is dangerous and\n * can introduce XSS risks.\n */\nexport abstract class DomAdapter {\n public resourceLoaderType: Type<any> = null !;\n abstract hasProperty(element: any, name: string): boolean;\n abstract setProperty(el: Element, name: string, value: any): any;\n abstract getProperty(el: Element, name: string): any;\n abstract invoke(el: Element, methodName: string, args: any[]): any;\n\n abstract logError(error: any): any;\n abstract log(error: any): any;\n abstract logGroup(error: any): any;\n abstract logGroupEnd(): any;\n\n /**\n * Maps attribute names to their corresponding property names for cases\n * where attribute name doesn't match property name.\n */\n get attrToPropMap(): {[key: string]: string} { return this._attrToPropMap; }\n set attrToPropMap(value: {[key: string]: string}) { this._attrToPropMap = value; }\n /** @internal */\n // TODO(issue/24571): remove '!'.\n _attrToPropMap !: {[key: string]: string};\n\n abstract contains(nodeA: any, nodeB: any): boolean;\n abstract parse(templateHtml: string): any;\n abstract querySelector(el: any, selector: string): any;\n abstract querySelectorAll(el: any, selector: string): any[];\n abstract on(el: any, evt: any, listener: any): any;\n abstract onAndCancel(el: any, evt: any, listener: any): Function;\n abstract dispatchEvent(el: any, evt: any): any;\n abstract createMouseEvent(eventType: any): any;\n abstract createEvent(eventType: string): any;\n abstract preventDefault(evt: any): any;\n abstract isPrevented(evt: any): boolean;\n abstract getInnerHTML(el: any): string;\n /** Returns content if el is a <template> element, null otherwise. */\n abstract getTemplateContent(el: any): any;\n abstract getOuterHTML(el: any): string;\n abstract nodeName(node: any): string;\n abstract nodeValue(node: any): string|null;\n abstract type(node: any): string;\n abstract content(node: any): any;\n abstract firstChild(el: any): Node|null;\n abstract nextSibling(el: any): Node|null;\n abstract parentElement(el: any): Node|null;\n abstract childNodes(el: any): Node[];\n abstract childNodesAsList(el: any): Node[];\n abstract clearNodes(el: any): any;\n abstract appendChild(el: any, node: any): any;\n abstract removeChild(el: any, node: any): any;\n abstract replaceChild(el: any, newNode: any, oldNode: any): any;\n abstract remove(el: any): Node;\n abstract insertBefore(parent: any, ref: any, node: any): any;\n abstract insertAllBefore(parent: any, ref: any, nodes: any): any;\n abstract insertAfter(parent: any, el: any, node: any): any;\n abstract setInnerHTML(el: any, value: any): any;\n abstract getText(el: any): string|null;\n abstract setText(el: any, value: string): any;\n abstract getValue(el: any): string;\n abstract setValue(el: any, value: string): any;\n abstract getChecked(el: any): boolean;\n abstract setChecked(el: any, value: boolean): any;\n abstract createComment(text: string): any;\n abstract createTemplate(html: any): HTMLElement;\n abstract createElement(tagName: any, doc?: any): HTMLElement;\n abstract createElementNS(ns: string, tagName: string, doc?: any): Element;\n abstract createTextNode(text: string, doc?: any): Text;\n abstract createScriptTag(attrName: string, attrValue: string, doc?: any): HTMLElement;\n abstract createStyleElement(css: string, doc?: any): HTMLStyleElement;\n abstract createShadowRoot(el: any): any;\n abstract getShadowRoot(el: any): any;\n abstract getHost(el: any): any;\n abstract getDistributedNodes(el: any): Node[];\n abstract clone /*<T extends Node>*/ (node: Node /*T*/): Node /*T*/;\n abstract getElementsByClassName(element: any, name: string): HTMLElement[];\n abstract getElementsByTagName(element: any, name: string): HTMLElement[];\n abstract classList(element: any): any[];\n abstract addClass(element: any, className: string): any;\n abstract removeClass(element: any, className: string): any;\n abstract hasClass(element: any, className: string): boolean;\n abstract setStyle(element: any, styleName: string, styleValue: string): any;\n abstract removeStyle(element: any, styleName: string): any;\n abstract getStyle(element: any, styleName: string): string;\n abstract hasStyle(element: any, styleName: string, styleValue?: string): boolean;\n abstract tagName(element: any): string;\n abstract attributeMap(element: any): Map<string, string>;\n abstract hasAttribute(element: any, attribute: string): boolean;\n abstract hasAttributeNS(element: any, ns: string, attribute: string): boolean;\n abstract getAttribute(element: any, attribute: string): string|null;\n abstract getAttributeNS(element: any, ns: string, attribute: string): string|null;\n abstract setAttribute(element: any, name: string, value: string): any;\n abstract setAttributeNS(element: any, ns: string, name: string, value: string): any;\n abstract removeAttribute(element: any, attribute: string): any;\n abstract removeAttributeNS(element: any, ns: string, attribute: string): any;\n abstract templateAwareRoot(el: any): any;\n abstract createHtmlDocument(): HTMLDocument;\n abstract getDefaultDocument(): Document;\n abstract getBoundingClientRect(el: any): any;\n abstract getTitle(doc: Document): string;\n abstract setTitle(doc: Document, newTitle: string): any;\n abstract elementMatches(n: any, selector: string): boolean;\n abstract isTemplateElement(el: any): boolean;\n abstract isTextNode(node: any): boolean;\n abstract isCommentNode(node: any): boolean;\n abstract isElementNode(node: any): boolean;\n abstract hasShadowRoot(node: any): boolean;\n abstract isShadowRoot(node: any): boolean;\n abstract importIntoDoc /*<T extends Node>*/ (node: Node /*T*/): Node /*T*/;\n abstract adoptNode /*<T extends Node>*/ (node: Node /*T*/): Node /*T*/;\n abstract getHref(element: any): string;\n abstract getEventKey(event: any): string;\n abstract resolveAndSetHref(element: any, baseUrl: string, href: string): any;\n abstract supportsDOMEvents(): boolean;\n abstract supportsNativeShadowDOM(): boolean;\n abstract getGlobalEventTarget(doc: Document, target: string): any;\n abstract getHistory(): History;\n abstract getLocation(): Location;\n abstract getBaseHref(doc: Document): string|null;\n abstract resetBaseElement(): void;\n abstract getUserAgent(): string;\n abstract setData(element: any, name: string, value: string): any;\n abstract getComputedStyle(element: any): any;\n abstract getData(element: any, name: string): string|null;\n abstract supportsWebAnimation(): boolean;\n abstract performanceNow(): number;\n abstract getAnimationPrefix(): string;\n abstract getTransitionEnd(): string;\n abstract supportsAnimation(): boolean;\n\n abstract supportsCookies(): boolean;\n abstract getCookie(name: string): string|null;\n abstract setCookie(name: string, value: string): any;\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 */\n\nimport {DomAdapter} from '../dom/dom_adapter';\n\n\n\n/**\n * Provides DOM operations in any browser environment.\n *\n * @security Tread carefully! Interacting with the DOM directly is dangerous and\n * can introduce XSS risks.\n */\nexport abstract class GenericBrowserDomAdapter extends DomAdapter {\n private _animationPrefix: string|null = null;\n private _transitionEnd: string|null = null;\n constructor() {\n super();\n try {\n const element = this.createElement('div', document);\n if (this.getStyle(element, 'animationName') != null) {\n this._animationPrefix = '';\n } else {\n const domPrefixes = ['Webkit', 'Moz', 'O', 'ms'];\n\n for (let i = 0; i < domPrefixes.length; i++) {\n if (this.getStyle(element, domPrefixes[i] + 'AnimationName') != null) {\n this._animationPrefix = '-' + domPrefixes[i].toLowerCase() + '-';\n break;\n }\n }\n }\n\n const transEndEventNames: {[key: string]: string} = {\n WebkitTransition: 'webkitTransitionEnd',\n MozTransition: 'transitionend',\n OTransition: 'oTransitionEnd otransitionend',\n transition: 'transitionend'\n };\n\n Object.keys(transEndEventNames).forEach((key: string) => {\n if (this.getStyle(element, key) != null) {\n this._transitionEnd = transEndEventNames[key];\n }\n });\n } catch {\n this._animationPrefix = null;\n this._transitionEnd = null;\n }\n }\n\n getDistributedNodes(el: HTMLElement): Node[] { return (<any>el).getDistributedNodes(); }\n resolveAndSetHref(el: HTMLAnchorElement, baseUrl: string, href: string) {\n el.href = href == null ? baseUrl : baseUrl + '/../' + href;\n }\n supportsDOMEvents(): boolean { return true; }\n supportsNativeShadowDOM(): boolean {\n return typeof(<any>document.body).createShadowRoot === 'function';\n }\n getAnimationPrefix(): string { return this._animationPrefix ? this._animationPrefix : ''; }\n getTransitionEnd(): string { return this._transitionEnd ? this._transitionEnd : ''; }\n supportsAnimation(): boolean {\n return this._animationPrefix != null && this._transitionEnd != null;\n }\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 */\n\nimport {ɵparseCookieValue as parseCookieValue} from '@angular/common';\nimport {ɵglobal as global} from '@angular/core';\n\nimport {setRootDomAdapter} from '../dom/dom_adapter';\n\nimport {GenericBrowserDomAdapter} from './generic_browser_adapter';\n\nconst _attrToPropMap = {\n 'class': 'className',\n 'innerHtml': 'innerHTML',\n 'readonly': 'readOnly',\n 'tabindex': 'tabIndex',\n};\n\nconst DOM_KEY_LOCATION_NUMPAD = 3;\n\n// Map to convert some key or keyIdentifier values to what will be returned by getEventKey\nconst _keyMap: {[k: string]: string} = {\n // The following values are here for cross-browser compatibility and to match the W3C standard\n // cf http://www.w3.org/TR/DOM-Level-3-Events-key/\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// There is a bug in Chrome for numeric keypad keys:\n// https://code.google.com/p/chromium/issues/detail?id=155654\n// 1, 2, 3 ... are reported as A, B, C ...\nconst _chromeNumKeyPadMap = {\n 'A': '1',\n 'B': '2',\n 'C': '3',\n 'D': '4',\n 'E': '5',\n 'F': '6',\n 'G': '7',\n 'H': '8',\n 'I': '9',\n 'J': '*',\n 'K': '+',\n 'M': '-',\n 'N': '.',\n 'O': '/',\n '\\x60': '0',\n '\\x90': 'NumLock'\n};\n\nconst nodeContains: (a: any, b: any) => boolean = (() => {\n if (global['Node']) {\n return global['Node'].prototype.contains || function(node: any) {\n return !!(this.compareDocumentPosition(node) & 16);\n };\n }\n\n return undefined as any;\n})();\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 */\n/* tslint:disable:requireParameterType no-console */\nexport class BrowserDomAdapter extends GenericBrowserDomAdapter {\n parse(templateHtml: string) { throw new Error('parse not implemented'); }\n static makeCurrent() { setRootDomAdapter(new BrowserDomAdapter()); }\n hasProperty(element: Node, name: string): boolean { return name in element; }\n setProperty(el: Node, name: string, value: any) { (<any>el)[name] = value; }\n getProperty(el: Node, name: string): any { return (<any>el)[name]; }\n invoke(el: Node, methodName: string, args: any[]): any { (<any>el)[methodName](...args); }\n\n // TODO(tbosch): move this into a separate environment class once we have it\n logError(error: string): void {\n if (window.console) {\n if (console.error) {\n console.error(error);\n } else {\n console.log(error);\n }\n }\n }\n\n log(error: string): void {\n if (window.console) {\n window.console.log && window.console.log(error);\n }\n }\n\n logGroup(error: string): void {\n if (window.console) {\n window.console.group && window.console.group(error);\n }\n }\n\n logGroupEnd(): void {\n if (window.console) {\n window.console.groupEnd && window.console.groupEnd();\n }\n }\n\n get attrToPropMap(): any { return _attrToPropMap; }\n\n contains(nodeA: any, nodeB: any): boolean { return nodeContains.call(nodeA, nodeB); }\n querySelector(el: HTMLElement, selector: string): any { return el.querySelector(selector); }\n querySelectorAll(el: any, selector: string): any[] { return el.querySelectorAll(selector); }\n on(el: Node, evt: any, listener: any) { el.addEventListener(evt, listener, false); }\n onAndCancel(el: Node, evt: any, listener: any): Function {\n el.addEventListener(evt, listener, false);\n // Needed to follow Dart's subscription semantic, until fix of\n // https://code.google.com/p/dart/issues/detail?id=17406\n return () => { el.removeEventListener(evt, listener, false); };\n }\n dispatchEvent(el: Node, evt: any) { el.dispatchEvent(evt); }\n createMouseEvent(eventType: string): MouseEvent {\n const evt: MouseEvent = this.getDefaultDocument().createEvent('MouseEvent');\n evt.initEvent(eventType, true, true);\n return evt;\n }\n createEvent(eventType: any): Event {\n const evt: Event = this.getDefaultDocument().createEvent('Event');\n evt.initEvent(eventType, true, true);\n return evt;\n }\n preventDefault(evt: Event) {\n evt.preventDefault();\n evt.returnValue = false;\n }\n isPrevented(evt: Event): boolean {\n return evt.defaultPrevented || evt.returnValue != null && !evt.returnValue;\n }\n getInnerHTML(el: HTMLElement): string { return el.innerHTML; }\n getTemplateContent(el: Node): Node|null {\n return 'content' in el && this.isTemplateElement(el) ? (<any>el).content : null;\n }\n getOuterHTML(el: HTMLElement): string { return el.outerHTML; }\n nodeName(node: Node): string { return node.nodeName; }\n nodeValue(node: Node): string|null { return node.nodeValue; }\n type(node: HTMLInputElement): string { return node.type; }\n content(node: Node): Node {\n if (this.hasProperty(node, 'content')) {\n return (<any>node).content;\n } else {\n return node;\n }\n }\n firstChild(el: Node): Node|null { return el.firstChild; }\n nextSibling(el: Node): Node|null { return el.nextSibling; }\n parentElement(el: Node): Node|null { return el.parentNode; }\n childNodes(el: any): Node[] { return el.childNodes; }\n childNodesAsList(el: Node): any[] {\n const childNodes = el.childNodes;\n const res = new Array(childNodes.length);\n for (let i = 0; i < childNodes.length; i++) {\n res[i] = childNodes[i];\n }\n return res;\n }\n clearNodes(el: Node) {\n while (el.firstChild) {\n el.removeChild(el.firstChild);\n }\n }\n appendChild(el: Node, node: Node) { el.appendChild(node); }\n removeChild(el: Node, node: Node) { el.removeChild(node); }\n replaceChild(el: Node, newChild: Node, oldChild: Node) { el.replaceChild(newChild, oldChild); }\n remove(node: Node): Node {\n if (node.parentNode) {\n node.parentNode.removeChild(node);\n }\n return node;\n }\n insertBefore(parent: Node, ref: Node, node: Node) { parent.insertBefore(node, ref); }\n insertAllBefore(parent: Node, ref: Node, nodes: Node[]) {\n nodes.forEach((n: any) => parent.insertBefore(n, ref));\n }\n insertAfter(parent: Node, ref: Node, node: any) { parent.insertBefore(node, ref.nextSibling); }\n setInnerHTML(el: Element, value: string) { el.innerHTML = value; }\n getText(el: Node): string|null { return el.textContent; }\n setText(el: Node, value: string) { el.textContent = value; }\n getValue(el: any): string { return el.value; }\n setValue(el: any, value: string) { el.value = value; }\n getChecked(el: any): boolean { return el.checked; }\n setChecked(el: any, value: boolean) { el.checked = value; }\n createComment(text: string): Comment { return this.getDefaultDocument().createComment(text); }\n createTemplate(html: any): HTMLElement {\n const t = this.getDefaultDocument().createElement('template');\n t.innerHTML = html;\n return t;\n }\n createElement(tagName: string, doc?: Document): HTMLElement {\n doc = doc || this.getDefaultDocument();\n return doc.createElement(tagName);\n }\n createElementNS(ns: string, tagName: string, doc?: Document): Element {\n doc = doc || this.getDefaultDocument();\n return doc.createElementNS(ns, tagName);\n }\n createTextNode(text: string, doc?: Document): Text {\n doc = doc || this.getDefaultDocument();\n return doc.createTextNode(text);\n }\n createScriptTag(attrName: string, attrValue: string, doc?: Document): HTMLScriptElement {\n doc = doc || this.getDefaultDocument();\n const el = <HTMLScriptElement>doc.createElement('SCRIPT');\n el.setAttribute(attrName, attrValue);\n return el;\n }\n createStyleElement(css: string, doc?: Document): HTMLStyleElement {\n doc = doc || this.getDefaultDocument();\n const style = <HTMLStyleElement>doc.createElement('style');\n this.appendChild(style, this.createTextNode(css, doc));\n return style;\n }\n createShadowRoot(el: HTMLElement): DocumentFragment { return (<any>el).createShadowRoot(); }\n getShadowRoot(el: HTMLElement): DocumentFragment { return (<any>el).shadowRoot; }\n getHost(el: HTMLElement): HTMLElement { return (<any>el).host; }\n clone(node: Node): Node { return node.cloneNode(true); }\n getElementsByClassName(element: any, name: string): HTMLElement[] {\n return element.getElementsByClassName(name);\n }\n getElementsByTagName(element: any, name: string): HTMLElement[] {\n return element.getElementsByTagName(name);\n }\n classList(element: any): any[] { return Array.prototype.slice.call(element.classList, 0); }\n addClass(element: any, className: string) { element.classList.add(className); }\n removeClass(element: any, className: string) { element.classList.remove(className); }\n hasClass(element: any, className: string): boolean {\n return element.classList.contains(className);\n }\n setStyle(element: any, styleName: string, styleValue: string) {\n element.style[styleName] = styleValue;\n }\n removeStyle(element: any, stylename: string) {\n // IE requires '' instead of null\n // see https://github.com/angular/angular/issues/7916\n element.style[stylename] = '';\n }\n getStyle(element: any, stylename: string): string { return element.style[stylename]; }\n hasStyle(element: any, styleName: string, styleValue?: string|null): boolean {\n const value = this.getStyle(element, styleName) || '';\n return styleValue ? value == styleValue : value.length > 0;\n }\n tagName(element: any): string { return element.tagName; }\n attributeMap(element: any): Map<string, string> {\n const res = new Map<string, string>();\n const elAttrs = element.attributes;\n for (let i = 0; i < elAttrs.length; i++) {\n const attrib = elAttrs.item(i);\n res.set(attrib.name, attrib.value);\n }\n return res;\n }\n hasAttribute(element: Element, attribute: string): boolean {\n return element.hasAttribute(attribute);\n }\n hasAttributeNS(element: Element, ns: string, attribute: string): boolean {\n return element.hasAttributeNS(ns, attribute);\n }\n getAttribute(element: Element, attribute: string): string|null {\n return element.getAttribute(attribute);\n }\n getAttributeNS(element: Element, ns: string, name: string): string|null {\n return element.getAttributeNS(ns, name);\n }\n setAttribute(element: Element, name: string, value: string) { element.setAttribute(name, value); }\n setAttributeNS(element: Element, ns: string, name: string, value: string) {\n element.setAttributeNS(ns, name, value);\n }\n removeAttribute(element: Element, attribute: string) { element.removeAttribute(attribute); }\n removeAttributeNS(element: Element, ns: string, name: string) {\n element.removeAttributeNS(ns, name);\n }\n templateAwareRoot(el: Node): any { return this.isTemplateElement(el) ? this.content(el) : el; }\n createHtmlDocument(): HTMLDocument {\n return document.implementation.createHTMLDocument('fakeTitle');\n }\n getDefaultDocument(): Document { return document; }\n getBoundingClientRect(el: Element): any {\n try {\n return el.getBoundingClientRect();\n } catch {\n return {top: 0, bottom: 0, left: 0, right: 0, width: 0, height: 0};\n }\n }\n getTitle(doc: Document): string { return doc.title; }\n setTitle(doc: Document, newTitle: string) { doc.title = newTitle || ''; }\n elementMatches(n: any, selector: string): boolean {\n if (this.isElementNode(n)) {\n return n.matches && n.matches(selector) ||\n n.msMatchesSelector && n.msMatchesSelector(selector) ||\n n.webkitMatchesSelector && n.webkitMatchesSelector(selector);\n }\n\n return false;\n }\n isTemplateElement(el: Node): boolean {\n return this.isElementNode(el) && el.nodeName === 'TEMPLATE';\n }\n isTextNode(node: Node): boolean { return node.nodeType === Node.TEXT_NODE; }\n isCommentNode(node: Node): boolean { return node.nodeType === Node.COMMENT_NODE; }\n isElementNode(node: Node): boolean { return node.nodeType === Node.ELEMENT_NODE; }\n hasShadowRoot(node: any): boolean {\n return node.shadowRoot != null && node instanceof HTMLElement;\n }\n isShadowRoot(node: any): boolean { return node instanceof DocumentFragment; }\n importIntoDoc(node: Node): any { return document.importNode(this.templateAwareRoot(node), true); }\n adoptNode(node: Node): any { return document.adoptNode(node); }\n getHref(el: Element): string { return el.getAttribute('href') !; }\n\n getEventKey(event: any): string {\n let key = event.key;\n if (key == null) {\n key = event.keyIdentifier;\n // keyIdentifier is defined in the old draft of DOM Level 3 Events implemented by Chrome and\n // Safari cf\n // http://www.w3.org/TR/2007/WD-DOM-Level-3-Events-20071221/events.html#Events-KeyboardEvents-Interfaces\n if (key == null) {\n return 'Unidentified';\n }\n if (key.startsWith('U+')) {\n key = String.fromCharCode(parseInt(key.substring(2), 16));\n if (event.location === DOM_KEY_LOCATION_NUMPAD && _chromeNumKeyPadMap.hasOwnProperty(key)) {\n // There is a bug in Chrome for numeric keypad keys:\n // https://code.google.com/p/chromium/issues/detail?id=155654\n // 1, 2, 3 ... are reported as A, B, C ...\n key = (_chromeNumKeyPadMap as any)[key];\n }\n }\n }\n\n return _keyMap[key] || key;\n }\n 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 getHistory(): History { return window.history; }\n getLocation(): Location { return window.location; }\n getBaseHref(doc: Document): string|null {\n const href = getBaseElementHref();\n return href == null ? null : relativePath(href);\n }\n resetBaseElement(): void { baseElement = null; }\n getUserAgent(): string { return window.navigator.userAgent; }\n setData(element: Element, name: string, value: string) {\n this.setAttribute(element, 'data-' + name, value);\n }\n getData(element: Element, name: string): string|null {\n return this.getAttribute(element, 'data-' + name);\n }\n getComputedStyle(element: any): any { return getComputedStyle(element); }\n // TODO(tbosch): move this into a separate environment class once we have it\n supportsWebAnimation(): boolean {\n return typeof(<any>Element).prototype['animate'] === 'function';\n }\n performanceNow(): number {\n // performance.now() is not available in all browsers, see\n // http://caniuse.com/#search=performance.now\n return window.performance && window.performance.now ? window.performance.now() :\n new Date().getTime();\n }\n\n supportsCookies(): boolean { return true; }\n\n getCookie(name: string): string|null { return parseCookieValue(document.cookie, name); }\n\n setCookie(name: string, value: string) {\n // document.cookie is magical, assigning into it assigns/overrides one cookie value, but does\n // not clear other cookies.\n document.cookie = encodeURIComponent(name) + '=' + encodeURIComponent(value);\n }\n}\n\nlet baseElement: HTMLElement|null = null;\nfunction getBaseElementHref(): string|null {\n if (!baseElement) {\n baseElement = document.querySelector('base') !;\n if (!baseElement) {\n return null;\n }\n }\n return baseElement.getAttribute('href');\n}\n\n// based on urlUtils.js in AngularJS 1\nlet urlParsingNode: any;\nfunction relativePath(url: any): string {\n if (!urlParsingNode) {\n urlParsingNode = document.createElement('a');\n }\n urlParsingNode.setAttribute('href', url);\n return (urlParsingNode.pathname.charAt(0) === '/') ? urlParsingNode.pathname :\n '/' + urlParsingNode.pathname;\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 */\n\nexport function supportsState(): boolean {\n return !!window.history.pushState;\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 */\n\nimport {DOCUMENT, LocationChangeListener, PlatformLocation} from '@angular/common';\nimport {Inject, Injectable} from '@angular/core';\n\nimport {getDOM} from '../../dom/dom_adapter';\n\nimport {supportsState} from './history';\n\n\n\n/**\n * `PlatformLocation` encapsulates all of the direct calls to platform APIs.\n * This class should not be used directly by an application developer. Instead, use\n * {@link Location}.\n */\n@Injectable()\nexport class BrowserPlatformLocation extends PlatformLocation {\n // TODO(issue/24571): remove '!'.\n public readonly location !: Location;\n // TODO(issue/24571): remove '!'.\n private _history !: History;\n\n constructor(@Inject(DOCUMENT) private _doc: any) {\n super();\n this._init();\n }\n\n // This is moved to its own method so that `MockPlatformLocationStrategy` can overwrite it\n /** @internal */\n _init() {\n (this as{location: Location}).location = getDOM().getLocation();\n this._history = getDOM().getHistory();\n }\n\n getBaseHrefFromDOM(): string { return getDOM().getBaseHref(this._doc) !; }\n\n onPopState(fn: LocationChangeListener): void {\n getDOM().getGlobalEventTarget(this._doc, 'window').addEventListener('popstate', fn, false);\n }\n\n onHashChange(fn: LocationChangeListener): void {\n getDOM().getGlobalEventTarget(this._doc, 'window').addEventListener('hashchange', fn, false);\n }\n\n get href(): string { return this.location.href; }\n get protocol(): string { return this.location.protocol; }\n get hostname(): string { return this.location.hostname; }\n get port(): string { return this.location.port; }\n get pathname(): string { return this.location.pathname; }\n get search(): string { return this.location.search; }\n get hash(): string { return this.location.hash; }\n set pathname(newPath: string) { this.location.pathname = newPath; }\n\n pushState(state: any, title: string, url: string): void {\n if (supportsState()) {\n this._history.pushState(state, title, url);\n } else {\n this.location.hash = url;\n }\n }\n\n replaceState(state: any, title: string, url: string): void {\n if (supportsState()) {\n this._history.replaceState(state, title, url);\n } else {\n this.location.hash = url;\n }\n }\n\n forward(): void { this._history.forward(); }\n\n back(): void { this._history.back(); }\n\n getState(): unknown { return this._history.state; }\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 */\n\nimport {DOCUMENT} from '@angular/common';\nimport {APP_INITIALIZER, ApplicationInitStatus, Inject, InjectionToken, Injector, StaticProvider} from '@angular/core';\n\nimport {getDOM} from '../dom/dom_adapter';\n\n/**\n * An id that identifies a particular application being bootstrapped, that should\n * match across the client/server boundary.\n */\nexport const TRANSITION_ID = new InjectionToken('TRANSITION_ID');\n\nexport function appInitializerFactory(transitionId: string, document: any, injector: Injector) {\n return () => {\n // Wait for all application initializers to be completed before removing the styles set by\n // the server.\n injector.get(ApplicationInitStatus).donePromise.then(() => {\n const dom = getDOM();\n const styles: any[] =\n Array.prototype.slice.apply(dom.querySelectorAll(document, `style[ng-transition]`));\n styles.filter(el => dom.getAttribute(el, 'ng-transition') === transitionId)\n .forEach(el => dom.remove(el));\n });\n };\n}\n\nexport const SERVER_TRANSITION_PROVIDERS: StaticProvider[] = [\n {\n provide: APP_INITIALIZER,\n useFactory: appInitializerFactory,\n deps: [TRANSITION_ID, DOCUMENT, Injector],\n multi: true\n },\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 */\n\nimport {GetTestability, Testability, TestabilityRegistry, setTestabilityGetter, ɵglobal as global} from '@angular/core';\n\nimport {getDOM} from '../dom/dom_adapter';\n\nexport class BrowserGetTestability implements GetTestability {\n static init() { setTestabilityGetter(new BrowserGetTestability()); }\n\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 Error('Could not find testability for element.');\n }\n return testability;\n };\n\n global['getAllAngularTestabilities'] = () => registry.getAllTestabilities();\n\n global['getAllAngularRootElements'] = () => registry.getAllRootElements();\n\n const whenAllStable = (callback: any /** TODO #9100 */) => {\n const testabilities = global['getAllAngularTestabilities']();\n let count = testabilities.length;\n let didWork = false;\n const decrement = function(didWork_: any /** TODO #9100 */) {\n didWork = didWork || didWork_;\n count--;\n if (count == 0) {\n callback(didWork);\n }\n };\n testabilities.forEach(function(testability: any /** TODO #9100 */) {\n testability.whenStable(decrement);\n });\n };\n\n if (!global['frameworkStabilizers']) {\n global['frameworkStabilizers'] = [];\n }\n global['frameworkStabilizers'].push(whenAllStable);\n }\n\n findTestabilityInTree(registry: TestabilityRegistry, elem: any, 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, getDOM().getHost(elem), true);\n }\n return this.findTestabilityInTree(registry, getDOM().parentElement(elem), true);\n }\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 */\n\nimport {ɵglobal as global} from '@angular/core';\n\nconst CAMEL_CASE_REGEXP = /([A-Z])/g;\nconst DASH_CASE_REGEXP = /-([a-z])/g;\n\n\nexport function camelCaseToDashCase(input: string): string {\n return input.replace(CAMEL_CASE_REGEXP, (...m: string[]) => '-' + m[1].toLowerCase());\n}\n\nexport function dashCaseToCamelCase(input: string): string {\n return input.replace(DASH_CASE_REGEXP, (...m: string[]) => m[1].toUpperCase());\n}\n\n/**\n * Exports the value under a given `name` in the global property `ng`. For example `ng.probe` if\n * `name` is `'probe'`.\n * @param name Name under which it will be exported. Keep in mind this will be a property of the\n * global `ng` object.\n * @param value The value to export.\n */\nexport function exportNgVar(name: string, value: any): void {\n if (typeof COMPILED === 'undefined' || !COMPILED) {\n // Note: we can't export `ng` when using closure enhanced optimization as:\n // - closure declares globals itself for minified names, which sometimes clobber our `ng` global\n // - we can't declare a closure extern as the namespace `ng` is already used within Google\n // for typings for angularJS (via `goog.provide('ng....')`).\n const ng = global['ng'] = (global['ng'] as{[key: string]: any} | undefined) || {};\n ng[name] = value;\n }\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 */\n\nimport {APP_INITIALIZER, ApplicationRef, DebugNode, NgProbeToken, NgZone, Optional, Provider, getDebugNode} from '@angular/core';\n\nimport {exportNgVar} from '../util';\n\nconst CORE_TOKENS = (() => ({\n 'ApplicationRef': ApplicationRef,\n 'NgZone': NgZone,\n }))();\n\nconst INSPECT_GLOBAL_NAME = 'probe';\nconst CORE_TOKENS_GLOBAL_NAME = 'coreTokens';\n\n/**\n * Returns a {@link DebugElement} for the given native DOM element, or\n * null if the given native element does not have an Angular view associated\n * with it.\n */\nexport function inspectNativeElement(element: any): DebugNode|null {\n return getDebugNode(element);\n}\n\nexport function _createNgProbe(coreTokens: NgProbeToken[]): any {\n exportNgVar(INSPECT_GLOBAL_NAME, inspectNativeElement);\n exportNgVar(CORE_TOKENS_GLOBAL_NAME, {...CORE_TOKENS, ..._ngProbeTokensToMap(coreTokens || [])});\n return () => inspectNativeElement;\n}\n\nfunction _ngProbeTokensToMap(tokens: NgProbeToken[]): {[name: string]: any} {\n return tokens.reduce((prev: any, t: any) => (prev[t.name] = t.token, prev), {});\n}\n\n/**\n * In Ivy, we don't support NgProbe because we have our own set of testing utilities\n * with more robust functionality.\n *\n * We shouldn't bring in NgProbe because it prevents DebugNode and friends from\n * tree-shaking properly.\n */\nexport const ELEMENT_PROBE_PROVIDERS__POST_R3__ = [];\n\n/**\n * Providers which support debugging Angular applications (e.g. via `ng.probe`).\n */\nexport const ELEMENT_PROBE_PROVIDERS__PRE_R3__: Provider[] = [\n {\n provide: APP_INITIALIZER,\n useFactory: _createNgProbe,\n deps: [\n [NgProbeToken, new Optional()],\n ],\n multi: true,\n },\n];\n\nexport const ELEMENT_PROBE_PROVIDERS = ELEMENT_PROBE_PROVIDERS__PRE_R3__;\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 */\n\nimport {Inject, Injectable, InjectionToken, NgZone} from '@angular/core';\n\nimport {getDOM} from '../dom_adapter';\n\n/**\n * The injection token for the event-manager plug-in service.\n *\n * @publicApi\n */\nexport const EVENT_MANAGER_PLUGINS =\n new InjectionToken<EventManagerPlugin[]>('EventManagerPlugins');\n\n/**\n * An injectable service that provides event management for Angular\n * through a browser plug-in.\n *\n * @publicApi\n */\n@Injectable()\nexport class EventManager {\n private _plugins: EventManagerPlugin[];\n private _eventNameToPlugin = new Map<string, EventManagerPlugin>();\n\n /**\n * Initializes an instance of the event-manager service.\n */\n constructor(@Inject(EVENT_MANAGER_PLUGINS) plugins: EventManagerPlugin[], private _zone: NgZone) {\n plugins.forEach(p => p.manager = this);\n this._plugins = plugins.slice().reverse();\n }\n\n /**\n * Registers a handler for a specific element and event.\n *\n * @param element The HTML element to receive event notifications.\n * @param eventName The name of the 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 A callback function that can be used to remove the handler.\n */\n addEventListener(element: HTMLElement, eventName: string, handler: Function): Function {\n const plugin = this._findPluginFor(eventName);\n return plugin.addEventListener(element, eventName, handler);\n }\n\n /**\n * Registers a global handler for an event in a target view.\n *\n * @param target A target for global event notifications. One of \"window\", \"document\", or \"body\".\n * @param eventName The name of the 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 A callback function that can be used to remove the handler.\n */\n addGlobalEventListener(target: string, eventName: string, handler: Function): Function {\n const plugin = this._findPluginFor(eventName);\n return plugin.addGlobalEventListener(target, eventName, handler);\n }\n\n /**\n * Retrieves the compilation zone in which event listeners are registered.\n */\n getZone(): NgZone { return this._zone; }\n\n /** @internal */\n _findPluginFor(eventName: string): EventManagerPlugin {\n const plugin = this._eventNameToPlugin.get(eventName);\n if (plugin) {\n return plugin;\n }\n\n const plugins = this._plugins;\n for (let i = 0; i < plugins.length; i++) {\n const plugin = plugins[i];\n if (plugin.supports(eventName)) {\n this._eventNameToPlugin.set(eventName, plugin);\n return plugin;\n }\n }\n throw new Error(`No event manager plugin found for event ${eventName}`);\n }\n}\n\nexport abstract class EventManagerPlugin {\n constructor(private _doc: any) {}\n\n // TODO(issue/24571): remove '!'.\n manager !: EventManager;\n\n abstract supports(eventName: string): boolean;\n\n abstract addEventListener(element: HTMLElement, eventName: string, handler: Function): Function;\n\n addGlobalEventListener(element: string, eventName: string, handler: Function): Function {\n const target: HTMLElement = getDOM().getGlobalEventTarget(this._doc, element);\n if (!target) {\n throw new Error(`Unsupported event target ${target} for event ${eventName}`);\n }\n return this.addEventListener(target, eventName, handler);\n }\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 */\n\nimport {DOCUMENT} from '@angular/common';\nimport {Inject, Injectable, OnDestroy} from '@angular/core';\nimport {getDOM} from './dom_adapter';\n\n@Injectable()\nexport class SharedStylesHost {\n /** @internal */\n protected _stylesSet = new Set<string>();\n\n addStyles(styles: string[]): void {\n const additions = new Set<string>();\n styles.forEach(style => {\n if (!this._stylesSet.has(style)) {\n this._stylesSet.add(style);\n additions.add(style);\n }\n });\n this.onStylesAdded(additions);\n }\n\n onStylesAdded(additions: Set<string>): void {}\n\n getAllStyles(): string[] { return Array.from(this._stylesSet); }\n}\n\n@Injectable()\nexport class DomSharedStylesHost extends SharedStylesHost implements OnDestroy {\n private _hostNodes = new Set<Node>();\n private _styleNodes = new Set<Node>();\n constructor(@Inject(DOCUMENT) private _doc: any) {\n super();\n this._hostNodes.add(_doc.head);\n }\n\n private _addStylesToHost(styles: Set<string>, host: Node): void {\n styles.forEach((style: string) => {\n const styleEl = this._doc.createElement('style');\n styleEl.textContent = style;\n this._styleNodes.add(host.appendChild(styleEl));\n });\n }\n\n addHost(hostNode: Node): void {\n this._addStylesToHost(this._stylesSet, hostNode);\n this._hostNodes.add(hostNode);\n }\n\n removeHost(hostNode: Node): void { this._hostNodes.delete(hostNode); }\n\n onStylesAdded(additions: Set<string>): void {\n this._hostNodes.forEach(hostNode => this._addStylesToHost(additions, hostNode));\n }\n\n ngOnDestroy(): void { this._styleNodes.forEach(styleNode => getDOM().remove(styleNode)); }\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 */\n\nimport {APP_ID, Inject, Injectable, Renderer2, RendererFactory2, RendererStyleFlags2, RendererType2, ViewEncapsulation} from '@angular/core';\n\nimport {EventManager} from './events/event_manager';\nimport {DomSharedStylesHost} from './shared_styles_host';\n\nexport const NAMESPACE_URIS: {[ns: string]: string} = {\n 'svg': 'http://www.w3.org/2000/svg',\n 'xhtml': 'http://www.w3.org/1999/xhtml',\n 'xlink': 'http://www.w3.org/1999/xlink',\n 'xml': 'http://www.w3.org/XML/1998/namespace',\n 'xmlns': 'http://www.w3.org/2000/xmlns/',\n};\n\nconst COMPONENT_REGEX = /%COMP%/g;\nexport const COMPONENT_VARIABLE = '%COMP%';\nexport const HOST_ATTR = `_nghost-${COMPONENT_VARIABLE}`;\nexport const CONTENT_ATTR = `_ngcontent-${COMPONENT_VARIABLE}`;\n\nexport function shimContentAttribute(componentShortId: string): string {\n return CONTENT_ATTR.replace(COMPONENT_REGEX, componentShortId);\n}\n\nexport function shimHostAttribute(componentShortId: string): string {\n return HOST_ATTR.replace(COMPONENT_REGEX, componentShortId);\n}\n\nexport function flattenStyles(\n compId: string, styles: Array<any|any[]>, target: string[]): string[] {\n for (let i = 0; i < styles.length; i++) {\n let style = styles[i];\n\n if (Array.isArray(style)) {\n flattenStyles(compId, style, target);\n } else {\n style = style.replace(COMPONENT_REGEX, compId);\n target.push(style);\n }\n }\n return target;\n}\n\nfunction decoratePreventDefault(eventHandler: Function): Function {\n return (event: any) => {\n const allowDefaultBehavior = eventHandler(event);\n if (allowDefaultBehavior === false) {\n // TODO(tbosch): move preventDefault into event plugins...\n event.preventDefault();\n event.returnValue = false;\n }\n };\n}\n\n@Injectable()\nexport class DomRendererFactory2 implements RendererFactory2 {\n private rendererByCompId = new Map<string, Renderer2>();\n private defaultRenderer: Renderer2;\n\n constructor(\n private eventManager: EventManager, private sharedStylesHost: DomSharedStylesHost,\n @Inject(APP_ID) private appId: string) {\n this.defaultRenderer = new DefaultDomRenderer2(eventManager);\n }\n\n createRenderer(element: any, type: RendererType2|null): Renderer2 {\n if (!element || !type) {\n return this.defaultRenderer;\n }\n switch (type.encapsulation) {\n case ViewEncapsulation.Emulated: {\n let renderer = this.rendererByCompId.get(type.id);\n if (!renderer) {\n renderer = new EmulatedEncapsulationDomRenderer2(\n this.eventManager, this.sharedStylesHost, type, this.appId);\n this.rendererByCompId.set(type.id, renderer);\n }\n (<EmulatedEncapsulationDomRenderer2>renderer).applyToHost(element);\n return renderer;\n }\n case ViewEncapsulation.Native:\n case ViewEncapsulation.ShadowDom:\n return new ShadowDomRenderer(this.eventManager, this.sharedStylesHost, element, type);\n default: {\n if (!this.rendererByCompId.has(type.id)) {\n const styles = flattenStyles(type.id, type.styles, []);\n this.sharedStylesHost.addStyles(styles);\n this.rendererByCompId.set(type.id, this.defaultRenderer);\n }\n return this.defaultRenderer;\n }\n }\n }\n\n begin() {}\n end() {}\n}\n\nclass DefaultDomRenderer2 implements Renderer2 {\n data: {[key: string]: any} = Object.create(null);\n\n constructor(private eventManager: EventManager) {}\n\n destroy(): void {}\n\n destroyNode: null;\n\n createElement(name: string, namespace?: string): any {\n if (namespace) {\n // In cases where Ivy (not ViewEngine) is giving us the actual namespace, the look up by key\n // will result in undefined, so we just return the namespace here.\n return document.createElementNS(NAMESPACE_URIS[namespace] || namespace, name);\n }\n\n return document.createElement(name);\n }\n\n createComment(value: string): any { return document.createComment(value); }\n\n createText(value: string): any { return document.createTextNode(value); }\n\n appendChild(parent: any, newChild: any): void { parent.appendChild(newChild); }\n\n insertBefore(parent: any, newChild: any, refChild: any): void {\n if (parent) {\n parent.insertBefore(newChild, refChild);\n }\n }\n\n removeChild(parent: any, oldChild: any): void {\n if (parent) {\n parent.removeChild(oldChild);\n }\n }\n\n selectRootElement(selectorOrNode: string|any, preserveContent?: boolean): any {\n let el: any = typeof selectorOrNode === 'string' ? document.querySelector(selectorOrNode) :\n selectorOrNode;\n if (!el) {\n throw new Error(`The selector \"${selectorOrNode}\" did not match any elements`);\n }\n if (!preserveContent) {\n el.textContent = '';\n }\n return el;\n }\n\n parentNode(node: any): any { return node.parentNode; }\n\n nextSibling(node: any): any { return node.nextSibling; }\n\n setAttribute(el: any, name: string, value: string, namespace?: string): void {\n if (namespace) {\n name = namespace + ':' + name;\n // TODO(benlesh): Ivy may cause issues here because it's passing around\n // full URIs for namespaces, therefore this lookup will fail.\n const namespaceUri = NAMESPACE_URIS[namespace];\n if (namespaceUri) {\n el.setAttributeNS(namespaceUri, name, value);\n } else {\n el.setAttribute(name, value);\n }\n } else {\n el.setAttribute(name, value);\n }\n }\n\n removeAttribute(el: any, name: string, namespace?: string): void {\n if (namespace) {\n // TODO(benlesh): Ivy may cause issues here because it's passing around\n // full URIs for namespaces, therefore this lookup will fail.\n const namespaceUri = NAMESPACE_URIS[namespace];\n if (namespaceUri) {\n el.removeAttributeNS(namespaceUri, name);\n } else {\n // TODO(benlesh): Since ivy is passing around full URIs for namespaces\n // this could result in properties like `http://www.w3.org/2000/svg:cx=\"123\"`,\n // which is wrong.\n el.removeAttribute(`${namespace}:${name}`);\n }\n } else {\n el.removeAttribute(name);\n }\n }\n\n addClass(el: any, name: string): void { el.classList.add(name); }\n\n removeClass(el: any, name: string): void { el.classList.remove(name); }\n\n setStyle(el: any, style: string, value: any, flags: RendererStyleFlags2): void {\n if (flags & RendererStyleFlags2.DashCase) {\n el.style.setProperty(\n style, value, !!(flags & RendererStyleFlags2.Important) ? 'important' : '');\n } else {\n el.style[style] = value;\n }\n }\n\n removeStyle(el: any, style: string, flags: RendererStyleFlags2): void {\n if (flags & RendererStyleFlags2.DashCase) {\n el.style.removeProperty(style);\n } else {\n // IE requires '' instead of null\n // see https://github.com/angular/angular/issues/7916\n el.style[style] = '';\n }\n }\n\n setProperty(el: any, name: string, value: any): void {\n checkNoSyntheticProp(name, 'property');\n el[name] = value;\n }\n\n setValue(node: any, value: string): void { node.nodeValue = value; }\n\n listen(target: 'window'|'document'|'body'|any, event: string, callback: (event: any) => boolean):\n () => void {\n checkNoSyntheticProp(event, 'listener');\n if (typeof target === 'string') {\n return <() => void>this.eventManager.addGlobalEventListener(\n target, event, decoratePreventDefault(callback));\n }\n return <() => void>this.eventManager.addEventListener(\n target, event, decoratePreventDefault(callback)) as() => void;\n }\n}\n\nconst AT_CHARCODE = (() => '@'.charCodeAt(0))();\nfunction checkNoSyntheticProp(name: string, nameKind: string) {\n if (name.charCodeAt(0) === AT_CHARCODE) {\n throw new Error(\n `Found the synthetic ${nameKind} ${name}. Please include either \"BrowserAnimationsModule\" or \"NoopAnimationsModule\" in your application.`);\n }\n}\n\nclass EmulatedEncapsulationDomRenderer2 extends DefaultDomRenderer2 {\n private contentAttr: string;\n private hostAttr: string;\n\n constructor(\n eventManager: EventManager, sharedStylesHost: DomSharedStylesHost,\n private component: RendererType2, appId: string) {\n super(eventManager);\n const styles = flattenStyles(appId + '-' + component.id, component.styles, []);\n sharedStylesHost.addStyles(styles);\n\n this.contentAttr = shimContentAttribute(appId + '-' + component.id);\n this.hostAttr = shimHostAttribute(appId + '-' + component.id);\n }\n\n applyToHost(element: any) { super.setAttribute(element, this.hostAttr, ''); }\n\n createElement(parent: any, name: string): Element {\n const el = super.createElement(parent, name);\n super.setAttribute(el, this.contentAttr, '');\n return el;\n }\n}\n\nclass ShadowDomRenderer extends DefaultDomRenderer2 {\n private shadowRoot: any;\n\n constructor(\n eventManager: EventManager, private sharedStylesHost: DomSharedStylesHost,\n private hostEl: any, private component: RendererType2) {\n super(eventManager);\n if (component.encapsulation === ViewEncapsulation.ShadowDom) {\n this.shadowRoot = (hostEl as any).attachShadow({mode: 'open'});\n } else {\n this.shadowRoot = (hostEl as any).createShadowRoot();\n }\n this.sharedStylesHost.addHost(this.shadowRoot);\n const styles = flattenStyles(component.id, component.styles, []);\n for (let i = 0; i < styles.length; i++) {\n const styleEl = document.createElement('style');\n styleEl.textContent = styles[i];\n this.shadowRoot.appendChild(styleEl);\n }\n }\n\n private nodeOrShadowRoot(node: any): any { return node === this.hostEl ? this.shadowRoot : node; }\n\n destroy() { this.sharedStylesHost.removeHost(this.shadowRoot); }\n\n appendChild(parent: any, newChild: any): void {\n return super.appendChild(this.nodeOrShadowRoot(parent), newChild);\n }\n insertBefore(parent: any, newChild: any, refChild: any): void {\n return super.insertBefore(this.nodeOrShadowRoot(parent), newChild, refChild);\n }\n removeChild(parent: any, oldChild: any): void {\n return super.removeChild(this.nodeOrShadowRoot(parent), oldChild);\n }\n parentNode(node: any): any {\n return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(node)));\n }\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 */\n\nimport {DOCUMENT, isPlatformServer} from '@angular/common';\nimport {Inject, Injectable, NgZone, Optional, PLATFORM_ID} from '@angular/core';\n\nimport {EventManagerPlugin} from './event_manager';\n\n/**\n * Detect if Zone is present. If it is then use simple zone aware 'addEventListener'\n * since Angular can do much more\n * efficient bookkeeping than Zone can, because we have additional information. This speeds up\n * addEventListener by 3x.\n */\nconst __symbol__ =\n (() => (typeof Zone !== 'undefined') && (Zone as any)['__symbol__'] ||\n function(v: string): string { return '__zone_symbol__' + v; })();\nconst ADD_EVENT_LISTENER: 'addEventListener' = __symbol__('addEventListener');\nconst REMOVE_EVENT_LISTENER: 'removeEventListener' = __symbol__('removeEventListener');\n\nconst symbolNames: {[key: string]: string} = {};\n\nconst FALSE = 'FALSE';\nconst ANGULAR = 'ANGULAR';\nconst NATIVE_ADD_LISTENER = 'addEventListener';\nconst NATIVE_REMOVE_LISTENER = 'removeEventListener';\n\n// use the same symbol string which is used in zone.js\nconst stopSymbol = '__zone_symbol__propagationStopped';\nconst stopMethodSymbol = '__zone_symbol__stopImmediatePropagation';\n\n\nconst blackListedMap = (() => {\n const blackListedEvents: string[] =\n (typeof Zone !== 'undefined') && (Zone as any)[__symbol__('BLACK_LISTED_EVENTS')];\n if (blackListedEvents) {\n const res: {[eventName: string]: string} = {};\n blackListedEvents.forEach(eventName => { res[eventName] = eventName; });\n return res;\n }\n return undefined;\n})();\n\n\nconst isBlackListedEvent = function(eventName: string) {\n if (!blackListedMap) {\n return false;\n }\n return blackListedMap.hasOwnProperty(eventName);\n};\n\ninterface TaskData {\n zone: any;\n handler: Function;\n}\n\n// a global listener to handle all dom event,\n// so we do not need to create a closure every time\nconst globalListener = function(event: Event) {\n const symbolName = symbolNames[event.type];\n if (!symbolName) {\n return;\n }\n const taskDatas: TaskData[] = this[symbolName];\n if (!taskDatas) {\n return;\n }\n const args: any = [event];\n if (taskDatas.length === 1) {\n // if taskDatas only have one element, just invoke it\n const taskData = taskDatas[0];\n if (taskData.zone !== Zone.current) {\n // only use Zone.run when Zone.current not equals to stored zone\n return taskData.zone.run(taskData.handler, this, args);\n } else {\n return taskData.handler.apply(this, args);\n }\n } else {\n // copy tasks as a snapshot to avoid event handlers remove\n // itself or others\n const copiedTasks = taskDatas.slice();\n for (let i = 0; i < copiedTasks.length; i++) {\n // if other listener call event.stopImmediatePropagation\n // just break\n if ((event as any)[stopSymbol] === true) {\n break;\n }\n const taskData = copiedTasks[i];\n if (taskData.zone !== Zone.current) {\n // only use Zone.run when Zone.current not equals to stored zone\n taskData.zone.run(taskData.handler, this, args);\n } else {\n taskData.handler.apply(this, args);\n }\n }\n }\n};\n\n@Injectable()\nexport class DomEventsPlugin extends EventManagerPlugin {\n constructor(\n @Inject(DOCUMENT) doc: any, private ngZone: NgZone,\n @Optional() @Inject(PLATFORM_ID) platformId: {}|null) {\n super(doc);\n\n if (!platformId || !isPlatformServer(platformId)) {\n this.patchEvent();\n }\n }\n\n private patchEvent() {\n if (typeof Event === 'undefined' || !Event || !Event.prototype) {\n return;\n }\n if ((Event.prototype as any)[stopMethodSymbol]) {\n // already patched by zone.js\n return;\n }\n const delegate = (Event.prototype as any)[stopMethodSymbol] =\n Event.prototype.stopImmediatePropagation;\n Event.prototype.stopImmediatePropagation = function() {\n if (this) {\n this[stopSymbol] = true;\n }\n\n // should call native delegate in case\n // in some environment part of the application\n // will not use the patched Event\n delegate && delegate.apply(this, arguments);\n };\n }\n\n // This plugin should come last in the list of plugins, because it accepts all\n // events.\n supports(eventName: string): boolean { return true; }\n\n addEventListener(element: HTMLElement, eventName: string, handler: Function): Function {\n /**\n * This code is about to add a listener to the DOM. If Zone.js is present, than\n * `addEventListener` has been patched. The patched code adds overhead in both\n * memory and speed (3x slower) than native. For this reason if we detect that\n * Zone.js is present we use a simple version of zone aware addEventListener instead.\n * The result is faster registration and the zone will be restored.\n * But ZoneSpec.onScheduleTask, ZoneSpec.onInvokeTask, ZoneSpec.onCancelTask\n * will not be invoked\n * We also do manual zone restoration in element.ts renderEventHandlerClosure method.\n *\n * NOTE: it is possible that the element is from different iframe, and so we\n * have to check before we execute the method.\n */\n const self = this;\n const zoneJsLoaded = element[ADD_EVENT_LISTENER];\n let callback: EventListener = handler as EventListener;\n // if zonejs is loaded and current zone is not ngZone\n // we keep Zone.current on target for later restoration.\n if (zoneJsLoaded && (!NgZone.isInAngularZone() || isBlackListedEvent(eventName))) {\n let symbolName = symbolNames[eventName];\n if (!symbolName) {\n symbolName = symbolNames[eventName] = __symbol__(ANGULAR + eventName + FALSE);\n }\n let taskDatas: TaskData[] = (element as any)[symbolName];\n const globalListenerRegistered = taskDatas && taskDatas.length > 0;\n if (!taskDatas) {\n taskDatas = (element as any)[symbolName] = [];\n }\n\n const zone = isBlackListedEvent(eventName) ? Zone.root : Zone.current;\n if (taskDatas.length === 0) {\n taskDatas.push({zone: zone, handler: callback});\n } else {\n let callbackRegistered = false;\n for (let i = 0; i < taskDatas.length; i++) {\n if (taskDatas[i].handler === callback) {\n callbackRegistered = true;\n break;\n }\n }\n if (!callbackRegistered) {\n taskDatas.push({zone: zone, handler: callback});\n }\n }\n\n if (!globalListenerRegistered) {\n element[ADD_EVENT_LISTENER](eventName, globalListener, false);\n }\n } else {\n element[NATIVE_ADD_LISTENER](eventName, callback, false);\n }\n return () => this.removeEventListener(element, eventName, callback);\n }\n\n removeEventListener(target: any, eventName: string, callback: Function): void {\n let underlyingRemove = target[REMOVE_EVENT_LISTENER];\n // zone.js not loaded, use native removeEventListener\n if (!underlyingRemove) {\n return target[NATIVE_REMOVE_LISTENER].apply(target, [eventName, callback, false]);\n }\n let symbolName = symbolNames[eventName];\n let taskDatas: TaskData[] = symbolName && target[symbolName];\n if (!taskDatas) {\n // addEventListener not using patched version\n // just call native removeEventListener\n return target[NATIVE_REMOVE_LISTENER].apply(target, [eventName, callback, false]);\n }\n // fix issue 20532, should be able to remove\n // listener which was added inside of ngZone\n let found = false;\n for (let i = 0; i < taskDatas.length; i++) {\n // remove listener from taskDatas if the callback equals\n if (taskDatas[i].handler === callback) {\n found = true;\n taskDatas.splice(i, 1);\n break;\n }\n }\n if (found) {\n if (taskDatas.length === 0) {\n // all listeners are removed, we can remove the globalListener from target\n underlyingRemove.apply(target, [eventName, globalListener, false]);\n }\n } else {\n // not found in taskDatas, the callback may be added inside of ngZone\n // use native remove listener to remove the callback\n target[NATIVE_REMOVE_LISTENER].apply(target, [eventName, callback, false]);\n }\n }\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 */\n\nimport {DOCUMENT} from '@angular/common';\nimport {Inject, Injectable, InjectionToken, Optional, ɵConsole as Console} from '@angular/core';\n\nimport {EventManagerPlugin} from './event_manager';\n\n/**\n * Supported HammerJS recognizer event names.\n */\nconst EVENT_NAMES = {\n // pan\n 'pan': true,\n 'panstart': true,\n 'panmove': true,\n 'panend': true,\n 'pancancel': true,\n 'panleft': true,\n 'panright': true,\n 'panup': true,\n 'pandown': true,\n // pinch\n 'pinch': true,\n 'pinchstart': true,\n 'pinchmove': true,\n 'pinchend': true,\n 'pinchcancel': true,\n 'pinchin': true,\n 'pinchout': true,\n // press\n 'press': true,\n 'pressup': true,\n // rotate\n 'rotate': true,\n 'rotatestart': true,\n 'rotatemove': true,\n 'rotateend': true,\n 'rotatecancel': true,\n // swipe\n 'swipe': true,\n 'swipeleft': true,\n 'swiperight': true,\n 'swipeup': true,\n 'swipedown': true,\n // tap\n 'tap': true,\n};\n\n/**\n * DI token for providing [HammerJS](http://hammerjs.github.io/) support to Angular.\n * @see `HammerGestureConfig`\n *\n * @publicApi\n */\nexport const HAMMER_GESTURE_CONFIG = new InjectionToken<HammerGestureConfig>('HammerGestureConfig');\n\n\n/**\n * Function that loads HammerJS, returning a promise that is resolved once HammerJs is loaded.\n *\n * @publicApi\n */\nexport type HammerLoader = () => Promise<void>;\n\n/**\n * Injection token used to provide a {@link HammerLoader} to Angular.\n *\n * @publicApi\n */\nexport const HAMMER_LOADER = new InjectionToken<HammerLoader>('HammerLoader');\n\nexport interface HammerInstance {\n on(eventName: string, callback?: Function): void;\n off(eventName: string, callback?: Function): void;\n destroy?(): void;\n}\n\n/**\n * An injectable [HammerJS Manager](http://hammerjs.github.io/api/#hammer.manager)\n * for gesture recognition. Configures specific event recognition.\n * @publicApi\n */\n@Injectable()\nexport class HammerGestureConfig {\n /**\n * A set of supported event names for gestures to be used in Angular.\n * Angular supports all built-in recognizers, as listed in\n * [HammerJS documentation](http://hammerjs.github.io/).\n */\n events: string[] = [];\n\n /**\n * Maps gesture event names to a set of configuration options\n * that specify overrides to the default values for specific properties.\n *\n * The key is a supported event name to be configured,\n * and the options object contains a set of properties, with override values\n * to be applied to the named recognizer event.\n * For example, to disable recognition of the rotate event, specify\n * `{\"rotate\": {\"enable\": false}}`.\n *\n * Properties that are not present take the HammerJS default values.\n * For information about which properties are supported for which events,\n * and their allowed and default values, see\n * [HammerJS documentation](http://hammerjs.github.io/).\n *\n */\n overrides: {[key: string]: Object} = {};\n\n /**\n * Properties whose default values can be overridden for a given event.\n * Different sets of properties apply to different events.\n * For information about which properties are supported for which events,\n * and their allowed and default values, see\n * [HammerJS documentation](http://hammerjs.github.io/).\n */\n options?: {\n cssProps?: any; domEvents?: boolean; enable?: boolean | ((manager: any) => boolean);\n preset?: any[];\n touchAction?: string;\n recognizers?: any[];\n inputClass?: any;\n inputTarget?: EventTarget;\n };\n\n /**\n * Creates a [HammerJS Manager](http://hammerjs.github.io/api/#hammer.manager)\n * and attaches it to a given HTML element.\n * @param element The element that will recognize gestures.\n * @returns A HammerJS event-manager object.\n */\n buildHammer(element: HTMLElement): HammerInstance {\n const mc = new Hammer !(element, this.options);\n\n mc.get('pinch').set({enable: true});\n mc.get('rotate').set({enable: true});\n\n for (const eventName in this.overrides) {\n mc.get(eventName).set(this.overrides[eventName]);\n }\n\n return mc;\n }\n}\n\n@Injectable()\nexport class HammerGesturesPlugin extends EventManagerPlugin {\n constructor(\n @Inject(DOCUMENT) doc: any,\n @Inject(HAMMER_GESTURE_CONFIG) private _config: HammerGestureConfig, private console: Console,\n @Optional() @Inject(HAMMER_LOADER) private loader?: HammerLoader|null) {\n super(doc);\n }\n\n supports(eventName: string): boolean {\n if (!EVENT_NAMES.hasOwnProperty(eventName.toLowerCase()) && !this.isCustomEvent(eventName)) {\n return false;\n }\n\n if (!(window as any).Hammer && !this.loader) {\n this.console.warn(\n `The \"${eventName}\" event cannot be bound because Hammer.JS is not ` +\n `loaded and no custom loader has been specified.`);\n return false;\n }\n\n return true;\n }\n\n addEventListener(element: HTMLElement, eventName: string, handler: Function): Function {\n const zone = this.manager.getZone();\n eventName = eventName.toLowerCase();\n\n // If Hammer is not present but a loader is specified, we defer adding the event listener\n // until Hammer is loaded.\n if (!(window as any).Hammer && this.loader) {\n // This `addEventListener` method returns a function to remove the added listener.\n // Until Hammer is loaded, the returned function needs to *cancel* the registration rather\n // than remove anything.\n let cancelRegistration = false;\n let deregister: Function = () => { cancelRegistration = true; };\n\n this.loader()\n .then(() => {\n // If Hammer isn't actually loaded when the custom loader resolves, give up.\n if (!(window as any).Hammer) {\n this.console.warn(\n `The custom HAMMER_LOADER completed, but Hammer.JS is not present.`);\n deregister = () => {};\n return;\n }\n\n if (!cancelRegistration) {\n // Now that Hammer is loaded and the listener is being loaded for real,\n // the deregistration function changes from canceling registration to removal.\n deregister = this.addEventListener(element, eventName, handler);\n }\n })\n .catch(() => {\n this.console.warn(\n `The \"${eventName}\" event cannot be bound because the custom ` +\n `Hammer.JS loader failed.`);\n deregister = () => {};\n });\n\n // Return a function that *executes* `deregister` (and not `deregister` itself) so that we\n // can change the behavior of `deregister` once the listener is added. Using a closure in\n // this way allows us to avoid any additional data structures to track listener removal.\n return () => { deregister(); };\n }\n\n return zone.runOutsideAngular(() => {\n // Creating the manager bind events, must be done outside of angular\n const mc = this._config.buildHammer(element);\n const callback = function(eventObj: HammerInput) {\n zone.runGuarded(function() { handler(eventObj); });\n };\n mc.on(eventName, callback);\n return () => {\n mc.off(eventName, callback);\n // destroy mc to prevent memory leak\n if (typeof mc.destroy === 'function') {\n mc.destroy();\n }\n };\n });\n }\n\n isCustomEvent(eventName: string): boolean { return this._config.events.indexOf(eventName) > -1; }\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 */\n\nimport {DOCUMENT} from '@angular/common';\nimport {Inject, Injectable, NgZone} from '@angular/core';\n\nimport {getDOM} from '../dom_adapter';\n\nimport {EventManagerPlugin} from './event_manager';\n\n/**\n * Defines supported modifiers for key events.\n */\nconst MODIFIER_KEYS = ['alt', 'control', 'meta', 'shift'];\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 * @publicApi\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) { super(doc); }\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 supports(eventName: string): boolean { return KeyEventsPlugin.parseEventName(eventName) != null; }\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 addEventListener(element: HTMLElement, eventName: string, handler: Function): Function {\n const parsedEvent = KeyEventsPlugin.parseEventName(eventName) !;\n\n const outsideHandler =\n KeyEventsPlugin.eventCallback(parsedEvent['fullKey'], handler, this.manager.getZone());\n\n return this.manager.getZone().runOutsideAngular(() => {\n return getDOM().onAndCancel(element, parsedEvent['domEventName'], outsideHandler);\n });\n }\n\n static parseEventName(eventName: string): {[key: string]: 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 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 const result: {[k: string]: string} = {};\n result['domEventName'] = domEventName;\n result['fullKey'] = fullKey;\n return result;\n }\n\n static getEventFullKey(event: KeyboardEvent): string {\n let fullKey = '';\n let key = getDOM().getEventKey(event);\n key = key.toLowerCase();\n if (key === ' ') {\n key = 'space'; // for readability\n } else if (key === '.') {\n key = 'dot'; // because '.' is used as a separator in event names\n }\n MODIFIER_KEYS.forEach(modifierName => {\n if (modifierName != key) {\n const modifierGetter = MODIFIER_KEY_GETTERS[modifierName];\n if (modifierGetter(event)) {\n fullKey += modifierName + '.';\n }\n }\n });\n fullKey += key;\n return fullKey;\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: any, handler: Function, zone: NgZone): Function {\n return (event: any /** TODO #9100 */) => {\n if (KeyEventsPlugin.getEventFullKey(event) === fullKey) {\n zone.runGuarded(() => handler(event));\n }\n };\n }\n\n /** @internal */\n static _normalizeKey(keyName: string): string {\n // TODO: switch to a Map if the mapping grows too much\n switch (keyName) {\n case 'esc':\n return 'escape';\n default:\n return keyName;\n }\n }\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 */\n\nimport {DOCUMENT} from '@angular/common';\nimport {Inject, Injectable, Sanitizer, SecurityContext, ɵ_sanitizeHtml as _sanitizeHtml, ɵ_sanitizeStyle as _sanitizeStyle, ɵ_sanitizeUrl as _sanitizeUrl} from '@angular/core';\n\n\nexport {SecurityContext};\n\n\n\n/**\n * Marker interface for a value that's safe to use in a particular context.\n *\n * @publicApi\n */\nexport interface SafeValue {}\n\n/**\n * Marker interface for a value that's safe to use as HTML.\n *\n * @publicApi\n */\nexport interface SafeHtml extends SafeValue {}\n\n/**\n * Marker interface for a value that's safe to use as style (CSS).\n *\n * @publicApi\n */\nexport interface SafeStyle extends SafeValue {}\n\n/**\n * Marker interface for a value that's safe to use as JavaScript.\n *\n * @publicApi\n */\nexport interface SafeScript extends SafeValue {}\n\n/**\n * Marker interface for a value that's safe to use as a URL linking to a document.\n *\n * @publicApi\n */\nexport interface SafeUrl extends SafeValue {}\n\n/**\n * Marker interface for a value that's safe to use as a URL to load executable code from.\n *\n * @publicApi\n */\nexport interface SafeResourceUrl extends SafeValue {}\n\n/**\n * DomSanitizer helps preventing Cross Site Scripting Security bugs (XSS) by sanitizing\n * values to be safe to use in the different DOM contexts.\n *\n * For example, when binding a URL in an `<a [href]=\"someValue\">` hyperlink, `someValue` will be\n * sanitized so that an attacker cannot inject e.g. a `javascript:` URL that would execute code on\n * the website.\n *\n * In specific situations, it might be necessary to disable sanitization, for example if the\n * application genuinely needs to produce a `javascript:` style link with a dynamic value in it.\n * Users can bypass security by constructing a value with one of the `bypassSecurityTrust...`\n * methods, and then binding to that value from the template.\n *\n * These situations should be very rare, and extraordinary care must be taken to avoid creating a\n * Cross Site Scripting (XSS) security bug!\n *\n * When using `bypassSecurityTrust...`, make sure to call the method as early as possible and as\n * close as possible to the source of the value, to make it easy to verify no security bug is\n * created by its use.\n *\n * It is not required (and not recommended) to bypass security if the value is safe, e.g. a URL that\n * does not start with a suspicious protocol, or an HTML snippet that does not contain dangerous\n * code. The sanitizer leaves safe values intact.\n *\n * @security Calling any of the `bypassSecurityTrust...` APIs disables Angular's built-in\n * sanitization for the value passed in. Carefully check and audit all values and code paths going\n * into this call. Make sure any user data is appropriately escaped for this security context.\n * For more detail, see the [Security Guide](http://g.co/ng/security).\n *\n * @publicApi\n */\nexport abstract class DomSanitizer implements Sanitizer {\n /**\n * Sanitizes a value for use in the given SecurityContext.\n *\n * If value is trusted for the context, this method will unwrap the contained safe value and use\n * it directly. Otherwise, value will be sanitized to be safe in the given context, for example\n * by replacing URLs that have an unsafe protocol part (such as `javascript:`). The implementation\n * is responsible to make sure that the value can definitely be safely used in the given context.\n */\n abstract sanitize(context: SecurityContext, value: SafeValue|string|null): string|null;\n\n /**\n * Bypass security and trust the given value to be safe HTML. Only use this when the bound HTML\n * is unsafe (e.g. contains `<script>` tags) and the code should be executed. The sanitizer will\n * leave safe HTML intact, so in most situations this method should not be used.\n *\n * **WARNING:** calling this method with untrusted user data exposes your application to XSS\n * security risks!\n */\n abstract bypassSecurityTrustHtml(value: string): SafeHtml;\n\n /**\n * Bypass security and trust the given value to be safe style value (CSS).\n *\n * **WARNING:** calling this method with untrusted user data exposes your application to XSS\n * security risks!\n */\n abstract bypassSecurityTrustStyle(value: string): SafeStyle;\n\n /**\n * Bypass security and trust the given value to be safe JavaScript.\n *\n * **WARNING:** calling this method with untrusted user data exposes your application to XSS\n * security risks!\n */\n abstract bypassSecurityTrustScript(value: string): SafeScript;\n\n /**\n * Bypass security and trust the given value to be a safe style URL, i.e. a value that can be used\n * in hyperlinks or `<img src>`.\n *\n * **WARNING:** calling this method with untrusted user data exposes your application to XSS\n * security risks!\n */\n abstract bypassSecurityTrustUrl(value: string): SafeUrl;\n\n /**\n * Bypass security and trust the given value to be a safe resource URL, i.e. a location that may\n * be used to load executable code from, like `<script src>`, or `<iframe src>`.\n *\n * **WARNING:** calling this method with untrusted user data exposes your application to XSS\n * security risks!\n */\n abstract bypassSecurityTrustResourceUrl(value: string): SafeResourceUrl;\n}\n\n\n@Injectable()\nexport class DomSanitizerImpl extends DomSanitizer {\n constructor(@Inject(DOCUMENT) private _doc: any) { super(); }\n\n sanitize(ctx: SecurityContext, value: SafeValue|string|null): string|null {\n if (value == null) return null;\n switch (ctx) {\n case SecurityContext.NONE:\n return value as string;\n case SecurityContext.HTML:\n if (value instanceof SafeHtmlImpl) return value.changingThisBreaksApplicationSecurity;\n this.checkNotSafeValue(value, 'HTML');\n return _sanitizeHtml(this._doc, String(value));\n case SecurityContext.STYLE:\n if (value instanceof SafeStyleImpl) return value.changingThisBreaksApplicationSecurity;\n this.checkNotSafeValue(value, 'Style');\n return _sanitizeStyle(value as string);\n case SecurityContext.SCRIPT:\n if (value instanceof SafeScriptImpl) return value.changingThisBreaksApplicationSecurity;\n this.checkNotSafeValue(value, 'Script');\n throw new Error('unsafe value used in a script context');\n case SecurityContext.URL:\n if (value instanceof SafeResourceUrlImpl || value instanceof SafeUrlImpl) {\n // Allow resource URLs in URL contexts, they are strictly more trusted.\n return value.changingThisBreaksApplicationSecurity;\n }\n this.checkNotSafeValue(value, 'URL');\n return _sanitizeUrl(String(value));\n case SecurityContext.RESOURCE_URL:\n if (value instanceof SafeResourceUrlImpl) {\n return value.changingThisBreaksApplicationSecurity;\n }\n this.checkNotSafeValue(value, 'ResourceURL');\n throw new Error(\n 'unsafe value used in a resource URL context (see http://g.co/ng/security#xss)');\n default:\n throw new Error(`Unexpected SecurityContext ${ctx} (see http://g.co/ng/security#xss)`);\n }\n }\n\n private checkNotSafeValue(value: any, expectedType: string) {\n if (value instanceof SafeValueImpl) {\n throw new Error(\n `Required a safe ${expectedType}, got a ${value.getTypeName()} ` +\n `(see http://g.co/ng/security#xss)`);\n }\n }\n\n bypassSecurityTrustHtml(value: string): SafeHtml { return new SafeHtmlImpl(value); }\n bypassSecurityTrustStyle(value: string): SafeStyle { return new SafeStyleImpl(value); }\n bypassSecurityTrustScript(value: string): SafeScript { return new SafeScriptImpl(value); }\n bypassSecurityTrustUrl(value: string): SafeUrl { return new SafeUrlImpl(value); }\n bypassSecurityTrustResourceUrl(value: string): SafeResourceUrl {\n return new SafeResourceUrlImpl(value);\n }\n}\n\nabstract class SafeValueImpl implements SafeValue {\n constructor(public changingThisBreaksApplicationSecurity: string) {\n // empty\n }\n\n abstract getTypeName(): string;\n\n toString() {\n return `SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity}` +\n ` (see http://g.co/ng/security#xss)`;\n }\n}\n\nclass SafeHtmlImpl extends SafeValueImpl implements SafeHtml {\n getTypeName() { return 'HTML'; }\n}\nclass SafeStyleImpl extends SafeValueImpl implements SafeStyle {\n getTypeName() { return 'Style'; }\n}\nclass SafeScriptImpl extends SafeValueImpl implements SafeScript {\n getTypeName() { return 'Script'; }\n}\nclass SafeUrlImpl extends SafeValueImpl implements SafeUrl {\n getTypeName() { return 'URL'; }\n}\nclass SafeResourceUrlImpl extends SafeValueImpl implements SafeResourceUrl {\n getTypeName() { return 'ResourceURL'; }\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 */\n\nimport {CommonModule, DOCUMENT, PlatformLocation, ɵPLATFORM_BROWSER_ID as PLATFORM_BROWSER_ID} from '@angular/common';\nimport {APP_ID, ApplicationModule, ErrorHandler, Inject, ModuleWithProviders, NgModule, NgZone, Optional, PLATFORM_ID, PLATFORM_INITIALIZER, PlatformRef, RendererFactory2, Sanitizer, SkipSelf, StaticProvider, Testability, createPlatformFactory, platformCore, ɵAPP_ROOT as APP_ROOT, ɵConsole as Console} from '@angular/core';\n\nimport {BrowserDomAdapter} from './browser/browser_adapter';\nimport {BrowserPlatformLocation} from './browser/location/browser_platform_location';\nimport {SERVER_TRANSITION_PROVIDERS, TRANSITION_ID} from './browser/server-transition';\nimport {BrowserGetTestability} from './browser/testability';\nimport {ELEMENT_PROBE_PROVIDERS} from './dom/debug/ng_probe';\nimport {DomRendererFactory2} from './dom/dom_renderer';\nimport {DomEventsPlugin} from './dom/events/dom_events';\nimport {EVENT_MANAGER_PLUGINS, EventManager} from './dom/events/event_manager';\nimport {HAMMER_GESTURE_CONFIG, HAMMER_LOADER, HammerGestureConfig, HammerGesturesPlugin} from './dom/events/hammer_gestures';\nimport {KeyEventsPlugin} from './dom/events/key_events';\nimport {DomSharedStylesHost, SharedStylesHost} from './dom/shared_styles_host';\nimport {DomSanitizer, DomSanitizerImpl} from './security/dom_sanitization_service';\n\nexport const INTERNAL_BROWSER_PLATFORM_PROVIDERS: StaticProvider[] = [\n {provide: PLATFORM_ID, useValue: PLATFORM_BROWSER_ID},\n {provide: PLATFORM_INITIALIZER, useValue: initDomAdapter, multi: true},\n {provide: PlatformLocation, useClass: BrowserPlatformLocation, deps: [DOCUMENT]},\n {provide: DOCUMENT, useFactory: _document, deps: []},\n];\n\n/**\n * @security Replacing built-in sanitization providers exposes the application to XSS risks.\n * Attacker-controlled data introduced by an unsanitized provider could expose your\n * application to XSS risks. For more detail, see the [Security Guide](http://g.co/ng/security).\n * @publicApi\n */\nexport const BROWSER_SANITIZATION_PROVIDERS: StaticProvider[] = [\n {provide: Sanitizer, useExisting: DomSanitizer},\n {provide: DomSanitizer, useClass: DomSanitizerImpl, deps: [DOCUMENT]},\n];\n\n/**\n * @publicApi\n */\nexport const platformBrowser: (extraProviders?: StaticProvider[]) => PlatformRef =\n createPlatformFactory(platformCore, 'browser', INTERNAL_BROWSER_PLATFORM_PROVIDERS);\n\nexport function initDomAdapter() {\n BrowserDomAdapter.makeCurrent();\n BrowserGetTestability.init();\n}\n\nexport function errorHandler(): ErrorHandler {\n return new ErrorHandler();\n}\n\nexport function _document(): any {\n return document;\n}\n\nexport const BROWSER_MODULE_PROVIDERS: StaticProvider[] = [\n BROWSER_SANITIZATION_PROVIDERS,\n {provide: APP_ROOT, useValue: true},\n {provide: ErrorHandler, useFactory: errorHandler, deps: []},\n {\n provide: EVENT_MANAGER_PLUGINS,\n useClass: DomEventsPlugin,\n multi: true,\n deps: [DOCUMENT, NgZone, PLATFORM_ID]\n },\n {provide: EVENT_MANAGER_PLUGINS, useClass: KeyEventsPlugin, multi: true, deps: [DOCUMENT]},\n {\n provide: EVENT_MANAGER_PLUGINS,\n useClass: HammerGesturesPlugin,\n multi: true,\n deps: [DOCUMENT, HAMMER_GESTURE_CONFIG, Console, [new Optional(), HAMMER_LOADER]]\n },\n {provide: HAMMER_GESTURE_CONFIG, useClass: HammerGestureConfig, deps: []},\n {\n provide: DomRendererFactory2,\n useClass: DomRendererFactory2,\n deps: [EventManager, DomSharedStylesHost, APP_ID]\n },\n {provide: RendererFactory2, useExisting: DomRendererFactory2},\n {provide: SharedStylesHost, useExisting: DomSharedStylesHost},\n {provide: DomSharedStylesHost, useClass: DomSharedStylesHost, deps: [DOCUMENT]},\n {provide: Testability, useClass: Testability, deps: [NgZone]},\n {provide: EventManager, useClass: EventManager, deps: [EVENT_MANAGER_PLUGINS, NgZone]},\n ELEMENT_PROBE_PROVIDERS,\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({providers: BROWSER_MODULE_PROVIDERS, exports: [CommonModule, ApplicationModule]})\nexport class BrowserModule {\n constructor(@Optional() @SkipSelf() @Inject(BrowserModule) parentModule: BrowserModule|null) {\n if (parentModule) {\n throw new Error(\n `BrowserModule has already been loaded. If you need access to common directives such as NgIf and NgFor from a lazy loaded module, import CommonModule instead.`);\n }\n }\n\n /**\n * Configures a browser-based app to transition from a server-rendered app, if\n * one is present on the page.\n *\n * @param params An object containing an identifier for the app to transition.\n * The ID must match between the client and server versions of the app.\n * @returns The reconfigured `BrowserModule` to import into the app's root `AppModule`.\n */\n static withServerTransition(params: {appId: string}): ModuleWithProviders<BrowserModule> {\n return {\n ngModule: BrowserModule,\n providers: [\n {provide: APP_ID, useValue: params.appId},\n {provide: TRANSITION_ID, useExisting: APP_ID},\n SERVER_TRANSITION_PROVIDERS,\n ],\n };\n }\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 */\n\nimport {DOCUMENT} from '@angular/common';\nimport {Inject, Injectable, ɵɵinject} from '@angular/core';\n\nimport {DomAdapter, getDOM} from '../dom/dom_adapter';\n\n\n\n/**\n * Represents a meta element.\n *\n * @publicApi\n */\nexport type MetaDefinition = {\n charset?: string; content?: string; httpEquiv?: string; id?: string; itemprop?: string;\n name?: string;\n property?: string;\n scheme?: string;\n url?: string;\n} &\n{\n // TODO(IgorMinar): this type looks wrong\n [prop: string]: string;\n};\n\n/**\n * Factory to create Meta service.\n */\nexport function createMeta() {\n return new Meta(ɵɵinject(DOCUMENT));\n}\n\n/**\n * A service that can be used to get and add meta tags.\n *\n * @publicApi\n */\n@Injectable({providedIn: 'root', useFactory: createMeta, deps: []})\nexport class Meta {\n private _dom: DomAdapter;\n constructor(@Inject(DOCUMENT) private _doc: any) { this._dom = getDOM(); }\n\n addTag(tag: MetaDefinition, forceCreation: boolean = false): HTMLMetaElement|null {\n if (!tag) return null;\n return this._getOrCreateElement(tag, forceCreation);\n }\n\n addTags(tags: MetaDefinition[], forceCreation: boolean = false): HTMLMetaElement[] {\n if (!tags) return [];\n return tags.reduce((result: HTMLMetaElement[], tag: MetaDefinition) => {\n if (tag) {\n result.push(this._getOrCreateElement(tag, forceCreation));\n }\n return result;\n }, []);\n }\n\n getTag(attrSelector: string): HTMLMetaElement|null {\n if (!attrSelector) return null;\n return this._dom.querySelector(this._doc, `meta[${attrSelector}]`) || null;\n }\n\n getTags(attrSelector: string): HTMLMetaElement[] {\n if (!attrSelector) return [];\n const list /*NodeList*/ = this._dom.querySelectorAll(this._doc, `meta[${attrSelector}]`);\n return list ? [].slice.call(list) : [];\n }\n\n updateTag(tag: MetaDefinition, selector?: string): HTMLMetaElement|null {\n if (!tag) return null;\n selector = selector || this._parseSelector(tag);\n const meta: HTMLMetaElement = this.getTag(selector) !;\n if (meta) {\n return this._setMetaElementAttributes(tag, meta);\n }\n return this._getOrCreateElement(tag, true);\n }\n\n removeTag(attrSelector: string): void { this.removeTagElement(this.getTag(attrSelector) !); }\n\n removeTagElement(meta: HTMLMetaElement): void {\n if (meta) {\n this._dom.remove(meta);\n }\n }\n\n private _getOrCreateElement(meta: MetaDefinition, forceCreation: boolean = false):\n HTMLMetaElement {\n if (!forceCreation) {\n const selector: string = this._parseSelector(meta);\n const elem: HTMLMetaElement = this.getTag(selector) !;\n // It's allowed to have multiple elements with the same name so it's not enough to\n // just check that element with the same name already present on the page. We also need to\n // check if element has tag attributes\n if (elem && this._containsAttributes(meta, elem)) return elem;\n }\n const element: HTMLMetaElement = this._dom.createElement('meta') as HTMLMetaElement;\n this._setMetaElementAttributes(meta, element);\n const head = this._dom.getElementsByTagName(this._doc, 'head')[0];\n this._dom.appendChild(head, element);\n return element;\n }\n\n private _setMetaElementAttributes(tag: MetaDefinition, el: HTMLMetaElement): HTMLMetaElement {\n Object.keys(tag).forEach((prop: string) => this._dom.setAttribute(el, prop, tag[prop]));\n return el;\n }\n\n private _parseSelector(tag: MetaDefinition): string {\n const attr: string = tag.name ? 'name' : 'property';\n return `${attr}=\"${tag[attr]}\"`;\n }\n\n private _containsAttributes(tag: MetaDefinition, elem: HTMLMetaElement): boolean {\n return Object.keys(tag).every((key: string) => this._dom.getAttribute(elem, key) === tag[key]);\n }\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 */\n\nimport {DOCUMENT} from '@angular/common';\nimport {Inject, Injectable, ɵɵinject} from '@angular/core';\n\nimport {getDOM} from '../dom/dom_adapter';\n\n/**\n * Factory to create Title service.\n */\nexport function createTitle() {\n return new Title(ɵɵinject(DOCUMENT));\n}\n\n/**\n * A service that can be used to get and set the title of a current HTML document.\n *\n * Since an Angular application can't be bootstrapped on the entire HTML document (`<html>` tag)\n * it is not possible to bind to the `text` property of the `HTMLTitleElement` elements\n * (representing the `<title>` tag). Instead, this service can be used to set and get the current\n * title value.\n *\n * @publicApi\n */\n@Injectable({providedIn: 'root', useFactory: createTitle, deps: []})\nexport class Title {\n constructor(@Inject(DOCUMENT) private _doc: any) {}\n /**\n * Get the title of the current HTML document.\n */\n getTitle(): string { return getDOM().getTitle(this._doc); }\n\n /**\n * Set the title of the current HTML document.\n * @param newTitle\n */\n setTitle(newTitle: string) { getDOM().setTitle(this._doc, newTitle); }\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 */\n\nconst win = typeof window !== 'undefined' && window || <any>{};\nexport {win as window};\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 */\n\nimport {ApplicationRef, ComponentRef} from '@angular/core';\nimport {getDOM} from '../../dom/dom_adapter';\nimport {window} from './browser';\n\nexport class ChangeDetectionPerfRecord {\n constructor(public msPerTick: number, public numTicks: number) {}\n}\n\n/**\n * Entry point for all Angular profiling-related debug tools. This object\n * corresponds to the `ng.profiler` in the dev console.\n */\nexport class AngularProfiler {\n appRef: ApplicationRef;\n\n constructor(ref: ComponentRef<any>) { this.appRef = ref.injector.get(ApplicationRef); }\n\n // tslint:disable:no-console\n /**\n * Exercises change detection in a loop and then prints the average amount of\n * time in milliseconds how long a single round of change detection takes for\n * the current state of the UI. It runs a minimum of 5 rounds for a minimum\n * of 500 milliseconds.\n *\n * Optionally, a user may pass a `config` parameter containing a map of\n * options. Supported options are:\n *\n * `record` (boolean) - causes the profiler to record a CPU profile while\n * it exercises the change detector. Example:\n *\n * ```\n * ng.profiler.timeChangeDetection({record: true})\n * ```\n */\n timeChangeDetection(config: any): ChangeDetectionPerfRecord {\n const record = config && config['record'];\n const profileName = 'Change Detection';\n // Profiler is not available in Android browsers, nor in IE 9 without dev tools opened\n const isProfilerAvailable = window.console.profile != null;\n if (record && isProfilerAvailable) {\n window.console.profile(profileName);\n }\n const start = getDOM().performanceNow();\n let numTicks = 0;\n while (numTicks < 5 || (getDOM().performanceNow() - start) < 500) {\n this.appRef.tick();\n numTicks++;\n }\n const end = getDOM().performanceNow();\n if (record && isProfilerAvailable) {\n window.console.profileEnd(profileName);\n }\n const msPerTick = (end - start) / numTicks;\n window.console.log(`ran ${numTicks} change detection cycles`);\n window.console.log(`${msPerTick.toFixed(2)} ms per check`);\n\n return new ChangeDetectionPerfRecord(msPerTick, numTicks);\n }\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 */\n\nimport {ComponentRef} from '@angular/core';\nimport {exportNgVar} from '../../dom/util';\nimport {AngularProfiler} from './common_tools';\n\nconst PROFILER_GLOBAL_NAME = 'profiler';\n\n/**\n * Enabled Angular debug tools that are accessible via your browser's\n * developer console.\n *\n * Usage:\n *\n * 1. Open developer console (e.g. in Chrome Ctrl + Shift + j)\n * 1. Type `ng.` (usually the console will show auto-complete suggestion)\n * 1. Try the change detection profiler `ng.profiler.timeChangeDetection()`\n * then hit Enter.\n *\n * @publicApi\n */\nexport function enableDebugTools<T>(ref: ComponentRef<T>): ComponentRef<T> {\n exportNgVar(PROFILER_GLOBAL_NAME, new AngularProfiler(ref));\n return ref;\n}\n\n/**\n * Disables Angular tools.\n *\n * @publicApi\n */\nexport function disableDebugTools(): void {\n exportNgVar(PROFILER_GLOBAL_NAME, null);\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 */\n\nimport {DOCUMENT} from '@angular/common';\nimport {APP_ID, Injectable, NgModule} from '@angular/core';\n\nexport function escapeHtml(text: string): string {\n const escapedText: {[k: string]: string} = {\n '&': '&a;',\n '\"': '&q;',\n '\\'': '&s;',\n '<': '&l;',\n '>': '&g;',\n };\n return text.replace(/[&\"'<>]/g, s => escapedText[s]);\n}\n\nexport function unescapeHtml(text: string): string {\n const unescapedText: {[k: string]: string} = {\n '&a;': '&',\n '&q;': '\"',\n '&s;': '\\'',\n '&l;': '<',\n '&g;': '>',\n };\n return text.replace(/&[^;]+;/g, s => unescapedText[s]);\n}\n\n/**\n * A type-safe key to use with `TransferState`.\n *\n * Example:\n *\n * ```\n * const COUNTER_KEY = makeStateKey<number>('counter');\n * let value = 10;\n *\n * transferState.set(COUNTER_KEY, value);\n * ```\n *\n * @publicApi\n */\nexport type StateKey<T> = string & {__not_a_string: never};\n\n/**\n * Create a `StateKey<T>` that can be used to store value of type T with `TransferState`.\n *\n * Example:\n *\n * ```\n * const COUNTER_KEY = makeStateKey<number>('counter');\n * let value = 10;\n *\n * transferState.set(COUNTER_KEY, value);\n * ```\n *\n * @publicApi\n */\nexport function makeStateKey<T = void>(key: string): StateKey<T> {\n return key as StateKey<T>;\n}\n\n/**\n * A key value store that is transferred from the application on the server side to the application\n * on the client side.\n *\n * `TransferState` will be available as an injectable token. To use it import\n * `ServerTransferStateModule` on the server and `BrowserTransferStateModule` on the client.\n *\n * The values in the store are serialized/deserialized using JSON.stringify/JSON.parse. So only\n * boolean, number, string, null and non-class objects will be serialized and deserialzied in a\n * non-lossy manner.\n *\n * @publicApi\n */\n@Injectable()\nexport class TransferState {\n private store: {[k: string]: {} | undefined} = {};\n private onSerializeCallbacks: {[k: string]: () => {} | undefined} = {};\n\n /** @internal */\n static init(initState: {}) {\n const transferState = new TransferState();\n transferState.store = initState;\n return transferState;\n }\n\n /**\n * Get the value corresponding to a key. Return `defaultValue` if key is not found.\n */\n get<T>(key: StateKey<T>, defaultValue: T): T {\n return this.store[key] !== undefined ? this.store[key] as T : defaultValue;\n }\n\n /**\n * Set the value corresponding to a key.\n */\n set<T>(key: StateKey<T>, value: T): void { this.store[key] = value; }\n\n /**\n * Remove a key from the store.\n */\n remove<T>(key: StateKey<T>): void { delete this.store[key]; }\n\n /**\n * Test whether a key exists in the store.\n */\n hasKey<T>(key: StateKey<T>) { return this.store.hasOwnProperty(key); }\n\n /**\n * Register a callback to provide the value for a key when `toJson` is called.\n */\n onSerialize<T>(key: StateKey<T>, callback: () => T): void {\n this.onSerializeCallbacks[key] = callback;\n }\n\n /**\n * Serialize the current state of the store to JSON.\n */\n toJson(): string {\n // Call the onSerialize callbacks and put those values into the store.\n for (const key in this.onSerializeCallbacks) {\n if (this.onSerializeCallbacks.hasOwnProperty(key)) {\n try {\n this.store[key] = this.onSerializeCallbacks[key]();\n } catch (e) {\n console.warn('Exception in onSerialize callback: ', e);\n }\n }\n }\n return JSON.stringify(this.store);\n }\n}\n\nexport function initTransferState(doc: Document, appId: string) {\n // Locate the script tag with the JSON data transferred from the server.\n // The id of the script tag is set to the Angular appId + 'state'.\n const script = doc.getElementById(appId + '-state');\n let initialState = {};\n if (script && script.textContent) {\n try {\n initialState = JSON.parse(unescapeHtml(script.textContent));\n } catch (e) {\n console.warn('Exception while restoring TransferState for app ' + appId, e);\n }\n }\n return TransferState.init(initialState);\n}\n\n/**\n * NgModule to install on the client side while using the `TransferState` to transfer state from\n * server to client.\n *\n * @publicApi\n */\n@NgModule({\n providers: [{provide: TransferState, useFactory: initTransferState, deps: [DOCUMENT, APP_ID]}],\n})\nexport class BrowserTransferStateModule {\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 */\n\nimport {DebugElement, Predicate, Type} from '@angular/core';\nimport {getDOM} from '../../dom/dom_adapter';\n\n\n\n/**\n * Predicates for use with {@link DebugElement}'s query functions.\n *\n * @publicApi\n */\nexport class By {\n /**\n * Match all elements.\n *\n * @usageNotes\n * ### Example\n *\n * {@example platform-browser/dom/debug/ts/by/by.ts region='by_all'}\n */\n static all(): Predicate<DebugElement> { return (debugElement) => true; }\n\n /**\n * Match elements by the given CSS selector.\n *\n * @usageNotes\n * ### Example\n *\n * {@example platform-browser/dom/debug/ts/by/by.ts region='by_css'}\n */\n static css(selector: string): Predicate<DebugElement> {\n return (debugElement) => {\n return debugElement.nativeElement != null ?\n getDOM().elementMatches(debugElement.nativeElement, selector) :\n false;\n };\n }\n\n /**\n * Match elements that have the given directive present.\n *\n * @usageNotes\n * ### Example\n *\n * {@example platform-browser/dom/debug/ts/by/by.ts region='by_directive'}\n */\n static directive(type: Type<any>): Predicate<DebugElement> {\n return (debugElement) => debugElement.providerTokens !.indexOf(type) !== -1;\n }\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 */\n\nexport {BROWSER_SANITIZATION_PROVIDERS as ɵBROWSER_SANITIZATION_PROVIDERS, INTERNAL_BROWSER_PLATFORM_PROVIDERS as ɵINTERNAL_BROWSER_PLATFORM_PROVIDERS, initDomAdapter as ɵinitDomAdapter} from './browser';\nexport {BrowserDomAdapter as ɵBrowserDomAdapter} from './browser/browser_adapter';\nexport {BrowserPlatformLocation as ɵBrowserPlatformLocation} from './browser/location/browser_platform_location';\nexport {TRANSITION_ID as ɵTRANSITION_ID} from './browser/server-transition';\nexport {BrowserGetTestability as ɵBrowserGetTestability} from './browser/testability';\nexport {escapeHtml as ɵescapeHtml} from './browser/transfer_state';\nexport {ELEMENT_PROBE_PROVIDERS as ɵELEMENT_PROBE_PROVIDERS} from './dom/debug/ng_probe';\nexport {DomAdapter as ɵDomAdapter, getDOM as ɵgetDOM, setRootDomAdapter as ɵsetRootDomAdapter} from './dom/dom_adapter';\nexport {DomRendererFactory2 as ɵDomRendererFactory2, NAMESPACE_URIS as ɵNAMESPACE_URIS, flattenStyles as ɵflattenStyles, shimContentAttribute as ɵshimContentAttribute, shimHostAttribute as ɵshimHostAttribute} from './dom/dom_renderer';\nexport {DomEventsPlugin as ɵDomEventsPlugin} from './dom/events/dom_events';\nexport {HammerGesturesPlugin as ɵHammerGesturesPlugin} from './dom/events/hammer_gestures';\nexport {KeyEventsPlugin as ɵKeyEventsPlugin} from './dom/events/key_events';\nexport {DomSharedStylesHost as ɵDomSharedStylesHost, SharedStylesHost as ɵSharedStylesHost} from './dom/shared_styles_host';\nexport {DomSanitizerImpl as ɵDomSanitizerImpl} from './security/dom_sanitization_service';\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 */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of the common package.\n */\n\nimport {Version} from '@angular/core';\n\n/**\n * @publicApi\n */\nexport const VERSION = new Version('8.1.1');\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 */\n\nexport {BrowserModule, platformBrowser} from './browser';\nexport {Meta, MetaDefinition} from './browser/meta';\nexport {Title} from './browser/title';\nexport {disableDebugTools, enableDebugTools} from './browser/tools/tools';\nexport {BrowserTransferStateModule, StateKey, TransferState, makeStateKey} from './browser/transfer_state';\nexport {By} from './dom/debug/by';\nexport {EVENT_MANAGER_PLUGINS, EventManager} from './dom/events/event_manager';\nexport {HAMMER_GESTURE_CONFIG, HAMMER_LOADER, HammerGestureConfig, HammerLoader} from './dom/events/hammer_gestures';\nexport {DomSanitizer, SafeHtml, SafeResourceUrl, SafeScript, SafeStyle, SafeUrl, SafeValue} from './security/dom_sanitization_service';\n\nexport * from './private_export';\nexport {VERSION} from './version';\n// This must be exported so it doesn't get tree-shaken away prematurely\nexport {ELEMENT_PROBE_PROVIDERS__POST_R3__ as ɵELEMENT_PROBE_PROVIDERS__POST_R3__} from './dom/debug/ng_probe';\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 */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of this package.\n */\nexport * from './src/platform-browser';\n// This file only reexports content of the `src` folder. Keep it that way.\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 */\n\n// This file is not used to build this module. It is only used during editing\n// by the TypeScript language service and during build for verification. `ngc`\n// replaces this file with production index.ts when it rewrites private symbol\n// names.\n\nexport * from './public_api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {BROWSER_MODULE_PROVIDERS as ɵangular_packages_platform_browser_platform_browser_c,_document as ɵangular_packages_platform_browser_platform_browser_b,errorHandler as ɵangular_packages_platform_browser_platform_browser_a} from './src/browser';\nexport {GenericBrowserDomAdapter as ɵangular_packages_platform_browser_platform_browser_l} from './src/browser/generic_browser_adapter';\nexport {createMeta as ɵangular_packages_platform_browser_platform_browser_d} from './src/browser/meta';\nexport {SERVER_TRANSITION_PROVIDERS as ɵangular_packages_platform_browser_platform_browser_i,appInitializerFactory as ɵangular_packages_platform_browser_platform_browser_h} from './src/browser/server-transition';\nexport {createTitle as ɵangular_packages_platform_browser_platform_browser_e} from './src/browser/title';\nexport {initTransferState as ɵangular_packages_platform_browser_platform_browser_f} from './src/browser/transfer_state';\nexport {ELEMENT_PROBE_PROVIDERS__PRE_R3__ as ɵangular_packages_platform_browser_platform_browser_k,_createNgProbe as ɵangular_packages_platform_browser_platform_browser_j} from './src/dom/debug/ng_probe';\nexport {EventManagerPlugin as ɵangular_packages_platform_browser_platform_browser_g} from './src/dom/events/event_manager';"],"names":["tslib_1.__extends","global","parseCookieValue","tslib_1.__param","Console","_sanitizeHtml","_sanitizeStyle","_sanitizeUrl","PLATFORM_BROWSER_ID","APP_ROOT","window"],"mappings":"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"}