UNPKG

167 kBSource Map (JSON)View Raw
1{"version":3,"file":"platform-browser.js","sources":["../src/dom/dom_adapter.ts","../src/browser/generic_browser_adapter.ts","../src/browser/browser_adapter.ts","../src/browser/location/history.ts","../src/browser/location/browser_platform_location.ts","../src/browser/server-transition.ts","../src/browser/testability.ts","../src/dom/util.ts","../src/dom/debug/ng_probe.ts","../src/dom/events/event_manager.ts","../src/dom/shared_styles_host.ts","../src/dom/dom_renderer.ts","../src/dom/events/dom_events.ts","../src/dom/events/hammer_gestures.ts","../src/dom/events/key_events.ts","../src/security/dom_sanitization_service.ts","../src/browser.ts","../src/browser/meta.ts","../src/browser/title.ts","../src/browser/tools/browser.ts","../src/browser/tools/common_tools.ts","../src/browser/tools/tools.ts","../src/browser/transfer_state.ts","../src/dom/debug/by.ts","../src/version.ts","../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: (this: Node, other: Node) => boolean = (() => {\n if (global['Node']) {\n return global['Node'].prototype.contains || function(this: Node, 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(this: any, 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(this: any) {\n if (this) {\n this[stopSymbol] = true;\n }\n\n // We should call native delegate in case in some environment part of\n // the application will not use the patched Event. Also we cast the\n // \"arguments\" to any since \"stopImmediatePropagation\" technically does not\n // accept any arguments, but we don't know what developers pass through the\n // function and we want to not break these calls.\n delegate && delegate.apply(this, arguments as any);\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, DebugNode, 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 nodes.\n *\n * @usageNotes\n * ### Example\n *\n * {@example platform-browser/dom/debug/ts/by/by.ts region='by_all'}\n */\n static all(): Predicate<DebugNode> { return () => 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 nodes 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<DebugNode> {\n return (debugNode) => debugNode.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\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.2.14');\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":["global","parseCookieValue","Console","_sanitizeHtml","_sanitizeStyle","_sanitizeUrl","PLATFORM_BROWSER_ID","APP_ROOT","window"],"mappings":"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"}
\No newline at end of file