blob: c380961a2e0c76e3c5805de8ac0ad38c8523ff92 [file] [log] [blame]
{"version":3,"file":"flex-layout-core.umd.js","sources":["../../src/lib/core/media-marshaller/media-marshaller.ts","../../src/lib/core/basis-validator/basis-validator.ts","../../src/lib/core/style-builder/style-builder.ts","../../src/lib/core/style-utils/style-utils.ts","../../src/lib/utils/auto-prefixer.ts","../../src/lib/core/media-trigger/media-trigger.ts","../../src/lib/core/media-observer/media-observer.ts","../../src/lib/core/utils/array.ts","../../src/lib/core/media-marshaller/print-hook.ts","../../src/lib/core/match-media/mock/mock-match-media.ts","../../src/lib/core/match-media/match-media.ts","../../src/lib/core/breakpoints/break-point-registry.ts","../../src/lib/core/utils/sort.ts","../../src/lib/core/breakpoints/break-points-token.ts","../../src/lib/core/breakpoints/breakpoint-tools.ts","../../src/lib/utils/object-extend.ts","../../src/lib/core/breakpoints/data/orientation-break-points.ts","../../src/lib/core/breakpoints/data/break-points.ts","../../src/lib/core/base/base2.ts","../../src/lib/utils/layout-validator.ts","../../src/lib/core/add-alias.ts","../../src/lib/core/tokens/breakpoint-token.ts","../../src/lib/core/tokens/server-token.ts","../../src/lib/core/tokens/library-config.ts","../../src/lib/core/stylesheet-map/stylesheet-map.ts","../../src/lib/core/media-change.ts","../../src/lib/core/module.ts","../../src/lib/core/browser-provider.ts","../../node_modules/tslib/tslib.es6.js"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {Injectable} from '@angular/core';\n\nimport {merge, Observable, Subject, Subscription} from 'rxjs';\nimport {filter, tap} from 'rxjs/operators';\n\nimport {BreakPoint} from '../breakpoints/break-point';\nimport {sortDescendingPriority} from '../utils/sort';\nimport {BreakPointRegistry} from '../breakpoints/break-point-registry';\nimport {MatchMedia} from '../match-media/match-media';\nimport {MediaChange} from '../media-change';\n\nimport {PrintHook, HookTarget} from './print-hook';\nimport {mergeAlias} from '../add-alias';\n\ntype ClearCallback = () => void;\ntype UpdateCallback = (val: any) => void;\ntype Builder = UpdateCallback | ClearCallback;\n\ntype ValueMap = Map<string, string>;\ntype BreakpointMap = Map<string, ValueMap>;\ntype ElementMap = Map<HTMLElement, BreakpointMap>;\ntype ElementKeyMap = WeakMap<HTMLElement, Set<string>>;\ntype SubscriptionMap = Map<string, Subscription>;\ntype WatcherMap = WeakMap<HTMLElement, SubscriptionMap>;\ntype BuilderMap = WeakMap<HTMLElement, Map<string, Builder>>;\n\nexport interface ElementMatcher {\n element: HTMLElement;\n key: string;\n value: any;\n}\n\n/**\n * MediaMarshaller - register responsive values from directives and\n * trigger them based on media query events\n */\n@Injectable({providedIn: 'root'})\nexport class MediaMarshaller {\n private activatedBreakpoints: BreakPoint[] = [];\n private elementMap: ElementMap = new Map();\n private elementKeyMap: ElementKeyMap = new WeakMap();\n private watcherMap: WatcherMap = new WeakMap(); // special triggers to update elements\n private updateMap: BuilderMap = new WeakMap(); // callback functions to update styles\n private clearMap: BuilderMap = new WeakMap(); // callback functions to clear styles\n\n private subject: Subject<ElementMatcher> = new Subject();\n\n get activatedAlias(): string {\n return this.activatedBreakpoints[0] ? this.activatedBreakpoints[0].alias : '';\n }\n\n constructor(protected matchMedia: MatchMedia,\n protected breakpoints: BreakPointRegistry,\n protected hook: PrintHook) {\n this.observeActivations();\n }\n\n /**\n * Update styles on breakpoint activates or deactivates\n * @param mc\n */\n onMediaChange(mc: MediaChange) {\n const bp: BreakPoint | null = this.findByQuery(mc.mediaQuery);\n if (bp) {\n mc = mergeAlias(mc, bp);\n\n if (mc.matches && this.activatedBreakpoints.indexOf(bp) === -1) {\n this.activatedBreakpoints.push(bp);\n this.activatedBreakpoints.sort(sortDescendingPriority);\n\n this.updateStyles();\n\n } else if (!mc.matches && this.activatedBreakpoints.indexOf(bp) !== -1) {\n // Remove the breakpoint when it's deactivated\n this.activatedBreakpoints.splice(this.activatedBreakpoints.indexOf(bp), 1);\n this.activatedBreakpoints.sort(sortDescendingPriority);\n\n this.updateStyles();\n }\n }\n }\n\n /**\n * initialize the marshaller with necessary elements for delegation on an element\n * @param element\n * @param key\n * @param updateFn optional callback so that custom bp directives don't have to re-provide this\n * @param clearFn optional callback so that custom bp directives don't have to re-provide this\n * @param extraTriggers other triggers to force style updates (e.g. layout, directionality, etc)\n */\n init(element: HTMLElement,\n key: string,\n updateFn?: UpdateCallback,\n clearFn?: ClearCallback,\n extraTriggers: Observable<any>[] = []): void {\n\n initBuilderMap(this.updateMap, element, key, updateFn);\n initBuilderMap(this.clearMap, element, key, clearFn);\n\n this.buildElementKeyMap(element, key);\n this.watchExtraTriggers(element, key, extraTriggers);\n }\n\n /**\n * get the value for an element and key and optionally a given breakpoint\n * @param element\n * @param key\n * @param bp\n */\n getValue(element: HTMLElement, key: string, bp?: string): any {\n const bpMap = this.elementMap.get(element);\n if (bpMap) {\n const values = bp !== undefined ? bpMap.get(bp) : this.getActivatedValues(bpMap, key);\n if (values) {\n return values.get(key);\n }\n }\n return undefined;\n }\n\n /**\n * whether the element has values for a given key\n * @param element\n * @param key\n */\n hasValue(element: HTMLElement, key: string): boolean {\n const bpMap = this.elementMap.get(element);\n if (bpMap) {\n const values = this.getActivatedValues(bpMap, key);\n if (values) {\n return values.get(key) !== undefined || false;\n }\n }\n return false;\n }\n\n /**\n * Set the value for an input on a directive\n * @param element the element in question\n * @param key the type of the directive (e.g. flex, layout-gap, etc)\n * @param bp the breakpoint suffix (empty string = default)\n * @param val the value for the breakpoint\n */\n setValue(element: HTMLElement, key: string, val: any, bp: string): void {\n let bpMap: BreakpointMap | undefined = this.elementMap.get(element);\n if (!bpMap) {\n bpMap = new Map().set(bp, new Map().set(key, val));\n this.elementMap.set(element, bpMap);\n } else {\n const values = (bpMap.get(bp) || new Map()).set(key, val);\n bpMap.set(bp, values);\n this.elementMap.set(element, bpMap);\n }\n const value = this.getValue(element, key);\n if (value !== undefined) {\n this.updateElement(element, key, value);\n }\n }\n\n /** Track element value changes for a specific key */\n trackValue(element: HTMLElement, key: string): Observable<ElementMatcher> {\n return this.subject\n .asObservable()\n .pipe(filter(v => v.element === element && v.key === key));\n }\n\n /** update all styles for all elements on the current breakpoint */\n updateStyles(): void {\n this.elementMap.forEach((bpMap, el) => {\n const keyMap = new Set(this.elementKeyMap.get(el)!);\n let valueMap = this.getActivatedValues(bpMap);\n\n if (valueMap) {\n valueMap.forEach((v, k) => {\n this.updateElement(el, k, v);\n keyMap.delete(k);\n });\n }\n\n keyMap.forEach(k => {\n valueMap = this.getActivatedValues(bpMap, k);\n if (valueMap) {\n const value = valueMap.get(k);\n this.updateElement(el, k, value);\n } else {\n this.clearElement(el, k);\n }\n });\n\n });\n }\n\n /**\n * clear the styles for a given element\n * @param element\n * @param key\n */\n clearElement(element: HTMLElement, key: string): void {\n const builders = this.clearMap.get(element);\n if (builders) {\n const clearFn: ClearCallback = builders.get(key) as ClearCallback;\n if (!!clearFn) {\n clearFn();\n this.subject.next({element, key, value: ''});\n }\n }\n }\n\n /**\n * update a given element with the activated values for a given key\n * @param element\n * @param key\n * @param value\n */\n updateElement(element: HTMLElement, key: string, value: any): void {\n const builders = this.updateMap.get(element);\n if (builders) {\n const updateFn: UpdateCallback = builders.get(key) as UpdateCallback;\n if (!!updateFn) {\n updateFn(value);\n this.subject.next({element, key, value});\n }\n }\n }\n\n /**\n * release all references to a given element\n * @param element\n */\n releaseElement(element: HTMLElement): void {\n const watcherMap = this.watcherMap.get(element);\n if (watcherMap) {\n watcherMap.forEach(s => s.unsubscribe());\n this.watcherMap.delete(element);\n }\n const elementMap = this.elementMap.get(element);\n if (elementMap) {\n elementMap.forEach((_, s) => elementMap.delete(s));\n this.elementMap.delete(element);\n }\n }\n\n /**\n * trigger an update for a given element and key (e.g. layout)\n * @param element\n * @param key\n */\n triggerUpdate(element: HTMLElement, key?: string): void {\n const bpMap = this.elementMap.get(element);\n if (bpMap) {\n const valueMap = this.getActivatedValues(bpMap, key);\n if (valueMap) {\n if (key) {\n this.updateElement(element, key, valueMap.get(key));\n } else {\n valueMap.forEach((v, k) => this.updateElement(element, k, v));\n }\n }\n }\n }\n\n /** Cross-reference for HTMLElement with directive key */\n private buildElementKeyMap(element: HTMLElement, key: string) {\n let keyMap = this.elementKeyMap.get(element);\n if (!keyMap) {\n keyMap = new Set();\n this.elementKeyMap.set(element, keyMap);\n }\n keyMap.add(key);\n }\n\n /**\n * Other triggers that should force style updates:\n * - directionality\n * - layout changes\n * - mutationobserver updates\n */\n private watchExtraTriggers(element: HTMLElement,\n key: string,\n triggers: Observable<any>[]) {\n if (triggers && triggers.length) {\n let watchers = this.watcherMap.get(element);\n if (!watchers) {\n watchers = new Map();\n this.watcherMap.set(element, watchers);\n }\n const subscription = watchers.get(key);\n if (!subscription) {\n const newSubscription = merge(...triggers).subscribe(() => {\n const currentValue = this.getValue(element, key);\n this.updateElement(element, key, currentValue);\n });\n watchers.set(key, newSubscription);\n }\n }\n }\n\n /** Breakpoint locator by mediaQuery */\n private findByQuery(query: string) {\n return this.breakpoints.findByQuery(query);\n }\n\n /**\n * get the fallback breakpoint for a given element, starting with the current breakpoint\n * @param bpMap\n * @param key\n */\n private getActivatedValues(bpMap: BreakpointMap, key?: string): ValueMap | undefined {\n for (let i = 0; i < this.activatedBreakpoints.length; i++) {\n const activatedBp = this.activatedBreakpoints[i];\n const valueMap = bpMap.get(activatedBp.alias);\n if (valueMap) {\n if (key === undefined || (valueMap.has(key) && valueMap.get(key) != null)) {\n return valueMap;\n }\n }\n }\n const lastHope = bpMap.get('');\n return (key === undefined || lastHope && lastHope.has(key)) ? lastHope : undefined;\n }\n\n /**\n * Watch for mediaQuery breakpoint activations\n */\n private observeActivations() {\n const target = this as unknown as HookTarget;\n const queries = this.breakpoints.items.map(bp => bp.mediaQuery);\n\n this.matchMedia\n .observe(this.hook.withPrintQuery(queries))\n .pipe(\n tap(this.hook.interceptEvents(target)),\n filter(this.hook.blockPropagation())\n )\n .subscribe(this.onMediaChange.bind(this));\n }\n\n}\n\nfunction initBuilderMap(map: BuilderMap,\n element: HTMLElement,\n key: string,\n input?: UpdateCallback | ClearCallback): void {\n if (input !== undefined) {\n let oldMap = map.get(element);\n if (!oldMap) {\n oldMap = new Map();\n map.set(element, oldMap);\n }\n oldMap.set(key, input);\n }\n}\n\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n /**\n * The flex API permits 3 or 1 parts of the value:\n * - `flex-grow flex-shrink flex-basis`, or\n * - `flex-basis`\n */\nexport function validateBasis(basis: string, grow = '1', shrink = '1'): string[] {\n let parts = [grow, shrink, basis];\n\n let j = basis.indexOf('calc');\n if (j > 0) {\n parts[2] = _validateCalcValue(basis.substring(j).trim());\n let matches = basis.substr(0, j).trim().split(' ');\n if (matches.length == 2) {\n parts[0] = matches[0];\n parts[1] = matches[1];\n }\n } else if (j == 0) {\n parts[2] = _validateCalcValue(basis.trim());\n } else {\n let matches = basis.split(' ');\n parts = (matches.length === 3) ? matches : [\n grow, shrink, basis\n ];\n }\n\n return parts;\n}\n\n\n/**\n * Calc expressions require whitespace before & after any expression operators\n * This is a simple, crude whitespace padding solution.\n * - '3 3 calc(15em + 20px)'\n * - calc(100% / 7 * 2)\n * - 'calc(15em + 20px)'\n * - 'calc(15em+20px)'\n * - '37px'\n * = '43%'\n */\nfunction _validateCalcValue(calc: string): string {\n return calc.replace(/[\\s]/g, '').replace(/[\\/\\*\\+\\-]/g, ' $& ');\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {StyleDefinition} from '../style-utils/style-utils';\n\n/** A class that encapsulates CSS style generation for common directives */\nexport abstract class StyleBuilder {\n\n /** Whether to cache the generated output styles */\n shouldCache = true;\n\n /** Build the styles given an input string and configuration object from a host */\n abstract buildStyles(input: string, parent?: Object): StyleDefinition;\n\n /**\n * Run a side effect computation given the input string and the computed styles\n * from the build task and the host configuration object\n * NOTE: This should be a no-op unless an algorithm is provided in a subclass\n */\n sideEffect(_input: string, _styles: StyleDefinition, _parent?: Object) {\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {Inject, Injectable, PLATFORM_ID} from '@angular/core';\nimport {isPlatformBrowser, isPlatformServer} from '@angular/common';\n\nimport {applyCssPrefixes} from '../../utils/auto-prefixer';\nimport {StylesheetMap} from '../stylesheet-map/stylesheet-map';\nimport {SERVER_TOKEN} from '../tokens/server-token';\nimport {LAYOUT_CONFIG, LayoutConfigOptions} from '../tokens/library-config';\n\n@Injectable({providedIn: 'root'})\nexport class StyleUtils {\n\n constructor(private _serverStylesheet: StylesheetMap,\n @Inject(SERVER_TOKEN) private _serverModuleLoaded: boolean,\n @Inject(PLATFORM_ID) private _platformId: Object,\n @Inject(LAYOUT_CONFIG) private layoutConfig: LayoutConfigOptions) {}\n\n /**\n * Applies styles given via string pair or object map to the directive element\n */\n applyStyleToElement(element: HTMLElement,\n style: StyleDefinition | string,\n value: string | number | null = null) {\n let styles: StyleDefinition = {};\n if (typeof style === 'string') {\n styles[style] = value;\n style = styles;\n }\n styles = this.layoutConfig.disableVendorPrefixes ? style : applyCssPrefixes(style);\n this._applyMultiValueStyleToElement(styles, element);\n }\n\n /**\n * Applies styles given via string pair or object map to the directive's element\n */\n applyStyleToElements(style: StyleDefinition, elements: HTMLElement[] = []) {\n const styles = this.layoutConfig.disableVendorPrefixes ? style : applyCssPrefixes(style);\n elements.forEach(el => {\n this._applyMultiValueStyleToElement(styles, el);\n });\n }\n\n /**\n * Determine the DOM element's Flexbox flow (flex-direction)\n *\n * Check inline style first then check computed (stylesheet) style\n */\n getFlowDirection(target: HTMLElement): [string, string] {\n const query = 'flex-direction';\n let value = this.lookupStyle(target, query);\n const hasInlineValue = this.lookupInlineStyle(target, query) ||\n (isPlatformServer(this._platformId) && this._serverModuleLoaded) ? value : '';\n\n return [value || 'row', hasInlineValue];\n }\n\n hasWrap(target: HTMLElement): boolean {\n const query = 'flex-wrap';\n return this.lookupStyle(target, query) === 'wrap';\n }\n\n /**\n * Find the DOM element's raw attribute value (if any)\n */\n lookupAttributeValue(element: HTMLElement, attribute: string): string {\n return element.getAttribute(attribute) || '';\n }\n\n /**\n * Find the DOM element's inline style value (if any)\n */\n lookupInlineStyle(element: HTMLElement, styleName: string): string {\n return isPlatformBrowser(this._platformId) ?\n element.style.getPropertyValue(styleName) : this._getServerStyle(element, styleName);\n }\n\n /**\n * Determine the inline or inherited CSS style\n * NOTE: platform-server has no implementation for getComputedStyle\n */\n lookupStyle(element: HTMLElement, styleName: string, inlineOnly = false): string {\n let value = '';\n if (element) {\n let immediateValue = value = this.lookupInlineStyle(element, styleName);\n if (!immediateValue) {\n if (isPlatformBrowser(this._platformId)) {\n if (!inlineOnly) {\n value = getComputedStyle(element).getPropertyValue(styleName);\n }\n } else {\n if (this._serverModuleLoaded) {\n value = this._serverStylesheet.getStyleForElement(element, styleName);\n }\n }\n }\n }\n\n // Note: 'inline' is the default of all elements, unless UA stylesheet overrides;\n // in which case getComputedStyle() should determine a valid value.\n return value ? value.trim() : '';\n }\n\n /**\n * Applies the styles to the element. The styles object map may contain an array of values\n * Each value will be added as element style\n * Keys are sorted to add prefixed styles (like -webkit-x) first, before the standard ones\n */\n private _applyMultiValueStyleToElement(styles: StyleDefinition,\n element: HTMLElement) {\n Object.keys(styles).sort().forEach(key => {\n const el = styles[key];\n const values: (string | number | null)[] = Array.isArray(el) ? el : [el];\n values.sort();\n for (let value of values) {\n value = value ? value + '' : '';\n if (isPlatformBrowser(this._platformId) || !this._serverModuleLoaded) {\n isPlatformBrowser(this._platformId) ?\n element.style.setProperty(key, value) : this._setServerStyle(element, key, value);\n } else {\n this._serverStylesheet.addStyleToElement(element, key, value);\n }\n }\n });\n }\n\n private _setServerStyle(element: any, styleName: string, styleValue?: string|null) {\n styleName = styleName.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n const styleMap = this._readStyleAttribute(element);\n styleMap[styleName] = styleValue || '';\n this._writeStyleAttribute(element, styleMap);\n }\n\n private _getServerStyle(element: any, styleName: string): string {\n const styleMap = this._readStyleAttribute(element);\n return styleMap[styleName] || '';\n }\n\n private _readStyleAttribute(element: any): {[name: string]: string} {\n const styleMap: {[name: string]: string} = {};\n const styleAttribute = element.getAttribute('style');\n if (styleAttribute) {\n const styleList = styleAttribute.split(/;+/g);\n for (let i = 0; i < styleList.length; i++) {\n const style = styleList[i].trim();\n if (style.length > 0) {\n const colonIndex = style.indexOf(':');\n if (colonIndex === -1) {\n throw new Error(`Invalid CSS style: ${style}`);\n }\n const name = style.substr(0, colonIndex).trim();\n styleMap[name] = style.substr(colonIndex + 1).trim();\n }\n }\n }\n return styleMap;\n }\n\n private _writeStyleAttribute(element: any, styleMap: {[name: string]: string}) {\n let styleAttrValue = '';\n for (const key in styleMap) {\n const newValue = styleMap[key];\n if (newValue) {\n styleAttrValue += key + ':' + styleMap[key] + ';';\n }\n }\n element.setAttribute('style', styleAttrValue);\n }\n}\n\n/**\n * Definition of a css style. Either a property name (e.g. \"flex-basis\") or an object\n * map of property name and value (e.g. {display: 'none', flex-order: 5})\n */\nexport type StyleDefinition = { [property: string]: string | number | null };\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Applies CSS prefixes to appropriate style keys.\n *\n * Note: `-ms-`, `-moz` and `-webkit-box` are no longer supported. e.g.\n * {\n * display: -webkit-flex; NEW - Safari 6.1+. iOS 7.1+, BB10\n * display: flex; NEW, Spec - Firefox, Chrome, Opera\n * // display: -webkit-box; OLD - iOS 6-, Safari 3.1-6, BB7\n * // display: -ms-flexbox; TWEENER - IE 10\n * // display: -moz-flexbox; OLD - Firefox\n * }\n */\nexport function applyCssPrefixes(target: {[key: string]: any | null}) {\n for (let key in target) {\n let value = target[key] || '';\n\n switch (key) {\n case 'display':\n if (value === 'flex') {\n target['display'] = [\n '-webkit-flex',\n 'flex'\n ];\n } else if (value === 'inline-flex') {\n target['display'] = [\n '-webkit-inline-flex',\n 'inline-flex'\n ];\n } else {\n target['display'] = value;\n }\n break;\n\n case 'align-items':\n case 'align-self':\n case 'align-content':\n case 'flex':\n case 'flex-basis':\n case 'flex-flow':\n case 'flex-grow':\n case 'flex-shrink':\n case 'flex-wrap':\n case 'justify-content':\n target['-webkit-' + key] = value;\n break;\n\n case 'flex-direction':\n value = value || 'row';\n target['-webkit-flex-direction'] = value;\n target['flex-direction'] = value;\n break;\n\n case 'order':\n target['order'] = target['-webkit-' + key] = isNaN(+value) ? '0' : value;\n break;\n }\n }\n return target;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {Inject, Injectable, PLATFORM_ID} from '@angular/core';\nimport {DOCUMENT, isPlatformBrowser} from '@angular/common';\n\nimport {fromEvent, Subscription} from 'rxjs';\nimport {take} from 'rxjs/operators';\n\nimport {mergeAlias} from '../add-alias';\nimport {MediaChange} from '../media-change';\nimport {MatchMedia} from '../match-media/match-media';\nimport {BreakPointRegistry, OptionalBreakPoint} from '../breakpoints/break-point-registry';\nimport {sortDescendingPriority} from '../utils/sort';\nimport {LAYOUT_CONFIG, LayoutConfigOptions} from '../tokens/library-config';\n\n/**\n * Class\n */\n@Injectable({providedIn: 'root'})\nexport class MediaTrigger {\n\n constructor(\n protected breakpoints: BreakPointRegistry,\n protected matchMedia: MatchMedia,\n @Inject(LAYOUT_CONFIG) protected layoutConfig: LayoutConfigOptions,\n @Inject(PLATFORM_ID) protected _platformId: Object,\n @Inject(DOCUMENT) protected _document: any) {\n }\n\n /**\n * Manually activate range of breakpoints\n * @param list array of mediaQuery or alias strings\n */\n activate(list: string[]) {\n list = list.map(it => it.trim()); // trim queries\n\n this.saveActivations();\n this.deactivateAll();\n this.setActivations(list);\n\n this.prepareAutoRestore();\n }\n\n /**\n * Restore original, 'real' breakpoints and emit events\n * to trigger stream notification\n */\n restore() {\n if (this.hasCachedRegistryMatches) {\n const extractQuery = (change: MediaChange) => change.mediaQuery;\n const list = this.originalActivations.map(extractQuery);\n try {\n this.deactivateAll();\n this.restoreRegistryMatches();\n this.setActivations(list);\n } finally {\n this.originalActivations = [];\n if (this.resizeSubscription) {\n this.resizeSubscription.unsubscribe();\n }\n }\n }\n }\n\n // ************************************************\n // Internal Methods\n // ************************************************\n\n /**\n * Whenever window resizes, immediately auto-restore original\n * activations (if we are simulating activations)\n */\n private prepareAutoRestore() {\n const isBrowser = isPlatformBrowser(this._platformId) && this._document;\n const enableAutoRestore = isBrowser && this.layoutConfig.mediaTriggerAutoRestore;\n\n if (enableAutoRestore) {\n const resize$ = fromEvent(window, 'resize').pipe(take(1));\n this.resizeSubscription = resize$.subscribe(this.restore.bind(this));\n }\n }\n\n /**\n * Notify all matchMedia subscribers of de-activations\n *\n * Note: we must force 'matches' updates for\n * future matchMedia::activation lookups\n */\n private deactivateAll() {\n const list = this.currentActivations;\n\n this.forceRegistryMatches(list, false);\n this.simulateMediaChanges(list, false);\n }\n\n /**\n * Cache current activations as sorted, prioritized list of MediaChanges\n */\n private saveActivations() {\n if (!this.hasCachedRegistryMatches) {\n const toMediaChange = (query: string) => new MediaChange(true, query);\n const mergeMQAlias = (change: MediaChange) => {\n const bp: OptionalBreakPoint = this.breakpoints.findByQuery(change.mediaQuery);\n return mergeAlias(change, bp);\n };\n\n this.originalActivations = this.currentActivations\n .map(toMediaChange)\n .map(mergeMQAlias)\n .sort(sortDescendingPriority);\n\n this.cacheRegistryMatches();\n }\n }\n\n /**\n * Force set manual activations for specified mediaQuery list\n */\n private setActivations(list: string[]) {\n if (!!this.originalRegistry) {\n this.forceRegistryMatches(list, true);\n }\n this.simulateMediaChanges(list);\n }\n\n /**\n * For specified mediaQuery list manually simulate activations or deactivations\n */\n private simulateMediaChanges(queries: string[], matches = true) {\n const toMediaQuery = (query: string) => {\n const locator = this.breakpoints;\n const bp = locator.findByAlias(query) || locator.findByQuery(query);\n return bp ? bp.mediaQuery : query;\n };\n const emitChangeEvent = (query: string) => this.emitChangeEvent(matches, query);\n\n queries.map(toMediaQuery).forEach(emitChangeEvent);\n }\n\n /**\n * Replace current registry with simulated registry...\n * Note: this is required since MediaQueryList::matches is 'readOnly'\n */\n private forceRegistryMatches(queries: string[], matches: boolean) {\n const registry = new Map<string, MediaQueryList>();\n queries.forEach(query => {\n registry.set(query, {matches} as MediaQueryList);\n });\n\n this.matchMedia.registry = registry;\n }\n\n /**\n * Save current MatchMedia::registry items.\n */\n private cacheRegistryMatches() {\n const target = this.originalRegistry;\n\n target.clear();\n this.matchMedia.registry.forEach((value: MediaQueryList, key: string) => {\n target.set(key, value);\n });\n this.hasCachedRegistryMatches = true;\n }\n\n /**\n * Restore original, 'true' registry\n */\n private restoreRegistryMatches() {\n const target = this.matchMedia.registry;\n\n target.clear();\n this.originalRegistry.forEach((value: MediaQueryList, key: string) => {\n target.set(key, value);\n });\n\n this.originalRegistry.clear();\n this.hasCachedRegistryMatches = false;\n }\n\n /**\n * Manually emit a MediaChange event via the MatchMedia to MediaMarshaller and MediaObserver\n */\n private emitChangeEvent(matches: boolean, query: string) {\n this.matchMedia.source.next(new MediaChange(matches, query));\n }\n\n private get currentActivations(): string[] {\n return this.matchMedia.activations;\n }\n\n private hasCachedRegistryMatches = false;\n private originalActivations: MediaChange[] = [];\n private originalRegistry: Map<string, MediaQueryList> = new Map<string, MediaQueryList>();\n\n private resizeSubscription!: Subscription;\n}\n\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {Injectable, OnDestroy} from '@angular/core';\nimport {Subject, asapScheduler, Observable, of} from 'rxjs';\nimport {debounceTime, filter, map, switchMap, takeUntil} from 'rxjs/operators';\n\nimport {mergeAlias} from '../add-alias';\nimport {MediaChange} from '../media-change';\nimport {MatchMedia} from '../match-media/match-media';\nimport {PrintHook} from '../media-marshaller/print-hook';\nimport {BreakPointRegistry, OptionalBreakPoint} from '../breakpoints/break-point-registry';\n\nimport {sortDescendingPriority} from '../utils/sort';\nimport {coerceArray} from '../utils/array';\n\n\n/**\n * MediaObserver enables applications to listen for 1..n mediaQuery activations and to determine\n * if a mediaQuery is currently activated.\n *\n * Since a breakpoint change will first deactivate 1...n mediaQueries and then possibly activate\n * 1..n mediaQueries, the MediaObserver will debounce notifications and report ALL *activations*\n * in 1 event notification. The reported activations will be sorted in descending priority order.\n *\n * This class uses the BreakPoint Registry to inject alias information into the raw MediaChange\n * notification. For custom mediaQuery notifications, alias information will not be injected and\n * those fields will be ''.\n *\n * Note: Developers should note that only mediaChange activations (not de-activations)\n * are announced by the MediaObserver.\n *\n * @usage\n *\n * // RxJS\n * import { filter } from 'rxjs/operators';\n * import { MediaObserver } from '@angular/flex-layout';\n *\n * @Component({ ... })\n * export class AppComponent {\n * status: string = '';\n *\n * constructor(mediaObserver: MediaObserver) {\n * const media$ = mediaObserver.asObservable().pipe(\n * filter((changes: MediaChange[]) => true) // silly noop filter\n * );\n *\n * media$.subscribe((changes: MediaChange[]) => {\n * let status = '';\n * changes.forEach( change => {\n * status += `'${change.mqAlias}' = (${change.mediaQuery}) <br/>` ;\n * });\n * this.status = status;\n * });\n *\n * }\n * }\n */\n@Injectable({providedIn: 'root'})\nexport class MediaObserver implements OnDestroy {\n\n /**\n * @deprecated Use `asObservable()` instead.\n * @breaking-change 8.0.0-beta.25\n * @deletion-target 10.0.0\n */\n readonly media$: Observable<MediaChange>;\n\n /** Filter MediaChange notifications for overlapping breakpoints */\n filterOverlaps = false;\n\n constructor(protected breakpoints: BreakPointRegistry,\n protected matchMedia: MatchMedia,\n protected hook: PrintHook) {\n this._media$ = this.watchActivations();\n this.media$ = this._media$.pipe(\n filter((changes: MediaChange[]) => changes.length > 0),\n map((changes: MediaChange[]) => changes[0])\n );\n }\n\n /**\n * Completes the active subject, signalling to all complete for all\n * MediaObserver subscribers\n */\n ngOnDestroy(): void {\n this.destroyed$.next();\n this.destroyed$.complete();\n }\n\n // ************************************************\n // Public Methods\n // ************************************************\n\n /**\n * Observe changes to current activation 'list'\n */\n asObservable(): Observable<MediaChange[]> {\n return this._media$;\n }\n\n /**\n * Allow programmatic query to determine if one or more media query/alias match\n * the current viewport size.\n * @param value One or more media queries (or aliases) to check.\n * @returns Whether any of the media queries match.\n */\n isActive(value: string | string[]): boolean {\n const aliases = splitQueries(coerceArray(value));\n return aliases.some(alias => {\n const query = toMediaQuery(alias, this.breakpoints);\n return query !== null && this.matchMedia.isActive(query);\n });\n }\n\n // ************************************************\n // Internal Methods\n // ************************************************\n\n /**\n * Register all the mediaQueries registered in the BreakPointRegistry\n * This is needed so subscribers can be auto-notified of all standard, registered\n * mediaQuery activations\n */\n private watchActivations() {\n const queries = this.breakpoints.items.map(bp => bp.mediaQuery);\n return this.buildObservable(queries);\n }\n\n /**\n * Only pass/announce activations (not de-activations)\n *\n * Since multiple-mediaQueries can be activation in a cycle,\n * gather all current activations into a single list of changes to observers\n *\n * Inject associated (if any) alias information into the MediaChange event\n * - Exclude mediaQuery activations for overlapping mQs. List bounded mQ ranges only\n * - Exclude print activations that do not have an associated mediaQuery\n *\n * NOTE: the raw MediaChange events [from MatchMedia] do not\n * contain important alias information; as such this info\n * must be injected into the MediaChange\n */\n private buildObservable(mqList: string[]): Observable<MediaChange[]> {\n const hasChanges = (changes: MediaChange[]) => {\n const isValidQuery = (change: MediaChange) => (change.mediaQuery.length > 0);\n return (changes.filter(isValidQuery).length > 0);\n };\n const excludeOverlaps = (changes: MediaChange[]) => {\n return !this.filterOverlaps ? changes : changes.filter(change => {\n const bp = this.breakpoints.findByQuery(change.mediaQuery);\n return !bp ? true : !bp.overlapping;\n });\n };\n\n /**\n */\n return this.matchMedia\n .observe(this.hook.withPrintQuery(mqList))\n .pipe(\n filter((change: MediaChange) => change.matches),\n debounceTime(0, asapScheduler),\n switchMap(_ => of(this.findAllActivations())),\n map(excludeOverlaps),\n filter(hasChanges),\n takeUntil(this.destroyed$)\n );\n }\n\n /**\n * Find all current activations and prepare single list of activations\n * sorted by descending priority.\n */\n private findAllActivations(): MediaChange[] {\n const mergeMQAlias = (change: MediaChange) => {\n let bp: OptionalBreakPoint = this.breakpoints.findByQuery(change.mediaQuery);\n return mergeAlias(change, bp);\n };\n const replaceWithPrintAlias = (change: MediaChange) => {\n return this.hook.isPrintEvent(change) ? this.hook.updateEvent(change) : change;\n };\n\n return this.matchMedia\n .activations\n .map(query => new MediaChange(true, query))\n .map(replaceWithPrintAlias)\n .map(mergeMQAlias)\n .sort(sortDescendingPriority);\n }\n\n private readonly _media$: Observable<MediaChange[]>;\n private readonly destroyed$ = new Subject<void>();\n}\n\n/**\n * Find associated breakpoint (if any)\n */\nfunction toMediaQuery(query: string, locator: BreakPointRegistry) {\n const bp = locator.findByAlias(query) || locator.findByQuery(query);\n return bp ? bp.mediaQuery : null;\n}\n\n/**\n * Split each query string into separate query strings if two queries are provided as comma\n * separated.\n */\nfunction splitQueries(queries: string[]): string[] {\n return queries.map((query: string) => query.split(','))\n .reduce((a1: string[], a2: string[]) => a1.concat(a2))\n .map(query => query.trim());\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/** Wraps the provided value in an array, unless the provided value is an array. */\nexport function coerceArray<T>(value: T | T[]): T[] {\n return Array.isArray(value) ? value : [value];\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {Inject, Injectable, OnDestroy} from '@angular/core';\n\nimport {mergeAlias} from '../add-alias';\nimport {MediaChange} from '../media-change';\nimport {BreakPoint} from '../breakpoints/break-point';\nimport {LAYOUT_CONFIG, LayoutConfigOptions} from '../tokens/library-config';\nimport {BreakPointRegistry, OptionalBreakPoint} from '../breakpoints/break-point-registry';\nimport {sortDescendingPriority} from '../utils/sort';\nimport {DOCUMENT} from '@angular/common';\n\n/**\n * Interface to apply PrintHook to call anonymous `target.updateStyles()`\n */\nexport interface HookTarget {\n activatedBreakpoints: BreakPoint[];\n updateStyles(): void;\n}\n\nconst PRINT = 'print';\nexport const BREAKPOINT_PRINT = {\n alias: PRINT,\n mediaQuery: PRINT,\n priority: 1000\n};\n\n/**\n * PrintHook - Use to intercept print MediaQuery activations and force\n * layouts to render with the specified print alias/breakpoint\n *\n * Used in MediaMarshaller and MediaObserver\n */\n@Injectable({providedIn: 'root'})\nexport class PrintHook implements OnDestroy {\n constructor(\n protected breakpoints: BreakPointRegistry,\n @Inject(LAYOUT_CONFIG) protected layoutConfig: LayoutConfigOptions,\n @Inject(DOCUMENT) protected _document: any) {\n }\n\n /** Add 'print' mediaQuery: to listen for matchMedia activations */\n withPrintQuery(queries: string[]): string[] {\n return [...queries, PRINT];\n }\n\n /** Is the MediaChange event for any 'print' @media */\n isPrintEvent(e: MediaChange): Boolean {\n return e.mediaQuery.startsWith(PRINT);\n }\n\n /** What is the desired mqAlias to use while printing? */\n get printAlias(): string[] {\n return this.layoutConfig.printWithBreakpoints || [];\n }\n\n /** Lookup breakpoints associated with print aliases. */\n get printBreakPoints(): BreakPoint[] {\n return this.printAlias\n .map(alias => this.breakpoints.findByAlias(alias))\n .filter(bp => bp !== null) as BreakPoint[];\n }\n\n /** Lookup breakpoint associated with mediaQuery */\n getEventBreakpoints({mediaQuery}: MediaChange): BreakPoint[] {\n const bp = this.breakpoints.findByQuery(mediaQuery);\n const list = bp ? [...this.printBreakPoints, bp] : this.printBreakPoints;\n\n return list.sort(sortDescendingPriority);\n }\n\n /** Update event with printAlias mediaQuery information */\n updateEvent(event: MediaChange): MediaChange {\n let bp: OptionalBreakPoint = this.breakpoints.findByQuery(event.mediaQuery);\n if (this.isPrintEvent(event)) {\n // Reset from 'print' to first (highest priority) print breakpoint\n bp = this.getEventBreakpoints(event)[0];\n event.mediaQuery = bp ? bp.mediaQuery : '';\n }\n return mergeAlias(event, bp);\n }\n\n\n // registeredBeforeAfterPrintHooks tracks if we registered the `beforeprint`\n // and `afterprint` event listeners.\n private registeredBeforeAfterPrintHooks: boolean = false;\n\n // isPrintingBeforeAfterEvent is used to track if we are printing from within\n // a `beforeprint` event handler. This prevents the typicall `stopPrinting`\n // form `interceptEvents` so that printing is not stopped while the dialog\n // is still open. This is an extension of the `isPrinting` property on\n // browsers which support `beforeprint` and `afterprint` events.\n private isPrintingBeforeAfterEvent: boolean = false;\n\n private beforePrintEventListeners: Function[] = [];\n private afterPrintEventListeners: Function[] = [];\n\n // registerBeforeAfterPrintHooks registers a `beforeprint` event hook so we can\n // trigger print styles synchronously and apply proper layout styles.\n // It is a noop if the hooks have already been registered or if the document's\n // `defaultView` is not available.\n private registerBeforeAfterPrintHooks(target: HookTarget) {\n // `defaultView` may be null when rendering on the server or in other contexts.\n if (!this._document.defaultView || this.registeredBeforeAfterPrintHooks) {\n return;\n }\n\n this.registeredBeforeAfterPrintHooks = true;\n\n const beforePrintListener = () => {\n // If we aren't already printing, start printing and update the styles as\n // if there was a regular print `MediaChange`(from matchMedia).\n if (!this.isPrinting) {\n this.isPrintingBeforeAfterEvent = true;\n this.startPrinting(target, this.getEventBreakpoints(new MediaChange(true, PRINT)));\n target.updateStyles();\n }\n };\n\n const afterPrintListener = () => {\n // If we aren't already printing, start printing and update the styles as\n // if there was a regular print `MediaChange`(from matchMedia).\n this.isPrintingBeforeAfterEvent = false;\n if (this.isPrinting) {\n this.stopPrinting(target);\n target.updateStyles();\n }\n };\n\n // Could we have teardown logic to remove if there are no print listeners being used?\n this._document.defaultView.addEventListener('beforeprint', beforePrintListener);\n this._document.defaultView.addEventListener('afterprint', afterPrintListener);\n\n this.beforePrintEventListeners.push(beforePrintListener);\n this.afterPrintEventListeners.push(afterPrintListener);\n }\n\n /**\n * Prepare RxJS filter operator with partial application\n * @return pipeable filter predicate\n */\n interceptEvents(target: HookTarget) {\n this.registerBeforeAfterPrintHooks(target);\n\n return (event: MediaChange) => {\n if (this.isPrintEvent(event)) {\n if (event.matches && !this.isPrinting) {\n this.startPrinting(target, this.getEventBreakpoints(event));\n target.updateStyles();\n\n } else if (!event.matches && this.isPrinting && !this.isPrintingBeforeAfterEvent) {\n this.stopPrinting(target);\n target.updateStyles();\n }\n } else {\n this.collectActivations(event);\n }\n };\n }\n\n /** Stop mediaChange event propagation in event streams */\n blockPropagation() {\n return (event: MediaChange): boolean => {\n return !(this.isPrinting || this.isPrintEvent(event));\n };\n }\n\n /**\n * Save current activateBreakpoints (for later restore)\n * and substitute only the printAlias breakpoint\n */\n protected startPrinting(target: HookTarget, bpList: OptionalBreakPoint[]) {\n this.isPrinting = true;\n target.activatedBreakpoints = this.queue.addPrintBreakpoints(bpList);\n }\n\n /** For any print de-activations, reset the entire print queue */\n protected stopPrinting(target: HookTarget) {\n target.activatedBreakpoints = this.deactivations;\n this.deactivations = [];\n this.queue.clear();\n this.isPrinting = false;\n }\n\n /**\n * To restore pre-Print Activations, we must capture the proper\n * list of breakpoint activations BEFORE print starts. OnBeforePrint()\n * is supported; so 'print' mediaQuery activations are used as a fallback\n * in browsers without `beforeprint` support.\n *\n * > But activated breakpoints are deactivated BEFORE 'print' activation.\n *\n * Let's capture all de-activations using the following logic:\n *\n * When not printing:\n * - clear cache when activating non-print breakpoint\n * - update cache (and sort) when deactivating\n *\n * When printing:\n * - sort and save when starting print\n * - restore as activatedTargets and clear when stop printing\n */\n collectActivations(event: MediaChange) {\n if (!this.isPrinting || this.isPrintingBeforeAfterEvent) {\n if (!event.matches) {\n const bp = this.breakpoints.findByQuery(event.mediaQuery);\n if (bp) { // Deactivating a breakpoint\n this.deactivations.push(bp);\n this.deactivations.sort(sortDescendingPriority);\n }\n } else if (!this.isPrintingBeforeAfterEvent) {\n // Only clear deactivations if we aren't printing from a `beforeprint` event.\n // Otherwise this will clear before `stopPrinting()` is called to restore\n // the pre-Print Activations.\n this.deactivations = [];\n }\n }\n }\n\n /** Teardown logic for the service. */\n ngOnDestroy() {\n this.beforePrintEventListeners.forEach(l => this._document.defaultView.removeEventListener('beforeprint', l));\n this.afterPrintEventListeners.forEach(l => this._document.defaultView.removeEventListener('afterprint', l));\n }\n\n /** Is this service currently in Print-mode ? */\n private isPrinting = false;\n private queue: PrintQueue = new PrintQueue();\n private deactivations: BreakPoint[] = [];\n\n}\n\n// ************************************************************************\n// Internal Utility class 'PrintQueue'\n// ************************************************************************\n\n/**\n * Utility class to manage print breakpoints + activatedBreakpoints\n * with correct sorting WHILE printing\n */\nclass PrintQueue {\n /** Sorted queue with prioritized print breakpoints */\n printBreakpoints: BreakPoint[] = [];\n\n addPrintBreakpoints(bpList: OptionalBreakPoint[]): BreakPoint[] {\n bpList.push(BREAKPOINT_PRINT);\n bpList.sort(sortDescendingPriority);\n bpList.forEach(bp => this.addBreakpoint(bp));\n\n return this.printBreakpoints;\n }\n\n /** Add Print breakpoint to queue */\n addBreakpoint(bp: OptionalBreakPoint) {\n if (!!bp) {\n const bpInList = this.printBreakpoints.find(it => it.mediaQuery === bp.mediaQuery);\n if (bpInList === undefined) {\n // If this is a `printAlias` breakpoint, then append. If a true 'print' breakpoint,\n // register as highest priority in the queue\n this.printBreakpoints = isPrintBreakPoint(bp) ? [bp, ...this.printBreakpoints]\n : [...this.printBreakpoints, bp];\n }\n }\n }\n\n /** Restore original activated breakpoints and clear internal caches */\n clear() {\n this.printBreakpoints = [];\n }\n}\n\n// ************************************************************************\n// Internal Utility methods\n// ************************************************************************\n\n/** Only support intercept queueing if the Breakpoint is a print @media query */\nfunction isPrintBreakPoint(bp: OptionalBreakPoint) {\n return bp ? bp.mediaQuery.startsWith(PRINT) : false;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {Inject, Injectable, NgZone, PLATFORM_ID} from '@angular/core';\nimport {DOCUMENT} from '@angular/common';\n\nimport {MatchMedia} from '../match-media';\nimport {BreakPointRegistry} from '../../breakpoints/break-point-registry';\n\n/**\n * MockMatchMedia mocks calls to the Window API matchMedia with a build of a simulated\n * MockMediaQueryListener. Methods are available to simulate an activation of a mediaQuery\n * range and to clearAll mediaQuery listeners.\n */\n@Injectable()\nexport class MockMatchMedia extends MatchMedia {\n\n\n autoRegisterQueries = true; // Used for testing BreakPoint registrations\n useOverlaps = false; // Allow fallback to overlapping mediaQueries\n\n constructor(_zone: NgZone,\n @Inject(PLATFORM_ID) _platformId: Object,\n @Inject(DOCUMENT) _document: any,\n private _breakpoints: BreakPointRegistry) {\n super(_zone, _platformId, _document);\n }\n\n /** Easy method to clear all listeners for all mediaQueries */\n clearAll() {\n this.registry.forEach((mql: MediaQueryList) => {\n (mql as MockMediaQueryList).destroy();\n });\n this.registry.clear();\n this.useOverlaps = false;\n }\n\n /** Feature to support manual, simulated activation of a mediaQuery. */\n activate(mediaQuery: string, useOverlaps = false): boolean {\n useOverlaps = useOverlaps || this.useOverlaps;\n mediaQuery = this._validateQuery(mediaQuery);\n\n if (useOverlaps || !this.isActive(mediaQuery)) {\n this._deactivateAll();\n\n this._registerMediaQuery(mediaQuery);\n this._activateWithOverlaps(mediaQuery, useOverlaps);\n }\n\n return this.hasActivated;\n }\n\n /** Converts an optional mediaQuery alias to a specific, valid mediaQuery */\n _validateQuery(queryOrAlias: string) {\n const bp = this._breakpoints.findByAlias(queryOrAlias);\n return (bp && bp.mediaQuery) || queryOrAlias;\n }\n\n /**\n * Manually onMediaChange any overlapping mediaQueries to simulate\n * similar functionality in the window.matchMedia()\n */\n private _activateWithOverlaps(mediaQuery: string, useOverlaps: boolean): boolean {\n if (useOverlaps) {\n const bp = this._breakpoints.findByQuery(mediaQuery);\n const alias = bp ? bp.alias : 'unknown';\n\n // Simulate activation of overlapping lt-<XXX> ranges\n switch (alias) {\n case 'lg' :\n this._activateByAlias(['lt-xl']);\n break;\n case 'md' :\n this._activateByAlias(['lt-xl', 'lt-lg']);\n break;\n case 'sm' :\n this._activateByAlias(['lt-xl', 'lt-lg', 'lt-md']);\n break;\n case 'xs' :\n this._activateByAlias(['lt-xl', 'lt-lg', 'lt-md', 'lt-sm']);\n break;\n }\n\n // Simulate activation of overlapping gt-<xxxx> mediaQuery ranges\n switch (alias) {\n case 'xl' :\n this._activateByAlias(['gt-lg', 'gt-md', 'gt-sm', 'gt-xs']);\n break;\n case 'lg' :\n this._activateByAlias(['gt-md', 'gt-sm', 'gt-xs']);\n break;\n case 'md' :\n this._activateByAlias(['gt-sm', 'gt-xs']);\n break;\n case 'sm' :\n this._activateByAlias(['gt-xs']);\n break;\n }\n }\n\n // Activate last since the responsiveActivation is watching *this* mediaQuery\n return this._activateByQuery(mediaQuery);\n }\n\n /**\n *\n */\n private _activateByAlias(aliases: string[]) {\n const activate = (alias: string) => {\n const bp = this._breakpoints.findByAlias(alias);\n this._activateByQuery(bp ? bp.mediaQuery : alias);\n };\n aliases.forEach(activate);\n }\n\n /**\n *\n */\n private _activateByQuery(mediaQuery: string) {\n if (!this.registry.has(mediaQuery) && this.autoRegisterQueries) {\n this._registerMediaQuery(mediaQuery);\n }\n const mql: MockMediaQueryList = this.registry.get(mediaQuery) as MockMediaQueryList;\n\n if (mql && !this.isActive(mediaQuery)) {\n this.registry.set(mediaQuery, mql.activate());\n }\n return this.hasActivated;\n }\n\n /** Deactivate all current MQLs and reset the buffer */\n private _deactivateAll() {\n this.registry.forEach((it: MediaQueryList) => {\n (it as MockMediaQueryList).deactivate();\n });\n return this;\n }\n\n /** Insure the mediaQuery is registered with MatchMedia */\n private _registerMediaQuery(mediaQuery: string) {\n if (!this.registry.has(mediaQuery) && this.autoRegisterQueries) {\n this.registerQuery(mediaQuery);\n }\n }\n\n /**\n * Call window.matchMedia() to build a MediaQueryList; which\n * supports 0..n listeners for activation/deactivation\n */\n protected buildMQL(query: string): MediaQueryList {\n return new MockMediaQueryList(query);\n }\n\n protected get hasActivated() {\n return this.activations.length > 0;\n }\n\n}\n\n/**\n * Special internal class to simulate a MediaQueryList and\n * - supports manual activation to simulate mediaQuery matching\n * - manages listeners\n */\nexport class MockMediaQueryList implements MediaQueryList {\n private _isActive = false;\n private _listeners: MediaQueryListListener[] = [];\n\n get matches(): boolean {\n return this._isActive;\n }\n\n get media(): string {\n return this._mediaQuery;\n }\n\n constructor(private _mediaQuery: string) {\n }\n\n /**\n * Destroy the current list by deactivating the\n * listeners and clearing the internal list\n */\n destroy() {\n this.deactivate();\n this._listeners = [];\n }\n\n /** Notify all listeners that 'matches === TRUE' */\n activate(): MockMediaQueryList {\n if (!this._isActive) {\n this._isActive = true;\n this._listeners.forEach((callback) => {\n const cb: ((this: MediaQueryList, ev: MediaQueryListEvent) => any) = callback!;\n cb.call(this, {matches: this.matches, media: this.media} as MediaQueryListEvent);\n });\n }\n return this;\n }\n\n /** Notify all listeners that 'matches === false' */\n deactivate(): MockMediaQueryList {\n if (this._isActive) {\n this._isActive = false;\n this._listeners.forEach((callback) => {\n const cb: ((this: MediaQueryList, ev: MediaQueryListEvent) => any) = callback!;\n cb.call(this, {matches: this.matches, media: this.media} as MediaQueryListEvent);\n });\n }\n return this;\n }\n\n /** Add a listener to our internal list to activate later */\n addListener(listener: MediaQueryListListener) {\n if (this._listeners.indexOf(listener) === -1) {\n this._listeners.push(listener);\n }\n if (this._isActive) {\n const cb: ((this: MediaQueryList, ev: MediaQueryListEvent) => any) = listener!;\n cb.call(this, {matches: this.matches, media: this.media} as MediaQueryListEvent);\n }\n }\n\n /** Don't need to remove listeners in the testing environment */\n removeListener(_: MediaQueryListListener | null) {\n }\n\n addEventListener<K extends keyof MediaQueryListEventMap>(\n _: K,\n __: (this: MediaQueryList,\n ev: MediaQueryListEventMap[K]) => any,\n ___?: boolean | AddEventListenerOptions): void;\n\n addEventListener(\n _: string,\n __: EventListenerOrEventListenerObject,\n ___?: boolean | AddEventListenerOptions) {\n }\n\n removeEventListener<K extends keyof MediaQueryListEventMap>(\n _: K,\n __: (this: MediaQueryList,\n ev: MediaQueryListEventMap[K]) => any,\n ___?: boolean | EventListenerOptions): void;\n\n removeEventListener(\n _: string,\n __: EventListenerOrEventListenerObject,\n ___?: boolean | EventListenerOptions) {\n }\n\n dispatchEvent(_: Event): boolean {\n return false;\n }\n\n onchange: MediaQueryListListener = null;\n}\n\n/**\n * Pre-configured provider for MockMatchMedia\n */\nexport const MockMatchMediaProvider = { // tslint:disable-line:variable-name\n provide: MatchMedia,\n useClass: MockMatchMedia\n};\n\ntype MediaQueryListListener = ((this: MediaQueryList, ev: MediaQueryListEvent) => any) | null;\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {Inject, Injectable, NgZone, OnDestroy, PLATFORM_ID} from '@angular/core';\nimport {DOCUMENT, isPlatformBrowser} from '@angular/common';\nimport {BehaviorSubject, Observable, merge, Observer} from 'rxjs';\nimport {filter} from 'rxjs/operators';\n\nimport {MediaChange} from '../media-change';\n\n/**\n * MediaMonitor configures listeners to mediaQuery changes and publishes an Observable facade to\n * convert mediaQuery change callbacks to subscriber notifications. These notifications will be\n * performed within the ng Zone to trigger change detections and component updates.\n *\n * NOTE: both mediaQuery activations and de-activations are announced in notifications\n */\n@Injectable({providedIn: 'root'})\nexport class MatchMedia implements OnDestroy {\n /** Initialize source with 'all' so all non-responsive APIs trigger style updates */\n readonly source = new BehaviorSubject<MediaChange>(new MediaChange(true));\n registry = new Map<string, MediaQueryList>();\n private readonly pendingRemoveListenerFns: Array<() => void> = [];\n\n constructor(protected _zone: NgZone,\n @Inject(PLATFORM_ID) protected _platformId: Object,\n @Inject(DOCUMENT) protected _document: any) {\n }\n\n /**\n * Publish list of all current activations\n */\n get activations(): string[] {\n const results: string[] = [];\n this.registry.forEach((mql: MediaQueryList, key: string) => {\n if (mql.matches) {\n results.push(key);\n }\n });\n return results;\n }\n\n /**\n * For the specified mediaQuery?\n */\n isActive(mediaQuery: string): boolean {\n const mql = this.registry.get(mediaQuery);\n return !!mql ? mql.matches : this.registerQuery(mediaQuery).some(m => m.matches);\n }\n\n /**\n * External observers can watch for all (or a specific) mql changes.\n *\n * If a mediaQuery is not specified, then ALL mediaQuery activations will\n * be announced.\n */\n observe(): Observable<MediaChange>;\n observe(mediaQueries: string[]): Observable<MediaChange>;\n observe(mediaQueries: string[], filterOthers: boolean): Observable<MediaChange>;\n\n /**\n * External observers can watch for all (or a specific) mql changes.\n * Typically used by the MediaQueryAdaptor; optionally available to components\n * who wish to use the MediaMonitor as mediaMonitor$ observable service.\n *\n * Use deferred registration process to register breakpoints only on subscription\n * This logic also enforces logic to register all mediaQueries BEFORE notify\n * subscribers of notifications.\n */\n observe(mqList?: string[], filterOthers = false): Observable<MediaChange> {\n if (mqList && mqList.length) {\n const matchMedia$: Observable<MediaChange> = this._observable$.pipe(\n filter((change: MediaChange) =>\n !filterOthers ? true : (mqList.indexOf(change.mediaQuery) > -1))\n );\n const registration$: Observable<MediaChange> = new Observable((observer: Observer<MediaChange>) => { // tslint:disable-line:max-line-length\n const matches: Array<MediaChange> = this.registerQuery(mqList);\n if (matches.length) {\n const lastChange = matches.pop()!;\n matches.forEach((e: MediaChange) => {\n observer.next(e);\n });\n this.source.next(lastChange); // last match is cached\n }\n observer.complete();\n });\n return merge(registration$, matchMedia$);\n }\n\n return this._observable$;\n }\n\n /**\n * Based on the BreakPointRegistry provider, register internal listeners for each unique\n * mediaQuery. Each listener emits specific MediaChange data to observers\n */\n registerQuery(mediaQuery: string | string[]) {\n const list = Array.isArray(mediaQuery) ? mediaQuery : [mediaQuery];\n const matches: MediaChange[] = [];\n\n buildQueryCss(list, this._document);\n\n list.forEach((query: string) => {\n const onMQLEvent = (e: MediaQueryListEvent) => {\n this._zone.run(() => this.source.next(new MediaChange(e.matches, query)));\n };\n\n let mql = this.registry.get(query);\n if (!mql) {\n mql = this.buildMQL(query);\n mql.addListener(onMQLEvent);\n this.pendingRemoveListenerFns.push(() => mql!.removeListener(onMQLEvent));\n this.registry.set(query, mql);\n }\n\n if (mql.matches) {\n matches.push(new MediaChange(true, query));\n }\n });\n\n return matches;\n }\n\n ngOnDestroy(): void {\n let fn;\n while (fn = this.pendingRemoveListenerFns.pop()) {\n fn();\n }\n }\n\n /**\n * Call window.matchMedia() to build a MediaQueryList; which\n * supports 0..n listeners for activation/deactivation\n */\n protected buildMQL(query: string): MediaQueryList {\n return constructMql(query, isPlatformBrowser(this._platformId));\n }\n\n protected _observable$ = this.source.asObservable();\n}\n\n/**\n * Private global registry for all dynamically-created, injected style tags\n * @see prepare(query)\n */\nconst ALL_STYLES: { [key: string]: any } = {};\n\n/**\n * For Webkit engines that only trigger the MediaQueryList Listener\n * when there is at least one CSS selector for the respective media query.\n *\n * @param mediaQueries\n * @param _document\n */\nfunction buildQueryCss(mediaQueries: string[], _document: Document) {\n const list = mediaQueries.filter(it => !ALL_STYLES[it]);\n if (list.length > 0) {\n const query = list.join(', ');\n\n try {\n const styleEl = _document.createElement('style');\n\n styleEl.setAttribute('type', 'text/css');\n if (!(styleEl as any).styleSheet) {\n const cssText = `\n/*\n @angular/flex-layout - workaround for possible browser quirk with mediaQuery listeners\n see http://bit.ly/2sd4HMP\n*/\n@media ${query} {.fx-query-test{ }}\n`;\n styleEl.appendChild(_document.createTextNode(cssText));\n }\n\n _document.head!.appendChild(styleEl);\n\n // Store in private global registry\n list.forEach(mq => ALL_STYLES[mq] = styleEl);\n\n } catch (e) {\n console.error(e);\n }\n }\n}\n\nfunction constructMql(query: string, isBrowser: boolean): MediaQueryList {\n const canListen = isBrowser && !!(<Window>window).matchMedia('all').addListener;\n\n return canListen ? (<Window>window).matchMedia(query) : {\n matches: query === 'all' || query === '',\n media: query,\n addListener: () => {\n },\n removeListener: () => {\n },\n onchange: null,\n addEventListener() {\n },\n removeEventListener() {\n },\n dispatchEvent() {\n return false;\n }\n } as MediaQueryList;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {Injectable, Inject} from '@angular/core';\n\nimport {BreakPoint} from './break-point';\nimport {BREAKPOINTS} from './break-points-token';\nimport {sortAscendingPriority} from '../utils/sort';\n\nexport type OptionalBreakPoint = BreakPoint | null;\n\n/**\n * Registry of 1..n MediaQuery breakpoint ranges\n * This is published as a provider and may be overridden from custom, application-specific ranges\n *\n */\n@Injectable({providedIn: 'root'})\nexport class BreakPointRegistry {\n readonly items: BreakPoint[];\n\n constructor(@Inject(BREAKPOINTS) list: BreakPoint[]) {\n this.items = [...list].sort(sortAscendingPriority);\n }\n\n /**\n * Search breakpoints by alias (e.g. gt-xs)\n */\n findByAlias(alias: string): OptionalBreakPoint {\n return !alias ? null : this.findWithPredicate(alias, (bp) => bp.alias == alias);\n }\n\n findByQuery(query: string): OptionalBreakPoint {\n return this.findWithPredicate(query, (bp) => bp.mediaQuery == query);\n }\n\n /**\n * Get all the breakpoints whose ranges could overlapping `normal` ranges;\n * e.g. gt-sm overlaps md, lg, and xl\n */\n get overlappings(): BreakPoint[] {\n return this.items.filter(it => it.overlapping == true);\n }\n\n /**\n * Get list of all registered (non-empty) breakpoint aliases\n */\n get aliases(): string[] {\n return this.items.map(it => it.alias);\n }\n\n /**\n * Aliases are mapped to properties using suffixes\n * e.g. 'gt-sm' for property 'layout' uses suffix 'GtSm'\n * for property layoutGtSM.\n */\n get suffixes(): string[] {\n return this.items.map(it => !!it.suffix ? it.suffix : '');\n }\n\n /**\n * Memoized lookup using custom predicate function\n */\n private findWithPredicate(key: string,\n searchFn: (bp: BreakPoint) => boolean): OptionalBreakPoint {\n let response = this.findByMap.get(key);\n if (!response) {\n response = this.items.find(searchFn) || null;\n this.findByMap.set(key, response);\n }\n return response || null;\n\n }\n\n /**\n * Memoized BreakPoint Lookups\n */\n private readonly findByMap = new Map<String, OptionalBreakPoint>();\n}\n\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\ninterface WithPriority {\n priority?: number;\n}\n\n/** HOF to sort the breakpoints by descending priority */\nexport function sortDescendingPriority<T extends WithPriority>(a: T | null, b: T | null): number {\n const priorityA = a ? a.priority || 0 : 0;\n const priorityB = b ? b.priority || 0 : 0;\n return priorityB - priorityA;\n}\n\n/** HOF to sort the breakpoints by ascending priority */\nexport function sortAscendingPriority<T extends WithPriority>(a: T, b: T): number {\n const pA = a.priority || 0;\n const pB = b.priority || 0;\n return pA - pB;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {inject, InjectionToken} from '@angular/core';\nimport {BreakPoint} from './break-point';\nimport {BREAKPOINT} from '../tokens/breakpoint-token';\nimport {DEFAULT_BREAKPOINTS} from '../breakpoints/data/break-points';\nimport {ORIENTATION_BREAKPOINTS} from '../breakpoints/data/orientation-break-points';\nimport {mergeByAlias} from '../breakpoints/breakpoint-tools';\nimport {LAYOUT_CONFIG} from '../tokens/library-config';\n\n/**\n * Injection token unique to the flex-layout library.\n * Use this token when build a custom provider (see below).\n */\nexport const BREAKPOINTS =\n new InjectionToken<BreakPoint[]>('Token (@angular/flex-layout) Breakpoints', {\n providedIn: 'root',\n factory: () => {\n const breakpoints: any = inject(BREAKPOINT);\n const layoutConfig = inject(LAYOUT_CONFIG);\n const bpFlattenArray: BreakPoint[] = [].concat.apply([], (breakpoints || [])\n .map((v: BreakPoint | BreakPoint[]) => Array.isArray(v) ? v : [v]));\n const builtIns = (layoutConfig.disableDefaultBps ? [] : DEFAULT_BREAKPOINTS)\n .concat(layoutConfig.addOrientationBps ? ORIENTATION_BREAKPOINTS : []);\n\n return mergeByAlias(builtIns, bpFlattenArray);\n }\n });\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {BreakPoint} from './break-point';\nimport {extendObject} from '../../utils/object-extend';\n\nconst ALIAS_DELIMITERS = /(\\.|-|_)/g;\nfunction firstUpperCase(part: string) {\n let first = part.length > 0 ? part.charAt(0) : '';\n let remainder = (part.length > 1) ? part.slice(1) : '';\n return first.toUpperCase() + remainder;\n}\n\n/**\n * Converts snake-case to SnakeCase.\n * @param name Text to UpperCamelCase\n */\nfunction camelCase(name: string): string {\n return name\n .replace(ALIAS_DELIMITERS, '|')\n .split('|')\n .map(firstUpperCase)\n .join('');\n}\n\n/**\n * For each breakpoint, ensure that a Suffix is defined;\n * fallback to UpperCamelCase the unique Alias value\n */\nexport function validateSuffixes(list: BreakPoint[]): BreakPoint[] {\n list.forEach((bp: BreakPoint) => {\n if (!bp.suffix) {\n bp.suffix = camelCase(bp.alias); // create Suffix value based on alias\n bp.overlapping = !!bp.overlapping; // ensure default value\n }\n });\n return list;\n}\n\n/**\n * Merge a custom breakpoint list with the default list based on unique alias values\n * - Items are added if the alias is not in the default list\n * - Items are merged with the custom override if the alias exists in the default list\n */\nexport function mergeByAlias(defaults: BreakPoint[], custom: BreakPoint[] = []): BreakPoint[] {\n const dict: {[key: string]: BreakPoint} = {};\n defaults.forEach(bp => {\n dict[bp.alias] = bp;\n });\n // Merge custom breakpoints\n custom.forEach((bp: BreakPoint) => {\n if (dict[bp.alias]) {\n extendObject(dict[bp.alias], bp);\n } else {\n dict[bp.alias] = bp;\n }\n });\n\n return validateSuffixes(Object.keys(dict).map(k => dict[k]));\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n/**\n * Extends an object with the *enumerable* and *own* properties of one or more source objects,\n * similar to Object.assign.\n *\n * @param dest The object which will have properties copied to it.\n * @param sources The source objects from which properties will be copied.\n */\nexport function extendObject(dest: any, ...sources: any[]): any {\n if (dest == null) {\n throw TypeError('Cannot convert undefined or null to object');\n }\n\n for (let source of sources) {\n if (source != null) {\n for (let key in source) {\n if (source.hasOwnProperty(key)) {\n dest[key] = source[key];\n }\n }\n }\n }\n\n return dest;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {BreakPoint} from '../break-point';\n\n/* tslint:disable */\nconst HANDSET_PORTRAIT = '(orientation: portrait) and (max-width: 599.98px)';\nconst HANDSET_LANDSCAPE = '(orientation: landscape) and (max-width: 959.98px)';\n\nconst TABLET_PORTRAIT = '(orientation: portrait) and (min-width: 600px) and (max-width: 839.98px)';\nconst TABLET_LANDSCAPE = '(orientation: landscape) and (min-width: 960px) and (max-width: 1279.98px)';\n\nconst WEB_PORTRAIT = '(orientation: portrait) and (min-width: 840px)';\nconst WEB_LANDSCAPE = '(orientation: landscape) and (min-width: 1280px)';\n\nexport const ScreenTypes = {\n 'HANDSET' : `${HANDSET_PORTRAIT}, ${HANDSET_LANDSCAPE}`,\n 'TABLET' : `${TABLET_PORTRAIT} , ${TABLET_LANDSCAPE}`,\n 'WEB' : `${WEB_PORTRAIT}, ${WEB_LANDSCAPE} `,\n\n 'HANDSET_PORTRAIT' : `${HANDSET_PORTRAIT}`,\n 'TABLET_PORTRAIT' : `${TABLET_PORTRAIT} `,\n 'WEB_PORTRAIT' : `${WEB_PORTRAIT}`,\n\n 'HANDSET_LANDSCAPE' : `${HANDSET_LANDSCAPE}`,\n 'TABLET_LANDSCAPE' : `${TABLET_LANDSCAPE}`,\n 'WEB_LANDSCAPE' : `${WEB_LANDSCAPE}`\n};\n\n/**\n * Extended Breakpoints for handset/tablets with landscape or portrait orientations\n */\nexport const ORIENTATION_BREAKPOINTS : BreakPoint[] = [\n {'alias': 'handset', priority: 2000, 'mediaQuery': ScreenTypes.HANDSET},\n {'alias': 'handset.landscape', priority: 2000, 'mediaQuery': ScreenTypes.HANDSET_LANDSCAPE},\n {'alias': 'handset.portrait', priority: 2000, 'mediaQuery': ScreenTypes.HANDSET_PORTRAIT},\n\n {'alias': 'tablet', priority: 2100, 'mediaQuery': ScreenTypes.TABLET},\n {'alias': 'tablet.landscape', priority: 2100, 'mediaQuery': ScreenTypes.TABLET_LANDSCAPE},\n {'alias': 'tablet.portrait', priority: 2100, 'mediaQuery': ScreenTypes.TABLET_PORTRAIT},\n\n {'alias': 'web', priority: 2200, 'mediaQuery': ScreenTypes.WEB, overlapping : true },\n {'alias': 'web.landscape', priority: 2200, 'mediaQuery': ScreenTypes.WEB_LANDSCAPE, overlapping : true },\n {'alias': 'web.portrait', priority: 2200, 'mediaQuery': ScreenTypes.WEB_PORTRAIT, overlapping : true }\n];\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {BreakPoint} from '../break-point';\n\n/**\n * NOTE: Smaller ranges have HIGHER priority since the match is more specific\n */\nexport const DEFAULT_BREAKPOINTS: BreakPoint[] = [\n {\n alias: 'xs',\n mediaQuery: 'screen and (min-width: 0px) and (max-width: 599.98px)',\n priority: 1000,\n },\n {\n alias: 'sm',\n mediaQuery: 'screen and (min-width: 600px) and (max-width: 959.98px)',\n priority: 900,\n },\n {\n alias: 'md',\n mediaQuery: 'screen and (min-width: 960px) and (max-width: 1279.98px)',\n priority: 800,\n },\n {\n alias: 'lg',\n mediaQuery: 'screen and (min-width: 1280px) and (max-width: 1919.98px)',\n priority: 700,\n },\n {\n alias: 'xl',\n mediaQuery: 'screen and (min-width: 1920px) and (max-width: 4999.98px)',\n priority: 600,\n },\n {\n alias: 'lt-sm',\n overlapping: true,\n mediaQuery: 'screen and (max-width: 599.98px)',\n priority: 950,\n },\n {\n alias: 'lt-md',\n overlapping: true,\n mediaQuery: 'screen and (max-width: 959.98px)',\n priority: 850,\n },\n {\n alias: 'lt-lg',\n overlapping: true,\n mediaQuery: 'screen and (max-width: 1279.98px)',\n priority: 750,\n },\n {\n alias: 'lt-xl',\n overlapping: true,\n priority: 650,\n mediaQuery: 'screen and (max-width: 1919.98px)',\n },\n {\n alias: 'gt-xs',\n overlapping: true,\n mediaQuery: 'screen and (min-width: 600px)',\n priority: -950,\n },\n {\n alias: 'gt-sm',\n overlapping: true,\n mediaQuery: 'screen and (min-width: 960px)',\n priority: -850,\n }, {\n alias: 'gt-md',\n overlapping: true,\n mediaQuery: 'screen and (min-width: 1280px)',\n priority: -750,\n },\n {\n alias: 'gt-lg',\n overlapping: true,\n mediaQuery: 'screen and (min-width: 1920px)',\n priority: -650,\n }\n];\n\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {ElementRef, OnChanges, OnDestroy, SimpleChanges} from '@angular/core';\nimport {Observable, Subject} from 'rxjs';\n\nimport {StyleDefinition, StyleUtils} from '../style-utils/style-utils';\nimport {StyleBuilder} from '../style-builder/style-builder';\nimport {MediaMarshaller} from '../media-marshaller/media-marshaller';\nimport {buildLayoutCSS} from '../../utils/layout-validator';\n\nexport abstract class BaseDirective2 implements OnChanges, OnDestroy {\n\n protected DIRECTIVE_KEY = '';\n protected inputs: string[] = [];\n /** The most recently used styles for the builder */\n protected mru: StyleDefinition = {};\n protected destroySubject: Subject<void> = new Subject();\n protected currentValue: any;\n\n /** Access to host element's parent DOM node */\n protected get parentElement(): HTMLElement | null {\n return this.elementRef.nativeElement.parentElement;\n }\n\n /** Access to the HTMLElement for the directive */\n protected get nativeElement(): HTMLElement {\n return this.elementRef.nativeElement;\n }\n\n /** Access to the activated value for the directive */\n get activatedValue(): string {\n return this.marshal.getValue(this.nativeElement, this.DIRECTIVE_KEY);\n }\n set activatedValue(value: string) {\n this.marshal.setValue(this.nativeElement, this.DIRECTIVE_KEY, value,\n this.marshal.activatedAlias);\n }\n\n /** Cache map for style computation */\n protected styleCache: Map<string, StyleDefinition> = new Map();\n\n protected constructor(protected elementRef: ElementRef,\n protected styleBuilder: StyleBuilder,\n protected styler: StyleUtils,\n protected marshal: MediaMarshaller) {\n }\n\n /** For @Input changes */\n ngOnChanges(changes: SimpleChanges) {\n Object.keys(changes).forEach(key => {\n if (this.inputs.indexOf(key) !== -1) {\n const bp = key.split('.').slice(1).join('.');\n const val = changes[key].currentValue;\n this.setValue(val, bp);\n }\n });\n }\n\n ngOnDestroy(): void {\n this.destroySubject.next();\n this.destroySubject.complete();\n this.marshal.releaseElement(this.nativeElement);\n }\n\n /** Register with central marshaller service */\n protected init(extraTriggers: Observable<any>[] = []): void {\n this.marshal.init(\n this.elementRef.nativeElement,\n this.DIRECTIVE_KEY,\n this.updateWithValue.bind(this),\n this.clearStyles.bind(this),\n extraTriggers\n );\n }\n\n /** Add styles to the element using predefined style builder */\n protected addStyles(input: string, parent?: Object) {\n const builder = this.styleBuilder;\n const useCache = builder.shouldCache;\n\n let genStyles: StyleDefinition | undefined = this.styleCache.get(input);\n\n if (!genStyles || !useCache) {\n genStyles = builder.buildStyles(input, parent);\n if (useCache) {\n this.styleCache.set(input, genStyles);\n }\n }\n\n this.mru = {...genStyles};\n this.applyStyleToElement(genStyles);\n builder.sideEffect(input, genStyles, parent);\n }\n\n /** Remove generated styles from an element using predefined style builder */\n protected clearStyles() {\n Object.keys(this.mru).forEach(k => {\n this.mru[k] = '';\n });\n this.applyStyleToElement(this.mru);\n this.mru = {};\n }\n\n /** Force trigger style updates on DOM element */\n protected triggerUpdate() {\n this.marshal.triggerUpdate(this.nativeElement, this.DIRECTIVE_KEY);\n }\n\n /**\n * Determine the DOM element's Flexbox flow (flex-direction).\n *\n * Check inline style first then check computed (stylesheet) style.\n * And optionally add the flow value to element's inline style.\n */\n protected getFlexFlowDirection(target: HTMLElement, addIfMissing = false): string {\n if (target) {\n const [value, hasInlineValue] = this.styler.getFlowDirection(target);\n\n if (!hasInlineValue && addIfMissing) {\n const style = buildLayoutCSS(value);\n const elements = [target];\n this.styler.applyStyleToElements(style, elements);\n }\n\n return value.trim();\n }\n\n return 'row';\n }\n\n protected hasWrap(target: HTMLElement): boolean {\n return this.styler.hasWrap(target);\n }\n\n /** Applies styles given via string pair or object map to the directive element */\n protected applyStyleToElement(style: StyleDefinition,\n value?: string | number,\n element: HTMLElement = this.nativeElement) {\n this.styler.applyStyleToElement(element, style, value);\n }\n\n protected setValue(val: any, bp: string): void {\n this.marshal.setValue(this.nativeElement, this.DIRECTIVE_KEY, val, bp);\n }\n\n protected updateWithValue(input: string) {\n if (this.currentValue !== input) {\n this.addStyles(input);\n this.currentValue = input;\n }\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nexport const INLINE = 'inline';\nexport const LAYOUT_VALUES = ['row', 'column', 'row-reverse', 'column-reverse'];\n\n/**\n * Validate the direction|'direction wrap' value and then update the host's inline flexbox styles\n */\nexport function buildLayoutCSS(value: string) {\n let [direction, wrap, isInline] = validateValue(value);\n return buildCSS(direction, wrap, isInline);\n }\n\n/**\n * Validate the value to be one of the acceptable value options\n * Use default fallback of 'row'\n */\nexport function validateValue(value: string): [string, string, boolean] {\n value = value ? value.toLowerCase() : '';\n let [direction, wrap, inline] = value.split(' ');\n\n // First value must be the `flex-direction`\n if (!LAYOUT_VALUES.find(x => x === direction)) {\n direction = LAYOUT_VALUES[0];\n }\n\n if (wrap === INLINE) {\n wrap = (inline !== INLINE) ? inline : '';\n inline = INLINE;\n }\n\n return [direction, validateWrapValue(wrap), !!inline];\n}\n\n/**\n * Determine if the validated, flex-direction value specifies\n * a horizontal/row flow.\n */\nexport function isFlowHorizontal(value: string): boolean {\n let [flow, ] = validateValue(value);\n return flow.indexOf('row') > -1;\n}\n\n/**\n * Convert layout-wrap='<value>' to expected flex-wrap style\n */\nexport function validateWrapValue(value: string) {\n if (!!value) {\n switch (value.toLowerCase()) {\n case 'reverse':\n case 'wrap-reverse':\n case 'reverse-wrap':\n value = 'wrap-reverse';\n break;\n\n case 'no':\n case 'none':\n case 'nowrap':\n value = 'nowrap';\n break;\n\n // All other values fallback to 'wrap'\n default:\n value = 'wrap';\n break;\n }\n }\n return value;\n}\n\n/**\n * Build the CSS that should be assigned to the element instance\n * BUG:\n * 1) min-height on a column flex container won’t apply to its flex item children in IE 10-11.\n * Use height instead if possible; height : <xxx>vh;\n *\n * This way any padding or border specified on the child elements are\n * laid out and drawn inside that element's specified width and height.\n */\nfunction buildCSS(direction: string, wrap: string | null = null, inline = false) {\n return {\n 'display': inline ? 'inline-flex' : 'flex',\n 'box-sizing': 'border-box',\n 'flex-direction': direction,\n 'flex-wrap': !!wrap ? wrap : null\n };\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {MediaChange} from './media-change';\nimport {BreakPoint} from './breakpoints/break-point';\n\n/**\n * For the specified MediaChange, make sure it contains the breakpoint alias\n * and suffix (if available).\n */\nexport function mergeAlias(dest: MediaChange, source: BreakPoint | null): MediaChange {\n dest = dest ? dest.clone() : new MediaChange();\n if (source) {\n dest.mqAlias = source.alias;\n dest.mediaQuery = source.mediaQuery;\n dest.suffix = source.suffix as string;\n dest.priority = source.priority as number;\n }\n return dest;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {InjectionToken} from '@angular/core';\nimport {BreakPoint} from '../breakpoints/break-point';\n\nexport const BREAKPOINT = new InjectionToken<BreakPoint|BreakPoint[]|null>(\n 'Flex Layout token, collect all breakpoints into one provider', {\n providedIn: 'root',\n factory: () => null\n });\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {InjectionToken} from '@angular/core';\n\n/**\n * Token that is provided to tell whether the FlexLayoutServerModule\n * has been included in the bundle\n *\n * NOTE: This can be manually provided to disable styles when using SSR\n */\nexport const SERVER_TOKEN = new InjectionToken<boolean>(\n 'FlexLayoutServerLoaded', {\n providedIn: 'root',\n factory: () => false\n });\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {InjectionToken} from '@angular/core';\n\n/** a set of configuration options for FlexLayoutModule */\nexport interface LayoutConfigOptions {\n addFlexToParent?: boolean;\n addOrientationBps?: boolean;\n disableDefaultBps?: boolean;\n disableVendorPrefixes?: boolean;\n serverLoaded?: boolean;\n useColumnBasisZero?: boolean;\n printWithBreakpoints?: string[];\n mediaTriggerAutoRestore?: boolean;\n ssrObserveBreakpoints?: string[];\n}\n\nexport const DEFAULT_CONFIG: LayoutConfigOptions = {\n addFlexToParent: true,\n addOrientationBps: false,\n disableDefaultBps: false,\n disableVendorPrefixes: false,\n serverLoaded: false,\n useColumnBasisZero: true,\n printWithBreakpoints: [],\n mediaTriggerAutoRestore: true,\n ssrObserveBreakpoints: [],\n};\n\nexport const LAYOUT_CONFIG = new InjectionToken<LayoutConfigOptions>(\n 'Flex Layout token, config options for the library', {\n providedIn: 'root',\n factory: () => DEFAULT_CONFIG\n });\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {Injectable} from '@angular/core';\n\n/**\n * Utility to emulate a CSS stylesheet\n *\n * This utility class stores all of the styles for a given HTML element\n * as a readonly `stylesheet` map.\n */\n@Injectable({providedIn: 'root'})\nexport class StylesheetMap {\n\n readonly stylesheet = new Map<HTMLElement, Map<string, string|number>>();\n\n /**\n * Add an individual style to an HTML element\n */\n addStyleToElement(element: HTMLElement, style: string, value: string|number) {\n const stylesheet = this.stylesheet.get(element);\n if (stylesheet) {\n stylesheet.set(style, value);\n } else {\n this.stylesheet.set(element, new Map([[style, value]]));\n }\n }\n\n /**\n * Clear the virtual stylesheet\n */\n clearStyles() {\n this.stylesheet.clear();\n }\n\n /**\n * Retrieve a given style for an HTML element\n */\n getStyleForElement(el: HTMLElement, styleName: string): string {\n const styles = this.stylesheet.get(el);\n let value = '';\n if (styles) {\n const style = styles.get(styleName);\n if (typeof style === 'number' || typeof style === 'string') {\n value = style + '';\n }\n }\n return value;\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nexport type MediaQuerySubscriber = (changes: MediaChange) => void;\n\n/**\n * Class instances emitted [to observers] for each mql notification\n */\nexport class MediaChange {\n property: string = '';\n value: any;\n\n /**\n * @param matches whether the mediaQuery is currently activated\n * @param mediaQuery e.g. (min-width: 600px) and (max-width: 959px)\n * @param mqAlias e.g. gt-sm, md, gt-lg\n * @param suffix e.g. GtSM, Md, GtLg\n * @param priority the priority of activation for the given breakpoint\n */\n constructor(public matches = false,\n public mediaQuery = 'all',\n public mqAlias = '',\n public suffix = '',\n public priority = 0) {\n }\n\n /** Create an exact copy of the MediaChange */\n clone(): MediaChange {\n return new MediaChange(this.matches, this.mediaQuery, this.mqAlias, this.suffix);\n }\n}\n\n\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {NgModule} from '@angular/core';\n\nimport {BROWSER_PROVIDER} from './browser-provider';\n\n\n/**\n * *****************************************************************\n * Define module for common Angular Layout utilities\n * *****************************************************************\n */\n@NgModule({\n providers: [BROWSER_PROVIDER]\n})\nexport class CoreModule {\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {APP_BOOTSTRAP_LISTENER, PLATFORM_ID, InjectionToken} from '@angular/core';\nimport {DOCUMENT, isPlatformBrowser} from '@angular/common';\n\n/**\n * Find all of the server-generated stylings, if any, and remove them\n * This will be in the form of inline classes and the style block in the\n * head of the DOM\n */\nexport function removeStyles(_document: Document, platformId: Object) {\n return () => {\n if (isPlatformBrowser(platformId)) {\n const elements = Array.from(_document.querySelectorAll(`[class*=${CLASS_NAME}]`));\n\n // RegExp constructor should only be used if passing a variable to the constructor.\n // When using static regular expression it is more performant to use reg exp literal.\n // This is also needed to provide Safari 9 compatibility, please see\n // https://stackoverflow.com/questions/37919802 for more discussion.\n const classRegex = /\\bflex-layout-.+?\\b/g;\n elements.forEach(el => {\n el.classList.contains(`${CLASS_NAME}ssr`) && el.parentNode ?\n el.parentNode.removeChild(el) : el.className.replace(classRegex, '');\n });\n }\n };\n}\n\n/**\n * Provider to remove SSR styles on the browser\n */\nexport const BROWSER_PROVIDER = {\n provide: <InjectionToken<(() => void)[]>>APP_BOOTSTRAP_LISTENER,\n useFactory: removeStyles,\n deps: [DOCUMENT, PLATFORM_ID],\n multi: true\n};\n\nexport const CLASS_NAME = 'flex-layout-';\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n"],"names":["map","Injectable","tap","filter","merge","Subject","Inject","PLATFORM_ID","isPlatformBrowser","isPlatformServer","DOCUMENT","fromEvent","take","of","takeUntil","debounceTime","asapScheduler","switchMap","NgZone","Observable","BehaviorSubject","inject","InjectionToken","NgModule","APP_BOOTSTRAP_LISTENER"],"mappings":"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"}